Выбрать главу

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject)

begin

 Randomize;//включаем генератор случайных чисел

 forma:= CreateEllipticRgn(0, 0, Form1.Width, Form1.Height); //вид окна

 //применяем новый вид окна

 SetWindowRgn(Handle, forma, True);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 Form1.Top:= Random(Screen.Height) + 1; //случайная высота

 Form1.Left:= Random(Screen.Width) + 1; //случайная ширина

end;

procedure TForm1.popadMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

 if StrToInt(popad.Caption) < 10 then begin //если попаданий меньше 10

  //Перемещаем окно в случайную позицию по вертикали

  Form1.Top:= Random(Screen.Height) + 1;

  //Изменяем положение по горизонтали

  Form1.Left:= Random(Screen.Width) + 1;

  //Увеличиваем счетчик "попаданий" на единицу

  popad.Caption:= IntToStr(StrToInt(popad.Caption) + 1);

  //Увеличиваем скорость перемещения окна на 100 мс

  Timer1.Intervaclass="underline" = Timer1.Interval – 100;

 end;

 if popad.Caption = '0' then begin //если игрок попал 10 раз

  Timer1.Enabled:= False; //останавливаем игру

  Form1.Position:= poDesktopCenter; //окно – в центр экрана

  //сообщаем о победе

  ShowMessage('Вы попали по окну 10 раз!');

  if Application.MessageBox('Игра', 'Играть еще раз?', mb_yesno + mbtaskmodal + mb_iconQuestion) = idYes

  then {предлагаем сыграть еще раз}

  begin

   popad.Caption:= '0'; //сброс результатов

   //Придаем окну эллиптическую форму

   forma:= CreateEllipticRgn(0, 0, Form1.Width, Form1.Height);

   SetWindowRgn(Handle, forma, True);

   //Устанавливаем начальную скорость перемещения окна

   Timer1.Intervaclass="underline" = 1000;

   Timer1.Enabled:= True; //начинаем игру

  end

  else Halt; //выход из игры

 end;

end;

end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_08.

Глава 9

Игра "Угадывание чисел"

Постановка задачи

Разработать игру, цель которой заключается в угадывании случайного числа из заданного диапазона чисел. Дать возможность играть с соперником или против компьютера.

Разработка формы

Создайте новый проект Delphi и присвойте свойству Caption (заголовок) формы значение Игра. Угадывание чисел. Вверху формы будут расположены элементы управления для настройки диапазона угадываемых чисел. Разместим на форме три компонента Label (метки) категории Standard и два компонента Edit (поле ввода) той же категории. Изменим их свойства согласно табл. 9.1.

Таблица 9.1. Свойства компонентов для настройки диапазона угадываемых чисел

Компонент Свойство Значение Пояснение
Label1 Caption Диапазон чисел: Надпись метки
Font.Style [fsBold] Начертание шрифта — полужирное
Left 8 Отступ слева
Top 16 Отступ сверху
Label2 Caption от Надпись метки
Font.Style [fsBold] Начертание шрифта — полужирное
Left 104 Отступ слева
Top 16 Отступ сверху
Label3 Caption до Надпись метки
Font.Style [fsBold] Начертание шрифта — полужирное
Left 216 Отступ слева
Top 16 Отступ сверху
Edit1 Name start Новое имя поля, предназначенного для ввода начального числа диапазона
Text 1 Содержимое поля
Left 128 Отступ слева
Top 8 Отступ сверху
Width 57 Ширина
Edit2 Name finish Новое имя поля, предназначенного для ввода конечного числа диапазона
Text 1000 Содержимое поля
Left 256 Отступ слева
Top 8 Отступ сверху
Width 57 Ширина