通过方法

时间:2018-05-30 15:07:20

标签: python

我是一个非常新的编程并且一直在学习Python,我决定尝试通过OOP创建一个基于文本的冒险,到目前为止,我已经成功克服了自己的问题,但我仍然坚持这个问题我无法解决,这里是代码:

class player:
    def __init__(self, name, health):
        self.name = name
        self.health = health

Player_1 = player ('Bob', 80)

class enemies:
    def __init__ (self, description, health, damage):
        self.description = description
        self.health = health
        self.damage = damage

    def __str__ (self):
        return '{} , {} , {}'.format (self.description, self.health, self.damage)

    def enemy_damage (self):
        Player_1.health - random_enemy1
        return Player_1.health

random_enemy1 = enemies ('Goon', 40, 5)

目前我只是测试此代码,然后在游戏中完全应用它,当调用enemy_damage方法(random_enemy1.enemy_damage)时,我可以成功地将玩家的生命值降低5,但问题在于玩家健康状况尚未更新,因此下次运行enemy_damage方法时,玩家的健康状况将恢复到80.

有人可以帮忙吗?我如何让玩家健康更新?我已经看了很多关于课堂方法的视频等等,但是无法解决这个问题,我知道代码对于我想要做的事情来说可能很糟糕,但我只是想找到这个东西。此刻工作,之后我将使用其他方法来减少代码量并改进它。

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以像这样定义PS F:\Bizfi> dir -r | Out-GridView | Select FullName, LastWriteTime

enemy_damage

然后像这样使用它:

def enemy_damage(self, enemy):
    enemy.health -= self.damage
    return enemy.health

除此之外,我建议为敌人和玩家使用一个公共类,名为print("Player_1's health before damage: " + Player_1.health) Player_1 = player('Bob', 80) random_enemy1 = enemies('Goon', 40, 5) random_enemy1.enemy_damage(Player_1) print("Player_1's health after damage: " + Player_1.health)

根据PEP8,类名通常应使用CapWords惯例。请参阅文档here