我正试图测试我对编码的不足,并试图学习如何制作基于文本的游戏。这是我的攻击阶段的文本片段,目前我已调试到第36行,其中我收到错误说菜单=输入(">>>")应该缩进,可能我得到一些帮助推过这个,我不明白为什么我收到这个错误。
#-*-coding:utf8;-*-
#qpy:3
#qpy:console
#basic attack for an rpg text based game
from random import randint
#dice function
def die(sides):
return (randint(1, sides))
# the two object fighting created as lists, later to be used as classes
human = [2, 25, 5]
monster = [1, 20, 2]
#setting the input bar
menu = 0
#attack and defence phase for the game
def attackphase():
while menu != 2:
menu == 0
x = (human[0] + die(20)) - monster[2] #calulations for damage
y = (monster[0] + die(20)) - human[2]
print("You dealt", x, "to the monster")
monster[1] -= x
if monster[1] > 0: #monster returns attack
print("Monster dealt", y, "to you.")
human[1] -= y
else:
print("You killed the monster")
print("Congrats your game works")
menu == 2
if human[1] <= 0: #to end game state
menu == 2
#game state
while menu!= 2:
print("What would you like to do")
print('''1. Attack
2. Quit''')
menu = input(">>>")
if menu == 1:
attackphase()
else:
print("sorry, that has not yet been programed")
print("Wooot, Wooot, Wooot!!!!!!!!!!")
最初的问题已经解决,我修补了代码以配合建议,目前游戏正在循环到else语句抱歉,尚未编程,我输入1,2或任何其他击键。
答案 0 :(得分:1)
人类和寄养中缺少等号
human = [2, 25, 5]
monster = [1, 20, 2]
Python从0开始计数,(如C)然后是怪物[3]和人类[3]给出一个IndexError。
x = (human[0] + die(20)) - monster[2] #you can use moster[-1] too!
y = (monster[0] + die(20)) - human[2]
你不是在改变怪物和人类的生命!
monster[1] -= x # This is equal to
human[1] -= y # >>>human[1] = human[1] - y
小心这个! 只有当它完全等于0才会退出。
if human[1] <= 0: #Now
您不检查退出的变量菜单,而是检查人类[1]
while menu != 2: #instead of >>>while human[1] > 0:
当然,加入一些roguelike的开发比制作一个新的更好。