Python 在运行时更改类实例的属性值
我正在创建一个小游戏,它依赖于用户选择来确定他/她想要的角色的统计信息。游戏包括由玩家“种族”决定的“统计数据”。我遇到了一些问题,因为我需要在运行时完成此操作。我不确定我需要做什么来完成这一点,任何帮助将不胜感激 实现必须能够支持将来添加运行时确定的因素,如“派系”和“性别”。这只是一个考虑,并不是要求迄今为止实施这一点Python 在运行时更改类实例的属性值,python,Python,我正在创建一个小游戏,它依赖于用户选择来确定他/她想要的角色的统计信息。游戏包括由玩家“种族”决定的“统计数据”。我遇到了一些问题,因为我需要在运行时完成此操作。我不确定我需要做什么来完成这一点,任何帮助将不胜感激 实现必须能够支持将来添加运行时确定的因素,如“派系”和“性别”。这只是一个考虑,并不是要求迄今为止实施这一点 class Character: def __init__(self, name, gender, race, faction): self.play
class Character:
def __init__(self, name, gender, race, faction):
self.playerName = name
self.playerGender = gender
self.playerRace = race
self.playerFaction = faction
self.setPlayerStats("","","","","")
#CHARACTER STATS
def setPlayerStats(self, mining, manufacturing, exploration, invention, trading):
self.mining = mining
self.manufacturing = manufacturing
self.exploration = exploration
self.invention = invention
self.trading = trading
def playerStats(self):
self.setPlayerStats(0, 0, 0, 0, 0)
#CHARACTER CLASSES
class Dwarf(Character):
def playerStats(self):
self.setPlayerStats(3, 1, 0, 1, 0)
class Elf(Character):
def playerStats(self):
self.setPlayerStats(0, 1, 0, 1, 3
def setPlayerRace(self):
self.playerRace = "Elf"
class Human(Character):
def playerStats(self):
self.setPlayerStats(1, 1, 1, 1, 1)
def setPlayerRace(self):
self.playerRace = "Human"
class Orc(Character):
def playerStats(self):
self.setPlayerStats(0, 2, 2, 1, 0)
def setPlayerRace(self):
self.playerRace = "Orc"
当前实现方法的问题不是实际设置这些变量,因为它没有设置为“character”类的实例。我被告知这是一个运行时问题,我不熟悉如何在Python中做到这一点
print("Please choose the numerical value assigned to the option you wish to select:")
print("1) Dwarf 2) Elf 3) Human 4) Orc")
userInput = input(str("Input your character`s race: "))
if userInput == "1":
player1 = Dwarf("","","","")
break
elif userInput == "2":
player1 = Elf("","","","")
break
elif userInput == "3":
player1 = Human("","","","")
break
elif userInput == "4":
player1 = Orc("","","","")
break
else:
input("Invaild Input! Press any button to try again...")
您缺少
Elf(角色)的右括号。playerStats
class Elf(Character):
def playerStats(self):
self.setPlayerStats(0, 1, 0, 1, 3
此外,还有许多break
语句不在循环中
elif userInput == "2":
player1 = Elf("","","","")
break
“玩家”一词通常指坐在电脑前的人(或AI,或玩游戏的人)。玩家控制的角色不是玩家。例如,玩家经常在键盘上打字,而“玩家控制的角色”可能挥舞剑,或从弓上发射箭。为了避免混淆,我建议您在单词“player
”上应用edit>replace
。首先,播放器需要GUI(图形用户界面),而播放器控制的角色则不需要。您可能希望在某个时候创建一个player
类来处理用户输入。或者,一个玩家可能“拥有”几个不同的角色。木偶和木偶演员是不同的东西
设置统计数据很容易:
Create a character
character = Orc("Mr. Orc", "male", "Orc", "zebra faction")
# Below, set the stats at runtime
character.mining = 455
print(character.mining)
character.setPlayerStats(self, mining=1, manufacturing=2, exploration=3, invention=4, trading=5)
如果您想为整个比赛设置统计数据,可以编写如下内容:
class Race:
def __init__(self, mining, manufacturing, exploration, invention, trading):
self.mining = mining
self.manufacturing = manufacturing
self.exploration = exploration
self.invention = invention
self.trading = trading
Dwarf = Race(3, 1, 0, 1, 0)
class Character:
def __init__(self, name, gender, race:Race, faction):
self.playerName = name
self.playerGender = gender
self.playerRace = race
self.playerFaction = faction
#CHARACTER STATS
def getTotalStats(self):
return (
self.race.mining + self.mining_bonus,
self.race.manufacturing + self.manufacturing_bonus,
self.race.exploration + self.exploration,
self.race.invention + self.invention,
self.race.trading + self.trading,
)
我不明白你的问题是什么。我想知道如何设置包含运行时玩家统计值的角色比赛的值。目前,我无法设置链接到角色实例的值。您是否可以编辑问题以显示产生不需要的输出或错误的代码,显示此输出/错误以及所需的输出或行为?您是否确实需要编写不同的代码来解释人类/矮人/精灵如何以不同方式工作,或者,您可以通过迄今为止显示的数据来完成这一切吗?至少不要考虑子类,至少在你证明了一个需要之前。你应该把这场竞赛作为一个论点:<代码> PrReR1 =侏儒(“,”,“侏儒”,“”)< /代码>。