Как создать свою собственную текстовую 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.