使 D&D 游戏遇到问题

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

 Choose_Character = input('Choose a character:\n1.Warrior\n2.Wizard\n3.Elf\n')

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}')

我收到一个错误:类型错误:字符串索引必须是整数 我希望能够获取用户输入的字符,并在游戏中的任何时候使用该输入在字符字典中添加或减去点数。

w5273000 回答:使 D&D 游戏遇到问题

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

考虑的替代方案:

Choose_Character = input('Choose a character:\n1.Warrior\n2.Wizard\n3.Elf\n')

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','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.Warrior\n2.Wizard\n3.Elf\n')

  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,'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,'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

本文链接:https://www.f2er.com/8594.html

大家都在问