【发布时间】:2015-07-25 12:50:15
【问题描述】:
`import time
WarriorSpellOne, WarriorSpellTwo, WarriorSpellThree, WarriorSpellUltimite = ("Slash"), ("Hammer Down"), ("Flame Strike"), ("Ragnarok")
MageSpellOne, MageSpellTwo, MageSpellThree, MageSpellUltimite = ("Fireball"), ("Lightning Strike"), ("Necromancy"), ("Mutation")
ArcherSpellOne, ArcherSpellTwo, ArcherSpellThree, ArcherSpellUltimite = ("Tri-Shot"), ("Aimed Shot"), ("Snare"), ("Arrow Rain")
RougeSpellOne, RougeSpellTwo, RougeSpellThree, RougeSpellUltimite = ("Backstab"), ("Smoke Bomb"), ("Blade Toss"), ("Shadow Wars")
SpellOne, SpellTwo, SpellThree, SpellUltimite = ("N/A"), ("N/A"), ("N/A"), ("N/A")
WarriorHealth, WarriorAttack, WarriorMana = int(200), int(10), int(100)
MageHealth, MageAttack, MageMana = int(75), int(10), int(200)
ArcherHealth, ArcherAttack, ArcherMana = int(150), int(15), int(150)
RougeHealth, RougeAttack, RougeMana = int(100), int(20), int(50)
ClassHealth, ClassAttack, ClassMana = int(0), int(0), int(0)
ClassSelected = ("N/A")
Class = int(0)
Confirm = int(0)
try:
Class = int(input("\nSelect a class, Warrior(1), Mage(2), Archer(3), Rouge(4)"))
while Confirm != 1:
while Class <= 4 and Class >= 1 :
if Class == 1:
ClassHealth, ClassAttack, ClassMana = WarriorHealth, WarriorAttack, WarriorMana
SpellOne, SpellTwo, SpellThree, SpellUltimite = WarriorSpellOne, WarriorSpellTwo, WarriorSpellThree, WarriorSpellUltimite
ClassSelected = ("Warrior")
if Class == 2:
ClassHealth, ClassAttack, ClassMana = MageHealth, MageAttack, MageMana
SpellOne, SpellTwo, SpellThree, SpellUltimite = MageSpellOne, MageSpellTwo, MageSpellThree, MageSpellUltimite
ClassSelected = ("Mage")
if Class == 3:
ClassHealth, ClassAttack, ClassMana = ArcherHealth, ArcherAttack, ArcherMana
SpellOne, SpellTwo, SpellThree, SpellUltimite = ArcherSpellOne, ArcherSpellTwo, ArcherSpellThree
ClassSelected = ("Archer")
if Class == 4:
ClassHealth, ClassAttack, ClassMana = RougeHealth, RougeAttack, RougeMana
SpellOne, SpellTwo, SpellThree, SpellUltimite = RougeSpellOne, RougeSpellTwo, RougeSpellThree, RougeSpellUltimite
ClassSelected = ("Rouge")
print ("\nYou have selected the {} class. {} Health, {} Attack, {} Mana".format(ClassSelected, ClassHealth, ClassAttack, ClassMana))
print ("\nYour spells are; {}, {}, {} and {}".format(SpellOne, SpellTwo, SpellThree, SpellUltimite))
time.sleep(3)
Confirm = int(input("\nDo you want to continue with this class? Yes(1), No(0)"))
if Confirm == 0:
ClassHealth, ClassAttack, ClassMana, SpellOne, SpellTwo, SpellThree, SpellUltimite = int(0), int(0), int(0), ("N/A"), ("N/A"), ("N/A"), ("N/A")
except (ValueError, TypeError):
Class = int(input("\nInvalid Class, try again | Warrior(1), Mage(2), Archer(3), Rouge(4)"))`
我正在尝试制作自己的游戏,这是选课阶段 但是,验证不起作用,使用 IDLE 时,如果数字超出范围,例如5 是输入的,没有任何反应。以及当我输入一个字符时,它会说错误短语,但是当我重新输入相同的字符时,它会导致程序崩溃。
有任何改进验证的建议吗?我也是python新手,所以我对代码的了解有点不足
编辑 正在处理它,只是将它作为书签打开,但不需要新的答案
【问题讨论】:
-
这里仅供参考,但您的数据结构(或缺少数据结构)只会给您带来麻烦。游戏是objects 的理想用例。此外,像
20这样的整数已经是整数。您不必使用int(20)投射它们。而Rouge是化妆品(你在找Rogue)。 -
一件事可以真正帮助您:组织!
-
在(并且仅在之后)你得到它做你想做的事情之后,请把它交给codereview.stackexchange.com!
-
@leekaiinthesky 请问为什么?我可能会通过更改其初始目的来对该代码采用不同的方法,但是将其带到代码审查网站的目的是什么? (友好的问题,没有敌意:D)
-
代码审查堆栈交换是供人们发布工作代码并让社区就如何使其变得更好提出建议(更符合一般的编程最佳实践)。在我之前发表评论的人建议您需要更好的组织和自定义数据结构。这些建议不会直接解决您在此处发布的问题,甚至可能不会改变您的代码的运行方式。但是,它们将使您的代码更好、更易于阅读和更易于编写,而它们正是代码审查社区旨在解决的问题。
标签: python