Вы используете объекты.Объекты «знают» вещи - значения своих атрибутов - и объекты могут отправлять сообщения друг другу - вызывая их методы.
В этом случае:
Player
знает своиздоровье. Potion
знает, насколько это может увеличить здоровье на Inventory
знает, есть ли у него зелье. Player
должно иметьинвентарь Player
может выбрать использование предметов в своем инвентаре Inventory
отслеживает, использовался ли предмет
На основании этих фактов,мы знаем, какие методы и атрибуты нужны нашим классам.
Зелье должно знать, сколько очков здоровья он может восстановить
class Potion(object):
def __init__(self,name, varamount):
self.name=name
self.varamount=varamount
Инвентаризация должна отслеживать его содержимое.
class Inventory(object):
def __init__(self):
self.items={}
def add_potion(self, potion):
self.items['potion'] = potion
def get_potion(self):
return self.items.get('potion')
def remove_potion(self):
self.items.pop('potion', None)
Игрок должен иметь возможность отслеживать свое здоровье и использовать зелья.
class Player():
def __init__(self, inventory):
self.health=100
self.mana=100
self.stamina=100
self.inventory = inventory
def use_potion(self):
potion = self.inventory.get_potion()
if potion:
self.health += potion.varamount
self.inventory.remove_potion()
print("Used a ",potion.name," !")
inventory=Inventory()
healthpotion=Potion("Health potion", 50)
inventory.add_potion(healthpotion)
player=Player(inventory)
player.use_potion()