Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание визуальной покерной игры на Delphi с использованием бесплатных ресурсов Kenney: руководство для начинающих.

Delphi , Алгоритмы , Игры

 

Введение

В этой статье мы рассмотрим, как создать простую покерную игру на Delphi, используя бесплатные графические ресурсы от Kenney.nl. Мы также разберём вопросы, связанные с обработкой колоды карт, выводом информации на экран и организацией кода.


Подготовка колоды карт

Для представления колоды карт в программе можно использовать массивы, записи (records) или перечисления (enums). Рассмотрим несколько подходов.

1. Простой вариант с массивами

program SimpleCardDeck;
{$mode objfpc}{$H+}

uses
  Classes, SysUtils;

var
  Suits: array[0..3] of string = ('♦', '♠', '♥', '♣');
  Ranks: array[0..12] of string = ('2','3','4','5','6','7','8','9','10','J','Q','K','A');
  Cards: array[0..3, 0..12] of string; // Массив для хранения карт
  i, j: Integer;

begin
  // Заполняем колоду карт
  for i := 0 to 3 do
    for j := 0 to 12 do
      Cards[i, j] := Suits[i] + Ranks[j];

  // Выводим колоду в консоль
  for i := 0 to 3 do
  begin
    for j := 0 to 12 do
      Write(Cards[i, j]:4); // Выравнивание по ширине
    Writeln;
  end;
  Readln;
end.

Почему Write вместо Writeln?
- Write выводит данные в строку без перевода каретки.
- Writeln добавляет перенос строки после вывода.

2. Более структурированный вариант с перечислениями

program EnumCardDeck;
{$mode objfpc}{$H+}

type
  TSuit = (Diamonds, Spades, Hearts, Clubs);
  TRank = (Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace);

var
  Suit: TSuit;
  Rank: TRank;
  CardDeck: array[TRank, TSuit] of string;

begin
  // Заполняем колоду
  for Rank := Low(TRank) to High(TRank) do
    for Suit := Low(TSuit) to High(TSuit) do
      WriteStr(CardDeck[Rank, Suit], Rank, ' of ', Suit);

  // Выводим колоду
  for Rank := Low(TRank) to High(TRank) do
  begin
    for Suit := Low(TSuit) to High(TSuit) do
      Write(CardDeck[Rank, Suit]:15);
    Writeln;
  end;
  Readln;
end.

Преимущества:
- Читаемость кода улучшена за счёт перечислений.
- Использование WriteStr для удобного форматирования строк.


Добавление графики с помощью ресурсов Kenney.nl

Kenney.nl предлагает бесплатные наборы спрайтов для игр, включая карты.

Шаг 1: Скачивание и подключение ресурсов

  1. Перейдите на Kenney.nl - Board Game Pack.
  2. Скачайте архив и распакуйте его.
  3. В Delphi создайте новое приложение (VCL или FMX).

Шаг 2: Загрузка изображений в TImageList

// Пример для VCL-приложения
procedure TForm1.FormCreate(Sender: TObject);
var
  CardImages: TImageList;
  Bitmap: TBitmap;
  i: Integer;
begin
  CardImages := TImageList.Create(Self);
  CardImages.Width := 71;  // Ширина карты в пикселях
  CardImages.Height := 96; // Высота карты в пикселях

  for i := 0 to 51 do
  begin
    Bitmap := TBitmap.Create;
    try
      Bitmap.LoadFromFile(Format('cards_%d.png', [i])); // Загрузка спрайтов
      CardImages.Add(Bitmap, nil);
    finally
      Bitmap.Free;
    end;
  end;
end;

Шаг 3: Отображение карт на форме

procedure TForm1.DrawCard(Index: Integer; X, Y: Integer);
var
  Image: TImage;
begin
  Image := TImage.Create(Self);
  Image.Parent := Self;
  Image.Left := X;
  Image.Top := Y;
  Image.Picture.Bitmap := CardImages.Bitmap[Index];
end;

Альтернативные решения

1. Использование TStringGrid для вывода колоды

procedure TForm1.InitCardGrid;
var
  i, j: Integer;
begin
  StringGrid1.ColCount := 13; // 13 карт в масти
  StringGrid1.RowCount := 4;  // 4 масти

  for i := 0 to 3 do
    for j := 0 to 12 do
      StringGrid1.Cells[j, i] := Cards[i, j];
end;

2. Генерация случайной руки (5 карт)

function GetRandomHand: TArray<string>;
var
  Hand: array[0..4] of string;
  i, SuitIdx, RankIdx: Integer;
begin
  Randomize;
  for i := 0 to 4 do
  begin
    SuitIdx := Random(4);
    RankIdx := Random(13);
    Hand[i] := Cards[SuitIdx, RankIdx];
  end;
  Result := Hand;
end;

Заключение

Мы рассмотрели:
1. Разные способы представления колоды карт в Delphi.
2. Подключение графики из бесплатного набора Kenney.nl.
3. Альтернативные методы работы с картами (вывод в TStringGrid, генерация руки).

Совет: Для более сложных игр (покер, блэкджек) используйте ООП-подход с классами TCard и TDeck.

Готовый проект можно расширить добавлением логики игры, анимаций и звуковых эффектов из того же набора Kenney.

Удачного программирования! 🚀

Создано по материалам из источника по ссылке.

Мы рассмотрели создание простой покерной игры на Delphi с использованием бесплатных графических ресурсов Kenney, включая обработку колоды карт, вывод информации на экран и организацию кода.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Игры ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-07 16:19:08/0.0037169456481934/0