使D&D游戏遇到问题



我学习Python已经有一段时间了,我决定自己做一个龙与地下城类型的游戏。我试图让用户输入选择3个字符,每个字符都有自己的生命值等。当用户角色遇到怪物并被怪物攻击时,我想从用户角色中减去生命值。我只是一个初学者,不知道如何解决这个问题,这里是我的代码为例....

Choose_Character = input('Choose a character:n1.Warriorn2.Wizardn3.Elfn')
if Choose_Character == '1':
Warrior = {'HP':140,'Magic':23}
print('Here are you character stats:nHit Points: ' + str(Warrior['HP'])+ 'nMagic Points: ' + str(Warrior['Magic']))


if Choose_Character == '2':
Wizard = {'HP':123,'Magic':12}
print('Here are your character stats:nHit Points: ' + str(Wizard['HP'])+ 'nMagic Points: ' + str(Wizard['Magic']))

if Choose_Character == '3':
Elf = {'HP':123,'Magic':12}
print('Here are your character stats:nHit Points: ' + str(Elf['HP'])+ 'nMagic Points: ' + str(Elf['Magic']))


fox = {'HP':123,'Magic':12}
print('You encounter a fox he bites you. you lode 20 Hit Points')
new_stats = int(Choose_Character['HP'] - 20)
print(f'your Hit Points are now:{new_stats}')
TypeError: string index必须是整数我希望能够获取用户输入的字符,并在游戏中的任何时候使用该输入从字符字典中添加或减去点数。

您遇到了问题,因为您正在尝试访问输入字符串的'HP'th索引。Python不理解这个命令,因为它没有意义。

可考虑的替代方案:

Choose_Character = input('Choose a character:n1.Warriorn2.Wizardn3.Elfn')
if Choose_Character == '1':
character = {'Class': 'Warrior', 'HP': 140, 'Magic': 23}
elif Choose_Character == '2':
character = {'Class': 'Wizard', 'HP': 123, 'Magic': 12}
elif Choose_Character == '3':
character = {'Class': 'Elf', 'HP': 123, 'Magic': 12}
print('Here are your character stats:nHit Points: ' + str(character['HP']) + 'nMagic Points: ' + str(character['Magic']))
fox = {'HP': 123, 'Magic': 12}
print('You encounter a fox he bites you. you lode 20 Hit Points')
new_stats = int(character['HP'] - 20)
print(f'your Hit Points are now:{new_stats}')
作为一个额外的建议,我建议将你的角色,怪物和道具放入一个职业系统中(就像在编程"职业"中,而不是在RPG"职业"中)。这将允许你创建它们的副本,这允许你多次与同一类型的怪物战斗,而无需手动重置一堆东西。它还允许你为怪物执行有趣的行为。例如,你可以有一个类函数on_die,当怪物的HP达到零时,它可以指定自定义行为。对于史莱姆,这个函数可以用来生成更多史莱姆。总之,切换到类结构将使您的项目受益匪浅。

Choose_Character是'1','2'或'3' -这是字符串,因此您得到您报告的错误。当您试图使用['HP']访问字符串时,但字符串只能通过整数寻址。

你真正想做的是像这样

Choose_Character = input('Choose a character:n1.Warriorn2.Wizardn3.Elfn')
if Choose_Character == '1':
hero = {'HP':140,'Magic':23,'Class':'Warrior'} # CHANGED HERE - moved name of class into dict
if Choose_Character == '2':
hero = {'HP':123,'Magic':12,'Class':'Wizard'} # CHANGED HERE - moved name of class into dict
if Choose_Character == '3':
hero = {'HP':123,'Magic':12,'Class':'Elf'} # CHANGED HERE - moved name of class into dict
print(f"Here are your {hero['Class']} stats:nHit Points: {str(hero['HP'])} nMagic Points: {str(hero['Magic'])}")
monster = {'HP':123,'Magic':12, 'Name': 'Fox'}
print(f"You encounter a {monster['Name']} he bites you. you lose 20 Hit Points")
hero['HP'] = hero['HP'] - 20
print(f"your Hit Points are now:{hero['HP']}")

或者类似的东西…不放弃:D

最新更新