Python 名称错误:未定义名称“用户”;我想是和班级有关的
我正在尝试为一个简单的基于文本的冒险游戏创建一个战斗功能。我们还没有在课堂上讨论课程,但在做了一些搜索之后,这似乎是最好的方法。但是,我一直得到一个NameError:没有定义名称“user” 这是到目前为止的代码,我一直在搜索,我只是不太明白哪里是错的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
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并删除它,使其位于类中。然后删除下面的所有内容,使其位于主代码中