Как создать свою собственную текстовую RPG на Python с помощью объектно-ориентированного программирования.

Я потратил 15 дней на создание этой ролевой игры на Python. Если вы хотите пропустить руководство и сразу перейти к коду и прочитать его, вот проект на GitHub!

К концу этой серии статей вы сможете создать что-то вроде GIF, который вы видите внизу, где у вас будет текстовая ролевая игра, о которой я расскажу в серии статей.

Если у вас есть какие-либо улучшения в коде или какие-либо предложения, сообщите мне. Получайте удовольствие и наслаждайтесь статьей!

В следующей статье я расскажу о:

  • Класс героя (с его геттерами и сеттерами)
  • Класс врага (с его геттерами и сеттерами)

Шаг 1: класс героя

Класс героя:

Есть 7 различных атрибутов для класса Героя, который будет героем:

  • Здоровье = Здоровье
  • Атака = Взлом
  • Удача = Хлак
  • Ranged = Hranged
  • Защита = Hdefence
  • Магия = Hmagic
  • Имя = Hname

Сеттеры и геттеры

Мы собираемся использовать эти атрибуты для установщиков и получателей, которые позволяют вызывать атрибуты Героя и редактировать его атрибуты. Например, если Герой подвергается атаке, мы можем вызвать атрибут «Здоровье» и уменьшить его здоровье, или, если уровень Героя повысился, мы можем увеличить атрибут «Здоровье». .

Мы используем методы получения и установки, чтобы добавить логику проверки при получении и установке значения. Мы создаем Getter в Python следующим образом:

def getHealth(self):
    return self.health

Подобен любому другому методу для класса, и мы вызываем функцию «getHealth», потому что мы собираемся использовать ее позже в игре, когда мы хотим вызвать функцию для редактирования здоровье Героя.

Мы создаем сеттер в Python следующим образом:

def setHealth(self, newHealth):
    self.health = newHealth

Вот неплохой пример из geeksforgeeks, который объясняет, как сеттеры и геттеры работают в Python:

class Geek:
def __init__(self, age = 0):
    self._age = age
# getter method
  def get_age(self):
    return self._age
# setter method
  def set_age(self, x):
    self._age = x
raj = Geek()
# setting the age using setter
raj.set_age(21)
# retrieving age using getter
print(raj.get_age())
print(raj._age)
....
----->21
----->21

Код класса героя:

Шаг 2: класс врага

Класс врага:

Как и в классе Hero, в классе Enemy мы будем использовать сеттеры и геттеры, но мы собираемся создать подкласс: «Босс».

Мы собираемся сделать это, просто унаследовав вражеский класс как родительский класс, и мы собираемся использовать класс босса как дочерний класс. Вы можете сделать это, выполнив следующие действия:

class Boss(Enemy):    
  def __init__(self, Ehealth, Eattack, Especial, Echance, Ename, EsuperMove):
    # in order to actually inherit the Enemy class we need to use the super method        
    super().__init__(Ehealth, Eattack, Especial, Echance, Ename)
    self.superMove = EsuperMove

Кредиты: Youtube, Advanced Python Text Adventure.