Skip to content

Ivan-Dedov/Jigsaw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jigsaw

👤 Автор

Дедов Иван Николаевич

📗 Как играть

Игра начинается при запуске программы.

У игрока есть поле 9 х 9 клеток, на которое он должен расставить как можно больше фигур. Фигуры появляются в небольшом окошке размера 3 х 3 в правой части экрана.

Чтобы перетащить фигуру, нужно зажать и удейживать левую кнопку мыши. Когда Вы перетащили фигуру на желаемое место на поле слева, отпустите мышь, и фигура останется в выбранной клетке.

Когда место Вас окончательно устраивает и Вы хотите начать следующий ход, нажмите на кнопку Next Turn.

Когда Вы больше не можете сделать ходов (для сгенерированной фигуры нет места на поле) или Вы просто захотите выйти из игры, нажмите на кнопку End Game. Вы попадете на экран со статистикой, где увидите:

  • время, потраченное на партию;
  • количество ходов, которое было сделано;
  • процент заполнения поля 9 х 9.

На экране статистики Вы можете либо начать новую игру, либо выйти из нее.

🎨 Особенности

  • Фигуры, уже поставленные на поле в прошлых ходах, окрашиваются в более темный цвет.

  • При наложении новой фигуры на уже поставленные, пересекающиеся участки выделяются цветом.

  • Настройку цветовой темы можно изменить, передав числовой аргумент в консоль при запуске программы (первым по счёту):

    • 0 - светлая тема (также ставится по умолчанию, если параметр не передан);
    • 1 - тема "Космос";
    • 2 - тёмно-зелёная тема.
  • Окончание хода осуществляется нажатием на кнопку Next Turn.

🌟 Бонусы и примечания

  • Новый ход можно сделать, нажав на кнопку Next Turn, а не при отпускании фигуры. Почему? Если игроку захотелось снова перетащить фигуру (например, в более правильное место, или игрок случайно отпустил кнопку, пока тащил фигуру), то фигуру можно просто взять и снова перетащить, удерживая левую кнопку мыши. Так у игрока больше контроля над своими действиями.

  • В приложении разделен код, отвечающий за отображение и за логическую обработку действий. Вся логика, необходимая для расположения элементов на поле и обработке наложений и пересечений, находится в классах Grid и Block. Остальные классы отвечают за отрисовку объектов на экране, а также действия типа снэппинга в поле 9 х 9. (Да, код, определяющий в какую клетку стоит поставить фигуру - это не логика, а отрисовка!)

  • Код, отвечающий за логику программы, протестирован. В тестах проверяется расположение фигур на поле, невозможность расположения фигур, если они пересекаются и т.п.

  • Архитектура программы продумана. В программу можно добавить настройку цветовой темы (интерфейс Theme). Графические элементы унаследованы от элементов Swing. Генерация фигур обобщена в интерфейс Generator. Код отрисовки и логики разделен. Пожалуйста, обратите на эти и другие вещи внимание при проверке работы. 😄

About

A game of Jigsaw

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages