Космическа епопея

In progress!
История:
След като човечеството достигна технологично ниво, което му позволява да изследва космоса, различни корпорации и нации се състезават за ресурсите на отдалечените планети. Вашата задача е да управлявате една от тези мисии и да се превърнете в доминиращата космическа сила.
Правила и Цели:
-
Точки: Играчите натрупват точки чрез:
- Откриване на нови планети и обекти.
- Извличане на ресурси.
- Строене на сгради и кораби.
- Научни открития и технологични напредъци.
-
Космически Обекти:
- Планета: Някои планети имат редки ресурси, които могат да бъдат добивани. Атмосферата и климатът влияят на типа сгради, които можете да построите.
- Звезда: Звездите са източник на енергия и могат да бъдат използвани за захранване на вашите бази.
- Спътник: Изкуствените спътници могат да служат за комуникация или разузнаване.
-
Ресурси: Ресурсите са ключова част от играта. Необходими са за строене, изследвания и поддържане на вашите бази и кораби.
-
Строителство: Сградите ви позволяват да извличате ресурси, изследвате нови технологии, защитавате се и произвеждате кораби.
-
Технология: Технологичните изследвания ви позволяват да отключите нови сгради, кораби и умения.
-
Конфликти: В космоса не сте сами. Можете да се сблъскате с космически пирати или други играчи. Вашият успе х зависи от вашата стратегия и дипломатични умения.
-
Края на играта: Играта приключва, когато един от играчите постигне определен брой точки или след определен брой ходове. Победителят е този с най-много точки.
Космически Мисии: Разширено Задание 🌌🚀
Задача 1: Основни Класове и Обекти
-
Космически Обект (SpaceObject):
- Абстрактен клас.
- Атрибути:
name,coordinateX,coordinateY,coordinateZ,mass. - Методи:
displayInfo().
-
Подкласове на Космически Обект:
- Всеки подклас наследява
SpaceObject. - Подкласове включват
OrbitableSpaceObject,Satellite. OrbitableSpaceObjectе аб страктен клас (обект), който може да бъде обикалян от други обекти и трябва да има:- Aтрибути:
List<SpaceObject> orbiters. - Mетоди:
addOrbiter(SpaceObject orbiter)иList<SpaceObject> getOrbiters().
- Aтрибути:
- Всеки подклас наследява
-
Подкласове на OrbitableSpaceObject:
- Всеки подклас наследява
OrbitableSpaceObject. - Подкласове включват
Star,Planet.
- Всеки подклас наследява
Задача 2: Интерфейси и Действия
-
NotValidSpaceObjectException Exception
- Персонализирано изключение, което се хвърля, когато се опитате да извършите действие върху невалиден обект. Представлява клас NotValidSpaceObjectException, който наследява Exception. В конструктора му се подава съобщение за грешка и се извиква конструктора на родителя с подаденото съобщение.
-
Orbiter интерфейс:
- Методи:
orbit(SpaceObject target). - Всяка планета може да обикаля около звезда, a спътник около планета. Ако
targetе невалиден, хвърляйте грешкаNotValidSpaceObjectException.
- Методи:
-
Fly интерфейс:
- Метод:
flyTo(SpaceObject destination). - Позволява на космически кораби да пътуват до дадена планета.
- Метод:
Задача 3: Ресурси
-
Базов Ресурс (Resource):
- Атрибути:
amount,harvestRate. - Конструктор:
Resource(double amount, double harvestRate). - Методи:
harvest()
- Атрибути:
-
Конкретни Ресурси:
- Всяка планета може да съдържа различни комбинации от ресурси като
Metal,Gas,Crystal, иUranium. Всеки ресурс има различни характеристики, катоharvestRateе стандартната скорост на добиване на ресурса със стойност 1.0. Например,MetalимаharvestRate1.0,GasимаharvestRate0.5,CrystalимаharvestRate0.2, иUraniumимаharvestRate0.1. Скоростта на добив може да бъде увеличена чрез изследвания и сгради, за да се увеличиharvestRateна даден ресурс. Например, за да се увеличиharvestRateнаMetal, трябва да се построиMetal Mine, като всяко ниво увеличава добива два пъти. Аналогично,Gas RefineryувеличаваharvestRateнаGasдва пъти на ниво,Crystal MineувеличаваharvestRateнаCrystalдва пъти на ниво, иUranium MineувеличаваharvestRateнаUraniumдва пъти на ниво.
- Всяка планета може да съдържа различни комбинации от ресурси като
-
Ресурси на Планета:
- В класа
Planetсе дефинират ресурсите, които се съдържат на дадена планета. - Атрибути:
metal,gas,crystal,uranium. - Методи:
harvestMetal(),harvestGas(),harvestCrystal(),harvestUranium(),printResources().
- В класа
Задача 4: Сгради и Проучвания
-
Базова Сграда (BaseBuilding):
- Атрибути:
name,level,constructionTime,{metal,crystal,gas,uranium}Required. - Getters за всички атрибути.
- Конструктор:
BaseBuilding(String name, int level, int constructionTime, double metalRequired, double crystalRequired, double gasRequired, double uraniumRequired). - Методи:
construct(Planet target),upgrade(),applyEffect().
- Атрибути:
-
Конкретни Сгради:
- Например:
MetalMine,CrystalMine,GasRefineryиResearchLab,ShipYard. MetalMineиCrystalMineмогат да бъдат построени веднага. Другите сгради имат свои зависимости от ресурси или проучвания.
- Например:
-
Добавяне на Сгради към Планетата:
- В класа
Planetтрябва да се добави механизъм (напр. списък или масив) за съхраняване на построените сгради. - Метод в
Planet, който позволява добавяне на нова сграда.
- В класа
Задача 5: Космически Кораби и Скаути
- Космически Кораб (SpaceShip):
- Атрибути:
type,speed,cargoCapacity,weaponPower. - Методи:
travel(),harvestResource(),attack().
- Атрибути:
- Скаути (Scout):
- Атрибути:
speed,sensorRange. - Методи:
explore(),reportResources().
- Атрибути: