Книга: Delphi. Учимся на примерах

Полный исходный код модуля

Полный исходный код модуля

Полный исходный код программного модуля игры "Успей щелкнуть" представлен в листинге 8.1.

Листинг 8.1. Программный модуль игры "Успей щелкнуть"

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm)
 Label2: TLabel;
 popad: TLabel;
 Label3: TLabel;
 Timer1: TTimer;
 procedure FormCreate(Sender: TObject);
 procedure Timer1Timer(Sender: TObject);
 procedure popadMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
 { Private declarations }
public
 { Public declarations }
end;
var
 Form1: TForm1;
 forma: HRGN;
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.Interval:= 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.Interval:= 1000;
   Timer1.Enabled:= True; //начинаем игру
  end
  else Halt; //выход из игры
 end;
end;
end.

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

Оглавление книги


Генерация: 0.059. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз