Delphi. Учимся на примерах | страница 31
>procedure TForm1.compClick(Sender: TObject);
>begin
> if comp.Checked then begin //если флажок установлен
> //блокируем ввод от второго игрока
> ch2.Enabled:= False;
> рl2.Enabled:= False;
> //включаем ввод от первого игрока
> ch1.Enabled:= True;
> pl1.Enabled:= True;
> end
> else begin
> //если игра идет с человеком, то
> //включаем ввод для второго игрока
> ch2.Enabled:= True;
> рl2.Enabled:= True;
> end;
>end;
Осталось только обработать нажатие кнопки Новая игра:
>procedure TForm1.Button1Click(Sender: TObject);
>begin
> if ((StrToInt(finish.Text) > StrToInt(start.Text)) and (StrToInt(start.Text) > 0) and (StrToInt(finish.Text) < 60000))
> then {проверяем, не выходит ли заданное пользователем число за допустимые пределы}
> {загадаем случайное число в заданном диапазоне}
> num:= Random(StrToInt(finish.Text) – StrToInt(start.Text)) + StrToInt(start.Text)
> else ShowMessage('Неверный диапазон!');
> //обнуляем все, и придаем программе начальный вид
> znak1.Caption:= '';
> znak2.Caption:= '';
> ch1.Enabled:= True;
> ch2.Enabled:= False;
> pl1.Enabled:= True;
> pl2.Enabled:= False;
> x.Caption:= 'X';
> ch1.Text:= '0';
> ch2.Text:= '0';
> //очистим массивы наибольших и наименьших чисел
> for i:= 1 to kolvo+1 do begin
> minimum[i]:= 0;
> maximum[i]:= 0;
> big:= StrToInt(finish.Text); //наибольшее число
> small:= StrToInt(start.Text); //наименьшее число
> end;
> kolvo:= 0; //количество использованных попыток
>end;
После того как пользователь указал диапазон, в котором должно находиться случайное число, мы проверяем, не является ли конечное значение меньше начального. Проверяем также, не является ли начальное значение меньше нуля и не превышает ли конечное значение 60000. Если все нормально, то загадываем число в заданном диапазоне. После этого обнуляем все значения и приводим программу к начальному виду.
Компилируем и запускаем программу на выполнение. Игра в действии показана на рис. 9.2.
Рис. 9.2. Игра "Угадывание чисел" в действии
Полный исходный код модуля
Полный исходный код программного модуля игры "Угадывание чисел" представлен в листинге 9. 1.
>unit Unit1;
>interface
>uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
>type TForm1 = class(TForm)
> Button1: TButton;
> Label1: TLabel;
> Label2: TLabel;
> start : TEdit;
> finish: TEdit;
> Label3: TLabel;
> pl1: TLabel;
> ch1: TEdit;
> pl2: TLabel;
> ch2: TEdit;
> comp: TCheckBox;
> Button2: TButton;