CHARCLASSDICT = {
'warrior': {'lvl': 4, 'hp': 50, 'sp': 30, 'mp': 15,
'str': 10, 'def': 8, 'dex': 8, 'int': 4, 'end': 6, 'fai': 2, 'chr': 4, 'lck': 2},
class LivingBeing(object):
# Class that defines the values of living beings inside the game space.
def __init__(self, name, health, strength, defense, dexterity, intelligence, description):
# Base attributes:
self.name = name
self.health = health
self.description = description
# Base skills:
self.strength = strength
self.defense = defense
self.dexterity = dexterity
self.intelligence = intelligence
class Hero(LivingBeing):
# Base class for the player.
def __init__(self, playertype):
# Basic player variables:
self.stamina = CHARCLASSDICT[playertype]['sp']
self.mana = CHARCLASSDICT[playertype]['mp']
self.level = CHARCLASSDICT[playertype]['lvl']
self.charclass = 'Adventurer'
# Additional player skill attributes:
self.endurance = CHARCLASSDICT[playertype]['end']
self.faith = CHARCLASSDICT[playertype]['fai']
self.charisma = CHARCLASSDICT[playertype]['chr']
self.luck = CHARCLASSDICT[playertype]['lck']
super(Hero, self).__init__('Unknown', 50,
CHARCLASSDICT[playertype]['str'],
CHARCLASSDICT[playertype]['def'],
CHARCLASSDICT[playertype]['dex'],
CHARCLASSDICT[playertype]['int'])
player = Hero('warrior')
上面的代码概述了我基于文本的RPG的基本变量。我所做的是通过字典定义字符类信息,即“战士”或“骑士”类的值,并向用户提供原始输入以选择他们的类。对于这个例子,我在命令player类变量时只调用'warrior:player = Hero('warrior')
也就是说,一旦我通过调用一个类实例应用了字典的值,我希望能够与播放器确认更改。为此,我认为在player类中创建__str__
函数是最简单的方法
class Hero(LivingBeing):
def __init__(...)
...
def __str__(self):
details = """Name: {0}, Class: {1}, Level: {2}, Stamina: {3}, Mana: {4} //
STR: {5}, DEF: {6}, DEX: {7}, INT: {8}, FAI: {9}, CHR: {10}, LCK: {11}"""
return details.format(self.name, self.charclass, self.level, self.stamina, self.mana,
self.strength, self.defense, self.dexterity, self.intelligence,
self.faith, self.charisma, self.luck)
然而,我面临的问题是当我转到print player
时。它返回一个错误,表示英雄对象没有力量属性。我是否误解了__str__
函数的概念以及它在类继承中的工作方式
目前没有回答
相关问题 更多 >
编程相关推荐