Описание:
Вы разрабатываете консольную игру, в которой игрок управляет фермой. Игрок может покупать животных, сажать культуры, продавать продукты и улучшать свою ферму. Цель игры - максимизировать прибыль и расширить свое хозяйство.
Основные классы:
Animal: Представляет животное на ферме.name: Название животного (String).purchaseCost: Стоимость покупки (double).dailyFoodCost: Ежедневные затраты на корм (double).productQuantity: Количество производимого продукта в день (int).productPrice: Цена за единицу продукта (double).- Методы:
getLandUsagePerAnimal()- возвращает площадь земли, необходимую для одного животного.
Crop: Представляет культуру на ферме.name: Название культуры (String).purchaseCost: Стоимость покупки семян (double).dailyWaterCost: Ежедневные затраты на полив (double).productQuantity: Количество производимого продукта в день (int).productPrice: Цена за единицу продукта (double).- Методы:
getLandUsagePerCrop()- возвращает площадь земли, необходимую для одной культуры.
Farm: Представляет ферму игрока.money: Количество денег у игрока (double).land: Площадь земли на ферме (int).animals: Список животных на ферме (List).crops: Список культур на ферме (List).landImprovements: Список доступных улучшений для фермы (List).- Методы:
addAnimal(Animal animal)- добавляет животное на ферму, если хватает земли.addCrop(Crop crop)- добавляет культуру на ферму, если хватает земли.removeAnimal(Animal animal)- удаляет животное с фермы, освобождая землю.removeCrop(Crop crop)- удаляет культуру с фермы, освобождая землю.buyLandImprovement(String improvementName)- покупает улучшение для фермы, если хватает денег.getLand()- возвращает текущую площадь земли на ферме.getMoney()- возвращает текущий баланс денег.
LandImprovement: Представляет улучшение для фермы.name: Название улучшения (String).cost: Стоимость улучшения (double).landIncrease: Увеличение площади земли после покупки (int).- Методы:
getName(),getCost(),getLandIncrease()- геттеры для полей.
GameManager: Управляет игровым процессом.farm: Экземпляр классаFarm.- Методы:
displayAvailableActions()- отображает список доступных действий для игрока.buyAnimal(String animalName)- позволяет игроку купить животное.plantCrop(String cropName)- позволяет игроку посадить культуру.sellProducts()- позволяет игроку продать продукты, произведенные животными и культурами.buyLandImprovement(String improvementName)- позволяет игроку купить улучшение для фермы.runGame()- основной метод, запускающий игровой цикл.
Задачи:
- Реализовать классы
Animal,Crop,Farm,LandImprovementиGameManager. - Реализовать методы для добавления, удаления животных и культур на ферму.
- Реализовать метод
buyLandImprovement()для покупки улучшений земли. - Реализовать метод
displayAvailableActions()для отображения доступных действий игроку. - Реализовать базовый игровой цикл в методе
runGame():- Отображать доступные действия.
- Обрабатывать ввод пользователя.
- Выполнять выбранные действия.
- Обновлять состояние игры (например, уменьшать деньги при покупке животных, увеличивать количество продуктов).
- Реализовать метод
sellProducts()для продажи произведенных продуктов.
Усложненные задачи (Домашнее задание):
- Реализовать систему ежедневного обновления состояния фермы:
- Уменьшать деньги на затраты на корм и полив.
- Увеличивать количество произведенных продуктов.
- Добавить разные типы животных и культур с разными характеристиками.
- Реализовать систему прогресса, которая будет открывать новые улучшения по мере развития фермы.
- Добавить ограничения на количество животных и культур, которые можно посадить на ферме.
- Реализовать систему сохранения и загрузки игры в файл.
Модификаторы видимости:
- Используйте
privateдля полей классов, чтобы ограничить доступ к ним извне. - Используйте
publicдля методов, которые должны быть доступны другим классам. - Используйте
protected(по желанию) для методов, которые должны быть доступны наследникам.
Советы:
- Разбивайте задачу на подзадачи и решайте их последовательно.
- Используйте комментарии для объяснения кода.
- Тестируйте код после каждого изменения.
- Не бойтесь экспериментировать и искать решения в интернете.
Удачи!