Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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_Python 3.x - Fatal编程技术网

Python 名称错误:未定义名称“用户”;我想是和班级有关的

Python 名称错误:未定义名称“用户”;我想是和班级有关的,python,class,python-3.x,Python,Class,Python 3.x,我正在尝试为一个简单的基于文本的冒险游戏创建一个战斗功能。我们还没有在课堂上讨论课程,但在做了一些搜索之后,这似乎是最好的方法。但是,我一直得到一个NameError:没有定义名称“user” 这是到目前为止的代码,我一直在搜索,我只是不太明白哪里是错的 import sys import random import time number = random.randint(0,20) class user: def __init__ (self, player_name, p

我正在尝试为一个简单的基于文本的冒险游戏创建一个战斗功能。我们还没有在课堂上讨论课程,但在做了一些搜索之后,这似乎是最好的方法。但是,我一直得到一个NameError:没有定义名称“user”

这是到目前为止的代码,我一直在搜索,我只是不太明白哪里是错的

import sys
import random
import time

number = random.randint(0,20)


class user:


    def __init__ (self, player_name, player_health, health_potion):

        self.__player_health = player_health
        self.__player_name = player_name
        self.__health_potion = health_potion

        def getName(self):
            return self.__player_name

        def getHealth(self):
            return self.__player_health

        def getPotion(self):
            return self.__health_potion

        def setHealth(self):
            self.__player_health = 100

        def minusHealth(self, number):
            self.__player_health -= number
            return self.__player_health

        def minusPotion(self):
            self.__health_potion -= 1
            return self.__health_potion

        def plusPotion(self, number1):
            self.__health_potion += number1

        def plusHealth(self):
            self.__player_health += 20



    def fight(soldier, player1, name1):

        player1 = user(name1, player1.getHealth(), player1.getPotion())
        soldier = user('Soldier', soldier.getHealth(), soldier.getPotion())

        p = 0
        while p == 0:
            time.sleep(2)
            attack = input("1 = Attack with weapon, 2 = use potion")

            if attack == "1":

                time.sleep(1)
                print("You strike at your enemy. Soldier's health now is", soldier.minusHealth(number))
                print("Soldier hits you back and your health is now at", player1.minusHealth(number))

            elif attack == "2":

                time.sleep(1)
                print("You use a first aid-kit!")
                player1.plusHealth(), player1.minusPotion()

                if player1.getHealth() > 100:

                    player1.setHealth()
                    print("Soldier hits you back and your health is now at", player.minusHealth(number))

            elif enemy.getHealth() <= 0:

                    print("You have won the fight!")
                    s = 2


    def main():
        name1 = input("What would you like your player to be named?")
        time.sleep(1)

        player1 = user(name1, 100, 0)
        soldier = user('Soldier', 80, 0)

        print("Your characters stats are: Health:", player1.getHealth())
        time.sleep(2)

        soldier.setHealth(80)

        fight(soldier, player1, name1)

        booty1 = input("Type ' 1 ' to loot the enemy")
        if booty1 == "1":
            print("You find two first-aid kits")
            player1.__plusPotion(2)

    main()

main像类方法一样缩进


取消缩进主调用和定义

您确定缩进没有问题吗?您的类中有主代码。试着把它去掉。按照惯例,大多数都将类名大写。所以它应该是类用户…这起作用了,但现在我得到了以下错误:代码回溯最近的调用最后:文件C:/Users/kensai/Desktop/lab3/project/fight.py,第99行,在主文件C:/Users/kensai/Desktop/lab3/project/fight.py,第87行,在主打印中您的字符统计是:Health:,player1.getHealth AttributeError:“user”对象没有属性“getHealth”相同的缩进错误-将fight和init之间的所有方法向左拉以确保其清晰,从getName取到getHealth并删除它,使其位于类中。然后删除下面的所有内容,使其位于主代码中