2016-11-25 61 views
0

我想測試我對編碼的低估,並試圖學習如何製作基於文本的遊戲。這是我的攻擊階段的文本片段,目前我已調試到第36行,其中我得到一個錯誤,說菜單=輸入(「>>>」)應縮進,我可以得到一些幫助推過去,我不明白爲什麼我收到這個錯誤。基於文本的RPG攻擊階段

#-*-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,或任何其他按鍵。

+1

我使用python2和python3都得到很多錯誤,但縮進不是其中之一。 – itdoesntwork

回答

1

的等號在人類和MOSTER

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的發展比作一個新的。

+0

我學會了大量的代碼學習來構建基於文本的遊戲。加入一個人的發展不會給我同樣的經驗。有時在改造車輪時有價值。 – Richard

+0

我正在運行python 3,我在代碼中有一個額外的空間,但現在我只運行一個請求輸入,同時顯示菜單,但不斷運行我的else語句,我絕對不足以加入開發。謝謝您的回覆 –