使D&D游戏遇到问题

2024-05-16 02:35:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我学习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}')

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


Tags: 用户statsmagic字符arepointswizardhp
2条回答

选择字符为'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,'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

您遇到问题是因为您试图访问输入字符串的'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', '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为零时的自定义行为。对于粘液,此功能可用于生成更多粘液。 总之,切换到类结构将使您的项目受益匪浅

相关问题 更多 >