Найти в Дзене
ITэ и ТэДэ

ИСУБД CronosPRO и развлечения! Реализация 2048.

Есть такие компы, что ни игрушек нет, ни установить ничего нельзя. А как же время чая с плюшками? Печенюха, чай (кофе) и щелкать мышью по игровому полю 😆
Ну на нет, программисты есть! Реализую игру 2048 средствами Кроноса! Что получилось можно посмотреть: Беру управляющую форму и накидываю на нее набор элементов: Игровое поле формируется в функции Форма_Open() в виде матрицы 5х5 из двух вложенных панелей разного размера и надписи на внутренней панели. Названия элементов дополняются значениями X и Y для последующей идентификации. В игре использую двумерную таблицу GameTbl в которой происходит вся механика с арифметикой игры. Функцией Redraw(), после обработки хода, результат отображается на игровом поле установкой нужного цвета панели и надписи, нужного цвета, на ней. Там же происходит подсчет и вывод количества очков. Зависимость цветов от значения прописана в таблице Param где ключом является возможное значение фишки. Таблица FreeTbl используется для формирования

Есть такие компы, что ни игрушек нет, ни установить ничего нельзя. А как же время чая с плюшками? Печенюха, чай (кофе) и щелкать мышью по игровому полю 😆
Ну на нет, программисты есть! Реализую игру 2048 средствами Кроноса! Что получилось можно посмотреть:

Беру управляющую форму и накидываю на нее набор элементов:

  • Кнопка начала новой игры, в будущем добавлю выбор размерности поля;
  • Две надписи, подпись "Счет" и собственно сам счет игры;
  • Панель, на которой формируется игровое поле;
  • И четыре кнопки, направления движения фишек при ходе, позднее можно реализовать и управление клавишами стрелок.
рис.1 Макет формы в редакторе.
рис.1 Макет формы в редакторе.

Игровое поле формируется в функции Форма_Open() в виде матрицы 5х5 из двух вложенных панелей разного размера и надписи на внутренней панели. Названия элементов дополняются значениями X и Y для последующей идентификации.

В игре использую двумерную таблицу GameTbl в которой происходит вся механика с арифметикой игры. Функцией Redraw(), после обработки хода, результат отображается на игровом поле установкой нужного цвета панели и надписи, нужного цвета, на ней. Там же происходит подсчет и вывод количества очков. Зависимость цветов от значения прописана в таблице Param где ключом является возможное значение фишки. Таблица FreeTbl используется для формирования массива пустых ячеек, для последующего случайного размещения новой фишки.

По нажатию кнопки новая игра (и при открытии формы) таблица GameTbl обнуляется, формируется FreeTbl во весь размер игровой таблицы и отрисовывается поле. Все это через функцию Clear(). Далее случайным образом формируются две начальные фишки, рисуется поле и игра пошла. В обработчиках хода (смещения фишек) обходится игровой массив в зависимости от направления сдвига и фишки с одинаковым значением скрадываются. Через пустые поля сдвигаются до упора или другой фишки. Если смещения или объединения фишек не было - хода нет. Если все нормально обновляем таблицу пустых ячеек, добавляем новую случайную фишку и отрисовываем поле. И так пока не прекратится движение 😆 Пока так.

В планах добавить размерность поля 3х3 и 4х4. Нормальное завершение игры. Возможность сохранения при закрытии и продолжения игры. Добавить таблицу рекордов.
Добавить игру в базу можно просто восстановив форму из копии, либо создать в редакторе! Кода не так и много 😀

Если понравилось, подписывайтесь, Вам не сложно - нам в копилку 😊

Традиционно исходник формы:

Исходник формы 2048

Копия формы 2048 с комментариями.