Каранаев Линар Минтимерович Стерлибашево 2017 содержание глава реферативное изложение



бет36/64
Дата02.01.2022
өлшемі1.78 Mb.
#452913
түріИзложение
1   ...   32   33   34   35   36   37   38   39   ...   64
обб русский

Свойство

Значение

Пояснение

Caption

Попадания:

Надпись метки

Font.Color

clLime

Цвет шрифта – светло-зеленый

Font.Name

Courier New

Название шрифта

Font.Size

12

Размер шрифта

Font.Style

{fsBold}

Начертание шрифта – полужирное

Left

16

Отступ слева

Top

16

Отступ сверху

Разместите на форме еще один компонент Label и измените его свойства согласно таблице:

Свойство

Значение

Пояснение

Name

popad

Новое имя компонента

Caption

0

Надпись метки

Font.Color

clRed

Цвет шрифта – красный

Font.Name

Courier New

Название шрифта

Font.Size

16

Размер шрифта

Font.Style

{fsBold}

Начертание шрифта – полужирное

Left

120

Отступ слева

Top

16

Отступ сверху

Разместите на форме третий компонент Label, который будет отображать предельное число «попаданий», и измените его свойства согласно таблице:

Свойство

Значение

Пояснение

Caption

\10

Надпись метки

Font.Color

clRed

Цвет шрифта – красный

Font.Name

Courier New

Название шрифта

Font.Size

16

Размер шрифта

Font.Style

{fsBold}

Начертание шрифта – полужирное

Left

144

Отступ слева

Top

16

Отступ сверху

Напоследок разместите на форме компонент Timer категории System.Результат оформления формы должен соответствовать рисунку:



Разработка программного кода. Изменение формы окна на эллиптическую реализуется в обработчике события OnCreate формы. Для этого необходимо объявить глобальную переменную forma типа HRGN, которая будет содержать размеры окна:

var


Forml: TForml;

forma: HRGN;

В обработчик события OnCreate добавьте следующий код:

procedure TForml.FormCreate(Sender: TObject);

begin

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



forma := CreateEllipticRgn(0, 0, Form1.Width,

Form1.Height); // вид окна

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

SetWindowRgn(Handle, forma, True);

end;

Здесь мы задаем окно в виде эллипса и применяем новый вид окна.



Каждую секунду форма должна случайным образом менять свои координаты в пределах экрана. Это будет реализовано в обработчикесобытия Timer1.OnTimer:

procedureTForml.TimerlTimer(Sender: TObject);

begin

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



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

end;


Здесь мы определяем высоту и ширину экрана, выбираем случайные координаты, не выходящее за пределы экрана, и перемещаем в них окно программы.

Теперь выделите все компоненты и саму форму и создайте для них общий обработчик события OnMouseDown:

procedure TForml.popadMouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if StrToInt(popad.Caption) < 10 then



begin //если попаданий меньше 10

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

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

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

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

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

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

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

Timerl.Interval := Timerl.Interval - 100;

end;


if popad.Caption = ‘40’ then

begin //еслиигрокпопал 10 раз

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

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

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

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

if Application.MessageBox('Игра', 'Игратьещераз?',

mb_yesno + mb taskmodal +

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

begin


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

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

forma := CreateEllipticRgn(0, 0,

Forml.Width, Forml.Height);

SetWindowRgn(Handle, forma, True);

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

Timerl.Interval := 1000;

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

end

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



end;

end;


Прикаждом «попадании» выполняется проверка: было ли это «попадание» последним. Если да, то просто пополняем счетчик попаданийи увеличиваем скорость перемещения формы на 100 мс. Если игрок сделал последнее «попадание», то останавливаем игру, выводим окно вцентр экрана и показываем сообщение о том, что игра успешно окончена. После этого отображаем окно с вопросом: следует ли начинать игрузаново. Если пользователь отказывается играть, то просто выходим изпрограммы. Если пользователь хочет сыграть сначала, то обнуляем всерезультаты и начинаем игру заново.[7: 58-62]



Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   64




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет