Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用其他类中的类中的变量-python_Python_Class_Oop - Fatal编程技术网

使用其他类中的类中的变量-python

使用其他类中的类中的变量-python,python,class,oop,Python,Class,Oop,我正在尝试制作一个基于文本的小型RPG游戏,但决定让它比简单的基于文本的游戏复杂一点。我为一个你可以选择的职业(法师)做了一个职业,然后为一个敌人(兽人)做了一个职业。我现在有很多问题,我就是不知道如何解决,如何使用兽人类中我的玩家类的属性。 我想让兽人伤害玩家,反之亦然,但我似乎无法在兽人职业中使用player.hp。我尝试将不同的东西全球化,但它只是说该实例以前已经被使用过,所以这是不可能的 这是我为法师和兽人开设的两门课程: class Mage(): def __init__(s

我正在尝试制作一个基于文本的小型RPG游戏,但决定让它比简单的基于文本的游戏复杂一点。我为一个你可以选择的职业(法师)做了一个职业,然后为一个敌人(兽人)做了一个职业。我现在有很多问题,我就是不知道如何解决,如何使用兽人类中我的玩家类的属性。 我想让兽人伤害玩家,反之亦然,但我似乎无法在兽人职业中使用player.hp。我尝试将不同的东西全球化,但它只是说该实例以前已经被使用过,所以这是不可能的

这是我为法师和兽人开设的两门课程:

class Mage():
    def __init__(self,name):
        self.name = name
        self.hp = 100
        self.mana = 200
        self.spellpower = 1
    def fireball(self, enemy):
        dmg = randint(10 * self.spellpower,12*1.2*self.spellpower)
        dot = randint(0.5 * self.spellpower, 1.5* self.spellpower)
        self.mana -= 20
        enemy.hp -= dmg
    def attack(self, enemy):
        print(f"you have attacked {enemy}")
        fight = True
        return fight
    def flee(self,enemy):
        num = randint(1,2)
        if num == 1:
            fight = False
            print("you have succesfully fled")
            return fight
        else:
            print(f"You failed to flee. The {enemy} attacks you")
            fight = True
            attack_first = "enemyflee"
            return fight, attack_first

class Orc():
    def __init__(self, number_of):
        self.number_of = int(number_of)
        self.name = "Orc"
        self.hp = 20 * self.number_of
        self.dmg = 5 * self.number_of
    def hit(self, player):
        dmg = randint(4 * self.dmg, 6* self.dmg)
        player.hp -= dmg
        print ("The orc(s) hit(s) you")
    def appearing(self):
        if self.number_of > 1:
            print (f"{self.number_of} Orcs have appeared")
        else:
            print(f"{self.number_of} orc has appeared")
这是我职业的一部分,我尝试使用这些职业让兽人攻击我(玩家现在被称为
class1
,并被命名为兽人
mineorc1
):


我知道如果没有完整的代码,可能会有多混乱,但希望您能帮助我:)

那么您的情况会怎样?是否有错误表明
播放器未引用hp
,或者该值未减少,或者确切的问题是什么?另外,请包含代码如何初始化
class1
mineorc1
从中选择一个:请发布一个正确的示例,那么在您的情况下会发生什么?是否有错误表明
播放器未引用hp
,或者该值未减少,或者确切的问题是什么?另外,请包括代码如何初始化
class1
mineorc1
从中选择一个:请发布一个适当的
    while fight:
        if attack_first == "enemyflee":
            turn = "enemy"
        else:
            if attack_first() == "enemy":
                turn = "enemy"
            else:
                turn = "player"
        if turn == "enemy":
            mineorc1.hit(class1)