Skip to content

DenisRomanoff/sprint1-2

 
 

Repository files navigation

Задача: Ферма (Java для начинающих)

Описание:

Вы разрабатываете консольную игру, в которой игрок управляет фермой. Игрок может покупать животных, сажать культуры, продавать продукты и улучшать свою ферму. Цель игры - максимизировать прибыль и расширить свое хозяйство.

Основные классы:

  • 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() - основной метод, запускающий игровой цикл.

Задачи:

  1. Реализовать классы Animal, Crop, Farm, LandImprovement и GameManager.
  2. Реализовать методы для добавления, удаления животных и культур на ферму.
  3. Реализовать метод buyLandImprovement() для покупки улучшений земли.
  4. Реализовать метод displayAvailableActions() для отображения доступных действий игроку.
  5. Реализовать базовый игровой цикл в методе runGame():
    • Отображать доступные действия.
    • Обрабатывать ввод пользователя.
    • Выполнять выбранные действия.
    • Обновлять состояние игры (например, уменьшать деньги при покупке животных, увеличивать количество продуктов).
  6. Реализовать метод sellProducts() для продажи произведенных продуктов.

Усложненные задачи (Домашнее задание):

  1. Реализовать систему ежедневного обновления состояния фермы:
    • Уменьшать деньги на затраты на корм и полив.
    • Увеличивать количество произведенных продуктов.
  2. Добавить разные типы животных и культур с разными характеристиками.
  3. Реализовать систему прогресса, которая будет открывать новые улучшения по мере развития фермы.
  4. Добавить ограничения на количество животных и культур, которые можно посадить на ферме.
  5. Реализовать систему сохранения и загрузки игры в файл.

Модификаторы видимости:

  • Используйте private для полей классов, чтобы ограничить доступ к ним извне.
  • Используйте public для методов, которые должны быть доступны другим классам.
  • Используйте protected (по желанию) для методов, которые должны быть доступны наследникам.

Советы:

  • Разбивайте задачу на подзадачи и решайте их последовательно.
  • Используйте комментарии для объяснения кода.
  • Тестируйте код после каждого изменения.
  • Не бойтесь экспериментировать и искать решения в интернете.

Удачи!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%