Гра 2048 на pascal abc

TSquareColor - це запис, що зберігає в собі фоновий колір і колір тексту. Функція createColor приймає на вхід першим параметром колір фону, а другим - колір тексту і повертає вже заповнену запис TSquareColor, яка потім вже використовується для завдання кольору певної клітинки)

Настав час показати, як ця справа виглядає! А ось так:

Гра 2048 на pascal abc

Гра 2048. Вікно програми в самому розпалі гри!

Нічого особливого. Все як завжди )

А в заголовку відображається ще й кількість очок. Управління те ж саме, як і в класичній реалізації гри. Поведінка теж)
При появі і складання клітинок є анімація невелика, яка часом працює кривовато ... Тут вже був задіяний таймер, а також зміна розмірів цих блоків. Іноді просто чомусь розмір не доходить до початкового стану, і тому деякі клітинки так і залишаються трохи більше або менше, але це відбувається рідко)

Також був написаний невеликий клас для показу «діалогових» вікон, який містить в собі простеньку реалізацію якоїсь подібності вікна підтвердження (яке містить питання і кнопки ОК і Скасування). Суть в тому, що можна динамічно створювати ці діалогові віконця, модально показувати їх, реагують вони також на натискання клавіші Esc (скасування) і Enter (ок).
Також можна показувати просто повідомлення з кнопкою Ок!
Простенько, але більшого і не потрібно. ) Навіть це вже було зайвим 🙂
Код класу цього знаходиться в файлі controlUtils.pas, який теж знаходиться в архіві 🙂
Виглядають віконця приблизно ось так:

Гра 2048 на pascal abc

Гра 2048. Питання про початок нової гри (при натисканні на Esc)

Гра 2048 на pascal abc

Гра 2048. Кінець гри. Лол!

Про модальні діалоги я, звичайно, загнув трошки)
Вся модальність працює ось так:


Обробляються натискання в головному вікні програми, а там вже йде перевірка, якщо відкрито якесь діалогове вікно, то потрібно обробляти натискання трохи інакше, а якщо ж немає ніяких вікон, то там вже керувати грою потрібно)
При натисканні мишкою на кнопку ОК або Enter на клавіатурі спрацьовує вже певний заданий подія, яке передається як callback (типу того) при виконанні функції dialogs.showConfirm. Якось так воно і працює ...)

Були деякі ідеї, типу збереження стану гри при закритті і відновлення при відкритті, але якось не було в цьому необхідності, та й інтерес через деякий час зник, тому все залишилося на такому рівні, на якому є зараз. До того ж, для курсової тій людині всіх цих віконець діалогових не потрібно, тому на якомусь етапі він просто залишив стару версію і став допрацьовувати її по-своєму)

Схожі статті