Важно (9.07.22)

Если картинки в постах не отображаются, зайдите в блог через прокси. РКН заблокировал поддомены blogger.com на которые загружались картинки.

понедельник, 25 августа 2014 г.

Игра "Одинаковые картинки"

Написал ещё одну маленькую игрушку, позволяющую развивать память и внимание. Цель игры: найти все пары одинаковых картинок. Далее в заметке, я объясню, как и что работает, какие баги нашёл и т.д. Игра работает под Android и Windows.

Написано на Delphi XE6 и проверено на Android 4.1.2.
Upd (3.10.14). Проверено на Delphi XE7 и Android 4.4.2
Upd (18.04.15) Проверено в Delphi XE8 и Android 4.4.2













Что есть в приложении:
  1. Меню
  2. Игровое поле
  3. Фрейм «Настройки»
  4. Фрейм «Уровень пройден»
Все, кроме Меню, создаётся динамически.

Меню состоит из 2 кнопок «Играть» и «Настройки».

Нажимаем кнопку «Играть». Игровое поле заполняется динамически. Сначала создаётся необходимое количество «TRectangle», далее к каждому «TRectangle» создаём анимацию «TBitmapAnimation», которую наполняем картинками. Всё создаётся в соответствии с настройками.
Если игрок нашёл все одинаковые картинки, то динамически создаём фрейм «Уровень пройден», который уничтожается, если начать новую игру или выйти в меню.

Нажимаем кнопку «Настройки». Создаётся фрейм «Настройки», в котором мы можем изменять Сложность игры, тип картинок, количество ячеек, цвет игрового поля и т.д. Всё хранится в ini – файле. При выходе в меню, фрейм уничтожается.

Плюсы приложения:
  • Картинки хранятся в отдельном файле ресурсов.
  • Есть возможность настройки игрового процесса.
  • Приложение умеет автоматически подстраивать игровое поле под любой размер дисплея.(учитывается размер картинок, минимум 70, макс. 128)
  • Работает под Android и Windows.
  • Развивает внимание и память игрока.

Минусы приложения:
  • Потребляет много памяти (чем больше элементов на игровом поле, тем больше памяти)
  • Не тестировал на планшетах, но всё должно работать
  • Использует опцию LargeHeap

Код приложения: Его получилось много (1000 строк), поэтому я решил не выкладывать его в виде текста, а оформить ссылкой. Исходный код: Скачать с Google Drive

Скриншоты приложения:









Видео:


Исходный код: Скачать с Google Drive
APK-файл, для запуска на устройстве: Скачать с Google Drive
Exe-файл, для запуска на Windows: Скачать с Google Drive


Найденные баги.

Фреймы(TFrame):
Windows 7:
  • (Сообщил Ярославу) после уничтожения фрейма, невозможно закрыть форму.

TNumberBox, TSpinBox:
Windows 7: 
Если выставить минимальное значение "0" (любое значение от 0..9) и максимальное "9"(любое значение от 0..9), то
  1. (Сообщил Ярославу) Цифра из поля не удаляется и не обнуляется
  2. (Сообщил Ярославу) При попытке ввести с клавиатуры другую цифру (0..9), значение в поле автоматически меняется на максимально допустимое, т.е. "9"
  3. TSpinBox убивает приложение QC 127099
  4. Уничтожение компонента, оставляя при этом открытой клавиатуру приводит к AV или краху приложения QC 127108

TLang:
  1. QC 127004
  2. QC 127005

TNumberBox и TSpinBox, из-за багов, заменил на TEdit.