Python类任务实例和方法

2024-04-20 00:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着解决战士们的练习题。但是我想我理解了python类机制中的一些错误,但是我不理解what=(请帮助我理解如何解决这个问题)

这是一个任务体

我相信你们中的许多人都有玩电脑游戏的经验。但是你有没有想过改变游戏,让角色或游戏世界更符合你对完美游戏的想法?可能是的。 在这个任务中(以及与之相关的几个后续任务中),您将有机会“坐在开发人员的椅子上”,并创建一个关于战斗的简单游戏的逻辑。 让我们从简单的任务开始-一对一决斗。您需要创建类Warrior,其实例将有2个参数-health(等于50点)和attack(等于5点),以及1个property-is \u alive,这可以是True(如果Warrior's health是>;0)或False(在另一种情况下)。此外,你必须创建第二个单位类型-骑士,它应该是战士的子类,但是攻击增加了-7。你还必须创建一个函数fight(),它将启动两个战士之间的决斗,并定义其中最强的一个。决斗按照以下原则进行: 每回合,第一个战士都会击中第二个战士,这第二个战士的生命值将与第一个战士的攻击值相同。之后,如果他还活着,第二个战士也会这样对待第一个战士。 战斗以其中一人死亡而告终。如果第一个战士还活着(因此另一个已经不在了),函数应该返回True,否则返回False

输入:勇士。 输出:决斗的结果(真或假)。 前提条件: 2种类型的装置 所有给定的战斗都有一个结束(对于所有任务)

我的解决方案呢

class Warrior:
    def __init__(self):
        self.life = 50
        self.attack = 5

    def is_alive(self):
        if self.life > 0:
            return True
        return False


class Knight(Warrior):
    def __init__(self):
        self.attack = 7
        super(Knight, self).__init__()



def fight(first, second):
    while first.is_alive() and second.is_alive():
        second.life = second.life - first.attack

        if second.is_alive():
            first.life = first.life - second.attack

    if first.is_alive():
        return True
    return False

Tags: selffalsetrue游戏returninitisdef