Skip to main content

RPG Игра Разширение с полиморфизъм в Java

Разширяване на играта

Идея за разширяване на функционалността на играта. ИМАЙТЕ ПРЕДВИД, ЧЕ СЛЕДВАЩАТА ЧАСТ ОТ ДОКУМЕНТА СА САМО ПРЕДЛОЖЕНИЯ И Е ВЪЗМОЖНО ДА НЕ СА МНОГО ТОЧНИ В ОПИСАНИЕТО СИ.

1. Направете меню през което потребителя да избере какъв тип герой да създаде и да избере име за героя.

2. Направете меню през което потребителя да може да създава чудовища с различни характеристики и да ги добавя в опашката.

3. Въвеждане на Система за Нива (Корекция)

Обновяване на Клас: Character
Полета (частни):
  • level (int): Текущото ниво на героя.
  • experience (int): Текущото количество опит на героя.
Методи:
  • gainExperience(int exp): Увеличава опита и проверява дали героят преминава на следващо ниво.
  • levelUp(): Увеличава нивото на героя и подобрява неговите атрибути.

Така, след като героят победи чудовище или бос, методът gainExperience може да се извика с някаква стойност за опит, която да се добави към текущото количество опит на героя. Когато опитът достигне определена стойност, методът levelUp може да се извика, за да увеличи нивото на героя и да подобри неговите характеристики.

4. Създаване на клас Инвентар

Обновяване на Клас: Inventory
Полета (частни):
  • items(List< Item >): Списък с предметите в инвентара.

Методи:

  • addItem(Item item): Добавя предмет към инвентара.
  • removeItem(Item item): Премахва предмет от инвентара.

5. Създаване на клас Предмети

Обновяване на Клас: Item
Полета (частни):
  • name (String): Името на предмета.
  • effect (Effect): Ефектът, който предметът има върху героя или чудовището.
Методи:
  • applyEffect(Character target): Прилага ефекта върху целта.

6. Създаване на клас Умения

Обновяване на Клас: Skill
Полета (частни):
  • name (String): Името на умението.
  • level (int): Нивото на умението.
Методи:
  • useSkill(Character target): Използва умението върху целта.
  • upgradeSkill(): Повишава нивото на умението.

7. Добавяне на Босове

Обновяване на Клас: Boss, наследник на Monster
Полета (частни):
  • requiredItems(List< Item >): Списък с предметите, необходими за борба с боса.
  • requiredSkills(List< Skill >): Списък с уменията, необходими за борба с боса.
Методи:
  • canChallenge(Character hero): Проверява дали героят отговаря на изискванията за предизвикване на боса.
  • dropLoot(): Връща списък с предмети и умения, които босът изпуска при победа.

8. Управление на екраните чрез Stack

Обновяване на Клас: ScreenManager
Полета (частни):

-screenStack(Stack< IScreen >): Стекът, съдържащ всички отворени екрани.

Конструктор:

Конструктор без параметри, който инициализира нов стек.

Методи:
  • pushScreen(IScreen newScreen): Добавя нов екран към върха на стека.
  • popScreen(): Премахва и връща екрана от върха на стека.
  • peekScreen(): Връща (без да премахва) екрана от върха на стека.
  • clearScreens(): Премахва всички екрани от стека.
  • goBack(): Премахва екрана от върха на стека и връща потребителя към предишния екран.
Интерфейс: IScreen

Методи:

  • show(): Показва съдържанието на екрана.
  • hide(): Скрива съдържанието на екрана.
  • update(): Актуализира съдържанието на екрана (например, ако има промени в данните).

Така, когато потребителят отвори нов екран, извиквате pushScreen с новия екран като аргумент. Когато потребителят иска да се върне назад, извиквате goBack, което премахва текущия екран от стека и връща потребителя към предишния екран. Методите show, hide и update в интерфейса IScreen позволяват на всяка реализация на екран да управлява какво се показва на потребителя и как да се актуализира съдържанието на екрана при промени в данните.

9. Управление на Запазване и Зареждане на Данни

Обновяване на Клас: DataManager
Полета (частни):
  • filePath(String): Пътят към файла, в който ще се запазват и зареждат данните.
  • gameData(GameData): Обект, който съдържа всички данни за играта, които трябва да бъдат запазени.
Конструктор:

Конструктор, който приема пътя към файла като аргумент и го задава на полето filePath.

Методи:
  • saveGame(): Запазва текущите данни за играта във файла.
  • loadGame(): Зарежда данните за играта от файла и ги връща.
  • setGameData(GameData newGameData): Задава новите данни за играта.
  • getGameData(): Връща текущите данни за играта.
Обновяване на Клас: GameData
Полета:
  • lastPlayedCharacter(Character): Последният игран персонаж.
  • highScore(int): Най-високият резултат.
  • lastPlayedLevel(int): Последното изиграно ниво.
  • inventory(List< Item >): Списък с предмети, които са били събрани в последната игра.
Конструктор:

Конструктор, който инициализира полетата с подадени или стойности по подразбиране.

Getters и Setters за всички полета.

Този DataManager клас предоставя методи за запазване и зареждане на данни, които могат да бъдат извикани, когато потребителят започне нова игра, завърши текущата игра или излезе от играта. Обектът GameData съдържа всички данни, които искате да запазите между сесиите, като последния изигран персонаж, най-високия резултат, последното изиграно ниво и инвентара от последната игра.