我正在尝试制作一个小型游戏,而我要做的是使用类来指示用户首选类的统计信息。我需要进行上课,以便与怪物战斗(这也将在其自己的职业中)时,我将可以使他们的属性生效。
这可能是一个“大问题”,但是为避免重复编写三次代码(每个类),我只想调用变量“ chosenClass.HP”而不是“ Mage.HP”,因为如果这样做这样,我就需要为故事中的每个班级准备一堆if语句。肯定有更好的办法。
我在这两种方法上都做过,而且我讨厌写
if userChoice is 'Mage':
HP = 150
我已经看过self.something,但是我不完全了解它是如何工作的。如果这是必需的或推荐的解决方案,那么最佳的学习资源是什么?
print("Welcome to the game")
name = input("Choose your name\n")
print(name)
class Warrior:
HP = 100
ATK = 200
DEF = 0
class Mage:
HP = 100
ATK = 200
DEF = 0
class Rouge:
HP = 150
ATK = 250
DEF = 100
user_class = input("Choose a class between Warrior, Mage, or Rouge\n")
print(user_class)
while(user_class != 'Warrior' and user_class != 'Mage' and user_class != 'Rouge'):
print("You did not choose from the required classes, try again")
user_class = input()
theClass = user_class()
theClass.HP = 1000
我从此代码中得到的错误是: TypeError:“ str”对象不可调用 我知道给它一个字符串,但这是一个变量。为什么会引起问题?
有什么建议可以使这个程序更好?
答案 0 :(得分:1)
如果要创建这样的实例,则需要将字符串映射到类。
pc_classes = {'Mage': Mage, 'Warrior': Warrior, 'Rogue': Rogue}
while True:
try:
user_class = input("Enter Mage, Warrior, or Rogue)
if user_class in pc_classes:
break
pc = pc_classes[user_class]()
答案 1 :(得分:1)
user_class
返回一个字符串,而不是您在上面定义的实际Class
。这是因为input()
返回一个字符串,并将其存储在user_class
中。为了创建您在代码中创建的类的新实例,需要使用基于播放器输入的某种逻辑实例化该类,例如:
if user_class.lower() == 'warrior':
theClass = Warrior()
theClass.HP = 1000
显然,这不是最好的方法,而只是显示如何实例化类的一个示例。