Проек повторяет игру Shoot-the-bullet (https://www.microsoft.com/en-us/p/brick-game-simulator/9nblggh4qfmw). Реализован в 5 файлах: "Shoot-the-bullet.ino", "Field.cpp", "Field.h", "playerShip.cpp", "playerShip.h". В "Shoot-the-bullet.ino" подключены небходимые библиотеки(Adafruit_PCD8544, Adafruit_GFX), файлы(Field.h, playerShip.h), перефирия(LCD5110, JoystickShield), созданы объекты классов и методы считывания(input) и вывода(output) информации. В "setup()" открыты нужные выходы и входы. В "loop()" реализована основная логика программы. В "input()" в зависимости от нажатой кнопки на JoystickShield и состояния игры производим соответсвующие дествия. В "output()" в зависимости от состояния игры выводим соотвествующие элименты на LCD5110. В "Field.cpp" и "Field.h" реализованы методы и функции для описания поля, падающих рядов и летящих снарядов, а также их взаиможействия между собой. А также реализованы переходы между состояними игры. В "playerShip.cpp" и "playerShip.h" реализованы методы и функции для описания модели игрока и управления ею.
Геймплэй представляет собой повторение оригинальной игры. Игроку нужно заполнять падающие на него неполные ряды, посредством запуска снарядов, которые при столкновенни становятся частью соотвествующего ряда. Если заполнить ряд, то он уничтожится, а игрок получит очко. Если ряд дойдёт до уровня игрока, то игра закончится.
При подключении питания к Arduino Uno с соответствующей периферией, на экране отобразится меню игры в котором: Кнопки A и C осуществляют перемещение курсора между пунктами меню вверх и вниз соответственно. Кнопка B осуществляет выбор соответствующего пункта меню. Пункты меню: New Game - переход к новой игре. Continue - переход к игре, если есть приостановленная игра. Difficulty - выбор сложности игры(от 1 до 3). Чем больше значение, тем быстрее падают ряды. Size - выбор размера игрового поля(от 1 до 3). Значение соответствуют размеру стороны одного блока в пикселях. Highcores - переход к таблице лучших результатов.
Во время игры отображается игровое поле и количество очков. Кнопки отвечают: A и С - движение модели игрока вправо и влево на один пиксель соответственно. D - выстрел блока. B - переход в меню с остановкой текущей игры.
В случае поражения отображается сообщение о проигрыше, количество очков, накопленных игроком за последнею игру, и возможность выбора имя при помощи кнопок: B и D - передвижение курсора вправо и влево соответственно, если курсор стоит на третей букве и нажать B, то случится переход в меню. A и C - изменение соответствующей буквы в имени вверх и вниз по алфавиту соответственно.
В таблице с результатами отображаются лучшие 5 результатов. Кнопки отвечают: A, B, C - переход в меню. D - сброс таблицы результатов на изначальные. При первом запуске следует провести эту процедуру для корректного отображения результатов.