ТЕТРИС НА ДЕЛФИ
Тетрис - одна из самых популярных игр всех времен. Этот пазл имеет простой геймплей, но это не мешает ему быть захватывающей и увлекательной. И если вы ищете способ создать свой собственный тетрис на Delphi, то вы находитесь в нужном месте.
Начнем с создания окна. В Delphi для создания графического интерфейса пользователя используется библиотека VCL. Создадим новый проект и добавим компоненты TForm, TTimer, TShape и TLabel.
procedure TForm1.FormCreate(Sender: TObject);
begin
// установим размеры окна Self.Width := 340; Self.Height := 480; // скроем начальный лейбл Label1.Visible := False; // начнем игру StartGame;end;
В TTimer мы будем использовать событие OnTimer для обновления игрового экрана. TShape позволяет нам отображать фигуры на игровом поле. Используем TLabel для отображения текущего счета игрока.
Для создания игрового поля, создадим двумерный массив в котором будем хранить текущее состояние игры и передадим его в TShape:
var // игровое поле GameField: array[1..10, 1..20] of TShape; // размер игрового поля WidthField: Integer = 10; HeightField: Integer = 20; procedure TForm1.CreateGameField; var x, y: integer; begin for y := 1 to HeightField do for x := 1 to WidthField do begin GameField[x, y] := TShape.Create(Self); GameField[x, y].Parent := Self; GameField[x, y].Shape := stRectangle; GameField[x, y].Width := 20; GameField[x, y].Height := 20; GameField[x, y].Left := 20 + (x - 1) * 20; GameField[x, y].Top := 80 + (y - 1) * 20; GameField[x, y].Brush.Color := clWhite; end; end;
Теперь создадим основную функцию игры:
procedure TForm1.StartGame;begin Score := 0; Label2.Caption := 'Score: ' + IntToStr(Score); // очистим игровое поле ClearGameField; // инициализируем новую фигуру NextFigure; // запускаем таймер, чтобы обновлять экран каждую 300 мс Timer1.Interval := 300; Timer1.Enabled := True; end;
В этой функции мы инициализируем счет, очищаем игровое поле, создаем новую фигуру и запускаем таймер, чтобы обновлять экран игры. Теперь нам необходимо обработать событие таймера и создать функцию для падения фигур:
procedure TForm1.Timer1Timer(Sender: TObject);begin ShapeY := ShapeY + 1; if CanMove(ShapeX, ShapeY, CurrentFigure) then begin DrawShape(ShapeX, ShapeY, CurrentFigure); end else begin ShapeY := ShapeY - 1; FixShape(ShapeX, ShapeY, CurrentFigure); NextFigure; if not CanMove(ShapeX, ShapeY, CurrentFigure) then GameOver; end;end;function TForm1.CanMove(X, Y: Integer; Figure: TFigure): Boolean;var i, j: Integer;begin Result := True; for i := 0 to 3 do for j := 0 to 3 do begin if Figure[i, j] and (Y + j > HeightField) then Result := False else if Figure[i, j] and (X + i < 1) then Result := False else if Figure[i, j] and (X + i > WidthField) then Result := False else if Figure[i, j] and (Y + j > 0) and Assigned(GameField[X + i, Y + j]) then Result := False; end;end;procedure TForm1.DrawShape(X, Y: Integer; Figure: TFigure);var i, j: Integer;begin for i := 0 to 3 do for j := 0 to 3 do if Figure[i, j] then GameField[X + i, Y + j].Brush.Color := clLime;end;
В этом коде мы обрабатываем событие таймера для падения фигуры на одну клетку. Если фигура выбивается за пределы игрового поля или касается уже существующих фигур, мы фиксируем ее положение и проверяем на наличие заполненных линий, чтобы их удалить и обновить счет. Если игрок не может больше добавить фигуру на поле, игра заканчивается.
Теперь у нас есть основа для создания игры «Тетрис» на Delphi. Будет интересно продолжать и добавлять новые функции, такие как добавление уровней сложности, сохранение лучших результатов, использование разных фигур и т.д.
Программирование игры \
Покодим? Смотрю Ваш код. Тетрис
#55. отрывок платного урока. Соколов В. Создание игры Шестиугольный Тетрис на Delphi
Создаем свою игру (Delphi+Direct3D) - Создание Персонажа и Его Движение SiDEngine #2
Нейросеть ChatGPT написал тетрис на Delphi
Kuidas umbkeelsest Lasnamäe poisist sai Gameboy Tetris