Дедов Иван Николаевич
Игра начинается при запуске программы.
У игрока есть поле 9 х 9 клеток, на которое он должен расставить как можно больше фигур. Фигуры появляются в небольшом окошке размера 3 х 3 в правой части экрана.
Чтобы перетащить фигуру, нужно зажать и удейживать левую кнопку мыши. Когда Вы перетащили фигуру на желаемое место на поле слева, отпустите мышь, и фигура останется в выбранной клетке.
Когда место Вас окончательно устраивает и Вы хотите начать следующий ход, нажмите на кнопку Next Turn.
Когда Вы больше не можете сделать ходов (для сгенерированной фигуры нет места на поле) или Вы просто захотите выйти из игры, нажмите на кнопку End Game. Вы попадете на экран со статистикой, где увидите:
- время, потраченное на партию;
- количество ходов, которое было сделано;
- процент заполнения поля 9 х 9.
На экране статистики Вы можете либо начать новую игру, либо выйти из нее.
-
Фигуры, уже поставленные на поле в прошлых ходах, окрашиваются в более темный цвет.
-
При наложении новой фигуры на уже поставленные, пересекающиеся участки выделяются цветом.
-
Настройку цветовой темы можно изменить, передав числовой аргумент в консоль при запуске программы (первым по счёту):
0- светлая тема (также ставится по умолчанию, если параметр не передан);1- тема "Космос";2- тёмно-зелёная тема.
-
Окончание хода осуществляется нажатием на кнопку
Next Turn.
-
Новый ход можно сделать, нажав на кнопку
Next Turn, а не при отпускании фигуры. Почему? Если игроку захотелось снова перетащить фигуру (например, в более правильное место, или игрок случайно отпустил кнопку, пока тащил фигуру), то фигуру можно просто взять и снова перетащить, удерживая левую кнопку мыши. Так у игрока больше контроля над своими действиями. -
В приложении разделен код, отвечающий за отображение и за логическую обработку действий. Вся логика, необходимая для расположения элементов на поле и обработке наложений и пересечений, находится в классах
GridиBlock. Остальные классы отвечают за отрисовку объектов на экране, а также действия типа снэппинга в поле 9 х 9. (Да, код, определяющий в какую клетку стоит поставить фигуру - это не логика, а отрисовка!) -
Код, отвечающий за логику программы, протестирован. В тестах проверяется расположение фигур на поле, невозможность расположения фигур, если они пересекаются и т.п.
-
Архитектура программы продумана. В программу можно добавить настройку цветовой темы (интерфейс
Theme). Графические элементы унаследованы от элементовSwing. Генерация фигур обобщена в интерфейсGenerator. Код отрисовки и логики разделен. Пожалуйста, обратите на эти и другие вещи внимание при проверке работы. 😄