私のコードの小さな部分で問題があります。私は戦闘中にプレイヤーのHPを修正していますが、戦闘終了時にHPは100にリセットされます。これは敵のHPが保存されているので奇妙です。 print(id(player.hp))
を使用すると、player.hp
の新しいインスタンスが作成されていることがわかります。なぜか分かりません。私は問題をグーグルで試してみましたが、私の問題に合った例は見つけられません。私は以下のコードの適切な部分だけを含めるようにしようとします(ここでは不要な余分な文章がたくさんあります)が、私はすべてのものを含める必要がある場合。 fight()
が呼び出されると変更後のインスタンス変数のリセット
class Alleyway(Scene):
room_items = []
room_characters = []
room_enemies = ["hobo"]
def __init__(self):
self.fresh_arrival = True
self.north = False
self.east = True
self.south = True
self.west = False
self.enemy = Hobo()
def fight(self, player, weapon): #Lots of what makes this fun is edited out
while True:
if self.enemy.hp > 0:
print("Do you attack or flee?")
words = input("> ").lower()
if words == "flee":
map_ = Map("alleyway")
game = Engine(map_)
game.play()
if words == "attack":
miss = randint(1,4)
if miss == 1:
print("Too bad, you miss!")
else:
print("You got him!")
self.enemy.hp -= weapon.damage
print("Hobo's HP: {}".format(max(self.enemy.hp, 0)))
if self.enemy.hp > 0:
print("The hobo takes a swing at you.")
hobomiss = randint(1,5)
if hobomiss == 1:
print("He missed!")
else:
print("Ouch, he got you!")
player.hp -= self.enemy.damage
print("Your HP: {}".format(max(player.hp, 0)))
else:
print("No idea what you mean. Attack the man or flee.")
else:
print("You defeat the hobo!")
print()
print("Dirty shoes and shank added to inventory.")
print()
shoes = DirtyShoes()
shank = Shank()
player.inventory.append(shoes)
player.inventory.append(shank)
self.room_enemies.remove("hobo")
map_ = Map("alleyway")
game = Engine(map_)
game.play()
は、Player()
のインスタンスはself.hp = 100
のインスタンス変数を持つ引数として送られます。
これは非常に(プレイヤーが死ぬと、それが終了していないという事実をごまかすし、そのような他の愚かな事くださいまだ進行中の作業です:今
、プレイヤーは途中で逃げるとき私の目標は、敵のHPを保存し、プレイヤーのHPを保存し、アイテムをプレイヤーの目録に追加するものです。これまでのところ、敵のHPは正確に保存されています。敵のHPと彼の生きている/死んだ状態は、戦闘が終了したときに大きく働きます。私の問題はplayer.hp -= enemy.damage
,player.inventory.append(shoes)
、およびplayer.inventory.append(shank)
であり、どちらもうまくいきません。player.hp
は、 dは期待通りに減少しますが、プレイヤーが戦闘を終了するとHPは100にリセットされ、在庫に何も追加されません。私はplayer.hp = player.hp - enemy.damage
をHPの問題として試したが、それでも新しい変数が作成される。私はちょうど敵の部分が正常に動作して以来何が起こっているか分からない。
詳細情報が必要な場合は、お知らせください。私のコードを改善することができる明確な方法があれば、私は提案に完全に対応しています。