Задача обязательна для тех студентов, кто претендует на оценку «Отлично».
В задаче обязательно реализовать логику игры в виде отдельного класса Game – см. Лекцию 10, а также пример SapperGame к лекции 10.
Оформление игры может быть максимально простым (допустим, не надо плавных перемещений шариков с клетки на клетку, каких-либо визуальных эффектов, звукового сопровождения и т.п.). Элементы – просто цветные кружки / кубики / обычные цифры и т.д. в зависимости от варианта. Выделение элемента (если нужно) – изменение цвета фона ячеек игрового поля. (В любом случае все это не относится к логике игры.)
Никаких уровней и т.п. (максимум для некоторых задач – загрузка «уровня» из текстового файла).
Для отрисовки игрового поля проще использовать JTable, как в примере SapperGame (для каких-то игр понадобятся несколько JTable), но можно полностью нарисовать поле на форме самостоятельно (переопределив метод «void paint(Graphics g)», при этом, возможно, понадобятся дополнительные методы).
Во многих играх, приведенных в вариантах задач в виде примера, кроме центральной идеи, есть различные, так скажем, расширения-исключения. Вот этого всего реализовывать также не надо.
Кроме непосредственно реализации игры необходимо подготовить краткое описание правил игры с иллюстрациями (эти описания будут впоследствии добавлены в этот документ).
Если что-то непонятно с игрой подойдите ко мне (Соломатин Д.И.) – я поясню (например, после лекции).
Варианты:
1. (*) Классический тетрис
2. (*) 2048 – https://2048game.com/ru/
3. Двухмерный кубик Рубика – https://www.igroman.org/logic/logic_differ/274-play-274.html
4. Еще один вариант двухмерного кубика Рубика. Только в этом варианте циклически сдвигаются строки или столбцы поля (примера готовой игры для пояснения, к сожалению, нет).
5. Цифровой кузнечик – https://igroflot.ru/flash_games_36.htm (вместо уровней хорошо бы сделать генератор случайного начального состояния игрового поля, но такого, чтобы гарантированно существовала возможность выиграть).
6. Пекинская опера – https://igroflot.ru/logic/flash_game_237/
7. Вращение шариков – https://igroflot.ru/balls/flash_game_1512/
8. Вогл – https://igroflot.ru/logic/flash_game_2254/
Сделать обычные шарики. Шарики не нужно «таскать». Вместо этого выделяем шарик, затем щелкаем по клетке, в которую он может «перепрыгнуть». В новой клетке шарик также остается выделенным.
9. (*) Линии 98 – https://lines98.org.ua/lines98.html
10. (*) Сокобан – https://www.min2win.ru/gm.php?id=108
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
11. Блиц-сложение – https://igroflot.ru/logic/flash_game_2960/
12. https://igroflot.ru/logic/flash_game_2993/
13. Собери цепь – https://igroflot.ru/arcade/flash_game_4706/
14. Квадротека – https://igroflot.ru/logic/flash_game_205/
Решение из стартового положения точно должно быть возможно. Для этого необходимо это самое стартовое положение кубиков получать в виде серии случайных вращений поля, на котором кубики первоначально были выстроены в линии.
Чтобы использовать JTable имеет смысл заменить кубики на кружки, а выделенный квадрат 3 x 3 обозначить другим цветом фона ячеек JTable.
15. Агент 007 – https://igroflot.ru/flash_games_31.htm
16. Кибербокс – https://igroflot.ru/flash_games_23.htm
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
17. (*) https://igroflot.ru/logic/flash_game_236/
В этой игре придется дополнительно обрабатывать события MouseDown, MouseMove, MouseUp.
18. Выключить свет! – https://dovga.net/game/3178/vyklyuchit-svet
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
19. https://igroflot.ru/balls/flash_game_1539/
20. https://igroflot.ru/logic/flash_game_2950/
21. (*) Кубикон – https://igroflot.ru/flash_games_20.htm
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
22. (*) Кугейм – https://igroflot.ru/flash_games_26.htm
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
23. https://igroflot.ru/logic/flash_game_8024/
В JTable вращаемые ячейки можно выделять другим цветом фона.
24. Тетрис наоборот – https://igroflot.ru/logic/flash_game_222/
25. Цепная реакция – https://igroflot.ru/flash_games_41.htm
Предусмотреть несколько уровней (уровни выбираются в меню). Описание уровней должно храниться в виде текстовых файлов level_01.txt, level_02.txt в директории levels, которая расположена в директории, в которой находится сам исполняемый файл игры.
26. Еще одна вариация на тему Тетриса – https://www.min2win.ru/gm.php?id=5427
В этой игре придется дополнительно обрабатывать события MouseDown, MouseMove, MouseUp (не обязательно таскать фигуры поверх клеток грида, достаточно по клеткам).
27. Вариация на тему 2048 и Линий – https://www.min2win.ru/gm.php?id=7092
Обратите внимание, что цифры можно перемещать только есть путь до конечного положения цифры по пустым клеткам.
28. Перекраска – https://www.min2win.ru/gm.php?id=5559
29. https://www.min2win.ru/gm.php?id=1682
30. Не могу вспомнить, как этот классический вариант игры называется – https://www.min2win.ru/gm.php?id=2367
31. Еще одна игра с аналогичным названием, но другая – https://4gameground.ru/tetris-naoborot/
32.
33.