Я пытался исследовать, но все, что я мог найти, это методы доступа к переменной другого класса, так что вот моя проблема:
Я хочу, чтобы мой класс Monster() имел в своем методе взаимодействовать код, который вычитал бы -10 из переменной пкт в классе Player().
Я попытался:
super(Player, self)._ _init_ _(pkt) -= 10
но он напечатал SyntaxError, говоря: «Это недопустимое выражение для расширенного присваивания».
Не могли бы вы помочь? Вот код:
from abc import ABC, abstractmethod
from random import random
class GameObject(ABC):
def __init__(self, pkt):
self.pkt = pkt
@abstractmethod
def is_alive(self):
return self.pkt > 0
def interact(self):
pass
class Player(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
super().is_alive()
def interact(self):
pass
class Door(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
print("Player went through the door.")
class Monster(GameObject):
def __init__(self):
super().__init__(50)
def is_alive(self):
pass
def interact(self):
super(Player, self).__init__(pkt) -= 10
print('Player killed the Monster.')
p1 = Player()
board = []
for i in range(0,10):
if random() < 0.70:
board.append(Monster())
else:
board.append(Door())
for i in board:
if p1.is_alive() == False:
break
else:
i.interact()
print(p1.pkt)






Все, что вам нужно сделать, это
def interact(self, player):
player.pkt -= 10
с player типа Player.
Обратите внимание, что ваш монстр не может взаимодействовать сам с собой, и вы должны передать его метод
interactигроку для взаимодействия. Кроме того, ваш код показывает некоторые недоразумения в отношении использования классов. Я настоятельно рекомендую вам более внимательно изучить какой-нибудь хороший учебник и начать с гораздо более простой версии вашего кода без абстрактных классов и всего остального.