Недавно добавленные исходники

•  TDictionary Custom Sort  3 199

•  Fast Watermark Sources  2 960

•  3D Designer  4 726

•  Sik Screen Capture  3 231

•  Patch Maker  3 445

•  Айболит (remote control)  3 511

•  ListBox Drag & Drop  2 883

•  Доска для игры Реверси  80 264

•  Графические эффекты  3 822

•  Рисование по маске  3 152

•  Перетаскивание изображений  2 519

•  Canvas Drawing  2 646

•  Рисование Луны  2 474

•  Поворот изображения  2 067

•  Рисование стержней  2 101

•  Paint on Shape  1 507

•  Генератор кроссвордов  2 159

•  Головоломка Paletto  1 713

•  Теорема Монжа об окружностях  2 143

•  Пазл Numbrix  1 638

 

 

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Ссылки и Баннеры ...

 

Delphi Sources

Delphi Sources

 




 

ИСХОДНИК ПРОГРАММЫ

 

. : Доска для игры Реверси : .

 

Delphi - Пример дизайна игровых досок для игры Реверси. Созданы три доски размером 8x8 и логика для перемещения элементов

Исходник программы, показывающей пример дизайна игровых досок для игры Реверси. Созданы три доски размером 8x8 и логика для перемещения элементов в ответ на клики пользователя.

Предпосылки

Один студент недавно обратился с просьбой о помощи в разработке доски для домашнего задания по игре в Реверси. Она аккуратно вручную разместила на форме 64 TPanel и создала 64 обработчика события OnClick, но не совсем знала, что в них делать. Я посоветовал ей динамически создать массив TPanel и использовать для доступа индексирование. Это заставило меня задуматься о компромиссах с использованием 64 элементов управления TPanel и моего обычного подхода - одного TStringGrid. Единственный способ узнать что лучше - попробовать оба варианта.

Правила Реверси

Правила игры просты: каждый игрок начинает с двух плиток своего цвета, расположенных по диагонали на центральных квадратах (доски на изображениях выше). Для каждого хода игрок X должен щелкнуть по пустому квадрату, который завершает линию из одной или нескольких последовательных фигур соперника с фишками игрока X. Линия может быть продолжена в любом из 8 направлений от квадрата, на который кликнули мышью (влево, вправо, вверх, вниз и по 4 диагонали). При щелчке все фигуры оппонента в каждой такой линии квадраты «переворачиваются», чтобы стать фигурами игрока X. Игра продолжается поочередно, пока все квадраты не будут заполнены. Побеждает игрок с наибольшим количеством фигур. Если возникает ситуация, когда у игрока нет правильного хода, он передает этот ход, и противник ходит снова.

Обработка кликов

TPanel может реагировать на клики через обработку события OnClick - это логичное событие для обработки кликов пользователя по элементам доски. Чтобы создать событие, проще всего временно разместить TPanel в форме, создать событие OnClick, удалить панель и использовать пустое событие в качестве модели для кода обработки кликов.

Как отслеживать, какие фигуры находятся на доске? В простейшем случае мы можем использовать свойство Tag, чтобы указать статус ячейки. Тег - это «запасное» целочисленное поле, определенное для каждого элемента управления Delphi. Мы будем использовать значения тега 0 для пустого, 1 для красного и 2 для синего. Локальная функция ValidMove возвращает true, если кликнутая пустая ячейка примыкает хотя бы к одной строке, между ней и другим фрагментом цвета. Значения тегов ячеек указывают на изменение всех смежных цепочек фигур противника на мои фигуры плюс добавление части моего цвета в ячейку, на которую щелкнули мышью. Этот принцип применяется во всех 8 направлениях.

Для второй доски мы будем использовать TShape, чтобы сделать круглые ячейки. TShape являются потомками TGraphicControl, типа визуального элемента управления, который имеет меньше свойств, чем стандартный TWinControl в Windows. TPanel происходят от TWinControl. В отличие от TPanel, TShape не имеет обработки события OnClick. Однако использование события OnMouseUp является лишь незначительным неудобством. Во второй попытке обработки клмков я объединил функцию ValidMove с процедурой MakeMoves. Функция MakeMoves теперь возвращает общее число для добавленных фигур и имеет параметр «Moveit», который определяет, действительно ли был сделан ход.

Наконец, третья доска - это TStringGrid. Теперь у нас есть только один элемент управления (и, следовательно, только одно значение тега, но мы можем использовать значения 64 ячеек, чтобы указать, кто занимает каждую ячейку). Выход из события OnSelect вызывается для каждой ячейки, по которой кликнули мышью, с передачей столбца и строки в качестве параметров. Выход OnDrawCell проверяет значение, чтобы определить, какую фигуру (цветной кружок) рисовать каждый раз, когда доска требует перерисовки.

В итоге, сетки StringGrid упростили бы отображение ячейки и фрагмента в ячейке как отдельных объектов, например, если бы нам нужен был черно-белый узор шахматной доски для доски. При этом перетаскивание или анимация движения фигур при желании возможны для любой из досок.

Просмотры: 80 264
Дата: 14.07.2021, Автор: Gary Darby
Скачивания: 18
Написать сообщение:

 

Скачать (8 Кб)     Регистрация >>


 

Похожие исходники


Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

Кувшины для воды

 

Имитация игры Кено в казино

ReVersus (Реверси)

Reversi (Реверси)

 

© 2004-2024 "DS"

Соглашение пользователя / Реклама / Карта сайта             Created by BrokenByte Software