//Увеличиваем скорость перемещения окна на 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.
Глава 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 |
Ширина |
Разместите на форме под этими компонентами еще один компонент Label, назовите его pl1 (свойство Name), а свойству Caption присвойте значение Первый игрок:. Справа от метки pl1 разместите компонент Edit, свойству Name которого присвойте значение ch1, а свойству Text — значение 0. Справа от поля ch1 разместите еще один компонент Label. Присвойте ему имя znak1 и очистите свойство Caption.
Под компонентами pl1, ch1 и znak1 разместите аналогичные компоненты для второго игрока, присвоив им имена рl2, ch2 и znak2 соответственно. Свойству рl2.Caption присвойте значение Второй игрок:, свойству ch2.Text — значение 0, а свойство znak2.Caption очистите. Поскольку по умолчанию игру будет начинать первый игрок, мы должны заблокировать ввод для второго игрока. Для этого измените значение свойства Enabled для компонентов ch2 и р12 на False.
Разместите на форме справа от компонентов znak1 и znak2 еще один компонент Label и измените его свойства согласно табл. 9.2.
Таблица 9.2. Свойства нового компонента Label
Свойство |
Значение |
Пояснение |
Name |
X |
Новое имя компонента |
Caption |
X |
Надпись метки |
Font.Color |
clRed |
Цвет шрифта — красный |
Font.Name |
Courier New |
Название шрифта |
Font.Size |
36 |
Размер шрифта |
Font.Style |
[fsBold] |
Начертание шрифта — полужирное |
Height |
54 |
Высота метки |
Ниже всех компонентов разместите компонент Checkbox (флажок) категории Standard.Присвойте его свойству Name значение comp, a свойству Caption — значение Играть против компьютера (проследите также, чтобы свойство Checked было равно False).
Ниже разместите две кнопки (компонент Button категории Standard), присвоив их свойству Caption значения Принять вариант и Новая игра. Полученная форма должна соответствовать рис. 9.1.
Читать дальше