2019-01-01 14:15:29 +03:00
|
|
|
|
uses WPFObjects;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
const CountSquares = 20;
|
|
|
|
|
|
|
|
|
|
|
|
var
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Текущая цифра
|
2015-05-14 22:35:07 +03:00
|
|
|
|
CurrentDigit: integer;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Количество ошибок
|
2015-05-14 22:35:07 +03:00
|
|
|
|
Mistakes: integer;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Строка информации
|
2019-01-01 14:15:29 +03:00
|
|
|
|
StatusRect: RectangleWPF;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Вывод информационной строки
|
2015-05-14 22:35:07 +03:00
|
|
|
|
procedure DrawStatusText;
|
|
|
|
|
|
begin
|
|
|
|
|
|
if CurrentDigit<=CountSquares then
|
2019-01-01 14:15:29 +03:00
|
|
|
|
StatusRect.Text := $'Удалено квадратов: {CurrentDigit-1} Ошибок: {Mistakes}'
|
|
|
|
|
|
else StatusRect.Text := $'Игра окончена. Время: {Milliseconds div 1000} с. Ошибок: {Mistakes}';
|
2015-05-14 22:35:07 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
|
/// Обработчик события мыши
|
2019-01-01 14:15:29 +03:00
|
|
|
|
procedure MyMouseDown(x,y: real; mb: integer);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
begin
|
|
|
|
|
|
var ob := ObjectUnderPoint(x,y);
|
2019-02-22 09:27:54 +03:00
|
|
|
|
if (ob<>nil) and (ob is RectangleWPF) and (ob<>StatusRect) then
|
2015-05-14 22:35:07 +03:00
|
|
|
|
if ob.Number=CurrentDigit then
|
|
|
|
|
|
begin
|
|
|
|
|
|
ob.Destroy;
|
|
|
|
|
|
Inc(CurrentDigit);
|
|
|
|
|
|
DrawStatusText;
|
|
|
|
|
|
end
|
|
|
|
|
|
else
|
|
|
|
|
|
begin
|
2019-01-01 14:15:29 +03:00
|
|
|
|
ob.Color := Colors.Red;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
Inc(Mistakes);
|
|
|
|
|
|
DrawStatusText;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
2015-12-28 14:25:15 +03:00
|
|
|
|
Window.Title := 'Игра: удали все квадраты по порядку';
|
2015-05-14 22:35:07 +03:00
|
|
|
|
for var i:=1 to CountSquares do
|
|
|
|
|
|
begin
|
2019-01-01 14:15:29 +03:00
|
|
|
|
var x := Random(Window.Width-50);
|
|
|
|
|
|
var y := Random(Window.Height-100);
|
|
|
|
|
|
var ob := RectangleWPF.Create(x,y,50,50,Colors.LightGreen).WithBorder;
|
|
|
|
|
|
ob.FontSize := 25;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
ob.Number := i;
|
|
|
|
|
|
end;
|
2019-01-01 14:15:29 +03:00
|
|
|
|
StatusRect := RectangleWPF.Create(0,Window.Height-40,Window.Width,40,Colors.LightBlue);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
CurrentDigit := 1;
|
|
|
|
|
|
Mistakes := 0;
|
|
|
|
|
|
DrawStatusText;
|
2015-12-28 14:25:15 +03:00
|
|
|
|
// Установка обработчиков
|
2015-05-14 22:35:07 +03:00
|
|
|
|
OnMouseDown := MyMouseDown;
|
|
|
|
|
|
end.
|