Формат: индивидуальная работа
Язык/среда: Java 17+, консольное приложение, без Maven
Цель: на практике применить изученные темы курса
Linux/macOS:
./build.sh
./run.sh
Windows:
build.bat
run.bat
- Каркас игры:
Game.java
с циклом ввода и заглушками команд (TODO
). - Модель данных:
Player
,Monster
,Item
,Room
и т.д. - Чтение команд пользователя, обработка ошибок, базовые команды (
look
,save
,load
,exit
). - Примеры I/O с try-with-resources (
SaveLoad
).
-
move
<north|south|east|west>
- Перемещение между комнатами.
- Если нет пути — выбросить
InvalidCommandException
.
-
take
<item name>
- Взять предмет из комнаты и положить в инвентарь.
-
inventory
- Вывести инвентарь с использованием Stream API: сортировка и группировка по типу предмета.
-
use
<item name>
- Применить предмет (полиморфизм через
Item.apply()
).
- Применить предмет (полиморфизм через
-
fight
- Простая пошаговая битва с монстром, уменьшение HP, выпадение лута, завершение игры при смерти игрока.
- Реализовать сохранение/загрузку состояния (минимум — игрок и инвентарь).
- Команда
gc-stats
выводитused/free/total
память изRuntime
.
- Все некорректные ситуации — через
InvalidCommandException
с понятным текстом. - Покажите в комментариях различие ошибок компиляции (пример закомментированного кода) и ошибок выполнения (пример
ArithmeticException
).
> look
Площадь: Каменная площадь с фонтаном.
Выходы: north
> move north
Вы перешли в: Лес
Лес: Шелест листвы и птичий щебет.
Предметы: Малое зелье
В комнате монстр: Волк (ур. 1)
Выходы: south, east
> take Малое зелье
Взято: Малое зелье
> inventory
- Potion (1): Малое зелье
> use Малое зелье
Выпито зелье: +5 HP. Текущее HP: 25
> fight
Вы бьёте Волк на 5. HP монстра: 3
Монстр отвечает на 1. Ваше HP: 24
Блок | Баллы |
---|---|
Реализация команд | 50 |
Обработка исключений | 10 |
Stream API и коллекции | 15 |
I/O + try-with-resources | 10 |
GC | 10 |
Чистота кода, инкапсуляция | 5 |
- Запустите игру.
- Посмотрите стартовую комнату (
look
). - Перейдите в лес (
move north
). - Возьмите зелье (
take ...
). - Выведите инвентарь (
inventory
). - Используйте предмет (
use ...
). - Победите монстра (
fight
несколько раз). - Сохраните и загрузите игру (
save
/load
). - Проверьте
about
иgc-stats
.
- Сериализация состояния всех комнат.
- Добавление новой комнаты, двери и логики использования ключа.
- Таблица лидеров (
scores.csv
) с сохранением очков при выходе. - Команда
alloc
+ демонстрация GC.