2016-11-25 26 views
0

私はコードのアンダーラインをテストし、テキストベースのゲームを作成する方法を学ぼうとしています。これは、私の攻撃フェーズのテキスト断片です。現在、私は36行目にデバッグしています。これは、menu = input( ">>>")がインデントされるべきであるというエラーが表示されます。なぜ私はそのエラーを受け取っているのですか?攻撃ベースのテキストベースの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!!!!!!!!!!") 

初期問題が解決した、私は私が1、2、または任意の他のキーストロークを入力して天気を現在のゲームは、まだプログラムされていない申し訳ありませんelse文にループしている、アドバイスに合わせてコードをパッチを適用しました。

+1

python2とpython3の両方を使用して多数のエラーが発生しますが、インデントはそれらの1つではありません。 – itdoesntwork

答えて

1

等号は、Pythonは、(Cなど)、0からカウントを開始し、ヒトおよびmoster

human = [2, 25, 5] 
monster = [1, 20, 2] 

に欠けている次いでモンスター[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: 

は確かに新しいものを作ることよりも、いくつかのローグライクゲームの開発に参加することをお勧めします。

+0

テキストベースのゲームを構築するための学習にかなりの量のコードを学習しました。私の開発に参加しても私には同じ経験が与えられませんでした。時々、ホイールを作り直すことに価値があります。 – Richard

+0

私はPython 3を実行していますが、私はコードに余分なスペースがありましたが、今はメニューを表示している間に入力を要求するlooopを実行していますが、else文を連続して実行しています。 。あなたの返事をありがとう –