Таблица 8.1. Свойства формы игры "Успей щелкнуть"
Свойство | Значение | Пояснение |
---|---|---|
BorderStyle | bsNone | Окно программы будет отображаться без границы и заголовка |
FormStyle | fsStayOnTop | Окно программы должно располагаться поверх всех остальных окон, поскольку игрок не всегда будет "попадать" по нашему окну, а значит своими "промахами" будет активизировать другие окна |
Color | clWindowText | Цвет формы — черный |
Height | 72 | Высота |
Width | 208 | Ширина |
Разместите на форме компонент Label категории Standard
. Измените его свойства согласно табл. 8.2.Таблица 8.2. Свойства первого компонента Label
Свойство | Значение | Пояснение |
---|---|---|
Caption | Попадания: | Надпись метки |
Font.Color | clLime | Цвет шрифта — светло-зеленый |
Font.Name | Courier New | Название шрифта |
Font.Size | 12 | Размер шрифта |
Font.Style | [fsBold] | Начертание шрифта — полужирное |
Left | 16 | Отступ слева |
Top | 16 | Отступ сверху |
Разместите на форме еще один компонент Label и измените его свойства согласно табл. 8.3.
Таблица 8.3. Свойства второго компонента Label
Свойство | Значение | Пояснение |
---|---|---|
Name | popad | Новое имя компонента |
Caption | 0 | Надпись метки |
Font.Color | clRed | Цвет шрифта — красный |
Font.Name | Courier New | Название шрифта |
Font.Size | 16 | Размер шрифта |
Font.Style | [fsBold] | Начертание шрифта — полужирное |
Left | 120 | Отступ слева |
Top | 16 | Отступ сверху |
Разместите на форме третий компонент Label, который будет отображать предельное число "попаданий", и измените его свойства согласно табл. 8.4.
Таблица 8.4. Свойства третьего компонента Label
Свойство | Значение | Пояснение |
---|---|---|
Caption | /10 | Надпись метки |
Font.Color | clRed | Цвет шрифта — красный |
Font.Name | Courier New | Название шрифта |
Font.Size | 16 | Размер шрифта |
Font.Style | [fsBold] | Начертание шрифта — полужирное |
Left | 144 | Отступ слева |
Top | 16 | Отступ сверху |
Напоследок разместите на форме компонент Timer категории System
. Результат оформления формы должен соответствовать рис. 8.1.Рис. 8.1. Форма для игры "Успей щелкнуть"
Разработка программного кода
Изменение формы окна на эллиптическую реализуется в обработчике события OnCreate формы. Для этого необходимо объявить глобальную переменную forma типа HRGN, которая будет содержать размеры окна:
var
Form1: TForm1;
forma: HRGN;
В обработчик события OnCreate добавьте следующий код:
procedure TForm1.FormCreate(Sender: TObject)
begin
Randomize;
forma:= CreateEllipticRgn(0, 0, Form1.Width, Form1.Height)
//применяем новый вид окна
SetWindowRgn(Handle, forma, True);
end;
Здесь мы задаем окно в виде эллипса и применяем новый вид окна.
Каждую секунду форма должна случайным образом менять свои координаты в пределах экрана. Это будет реализовано в обработчике события Timer1.OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Top:= Random(Screen.Height) + 1
Form1.Left:= Random(Screen.Width) + 1;
end;
Здесь мы определяем высоту и ширину экрана, выбираем случайные координаты, не выходящее за пределы экрана, и перемещаем в них окно программы.
Теперь выделите все компоненты и саму форму и создайте для них общий обработчик события OnMouseDown:
procedure TForm1.popadMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin