2017-12-09 6 views
0

より具体的には、カエルとヒキガエルのゲームをコーディングしようとしています。しかし、コードのほとんどは、ユーザーがゲームに勝ったときにPythonが表示されるようには見えません。追加情報をお気軽にお尋ねください。lillypadで勝ったゲームに関するコードは動作していないようです

frogandtoad= ['f','f','f',' ', 't','t','t'] 

def game_won(): 
    for i in range(0,3):    
     if frogandtoad[i] =='f':    
      frog = True 
     if frogandtoad[i]=='t': 
      toad = True 
    if frog == True and toad == True:   
     return True 

def playgame(frogandtoad): 

    print("From: ") 
    from_pos = int(input()) - 1 
    print("To: ") 
    to_pos = int(input())-1      #Bring in valid_move 
    valid = valid_move(frogandtoad, from_pos, to_pos)  
    if valid:          
     value = frogandtoad[from_pos] 
     frogandtoad[to_pos] = value 
     frogandtoad[from_pos] = ' ' 
     print("frogandtoad panel", frogandtoad) 
    else: 
     print("Invalid Move, Look at rules under demonstration!") 

    if game_won(): 
      print("you won") 
      exit_game() 
+0

game_wonからFalseを返さない – quamrana

答えて

1

frog == True and toad == TrueがFalseのとき、game_won()では、これらの変数の1つが未定義になります(例外が発生するため)。それらが既にグローバルスコープで定義されている場合を除きます。

game_oneのための私の考察は()である:

def game_won(): 
    result = [False, False] 
    for i in range(0,3): 
     if frogandtoad[i] =='f': 
      result[0] = True 
     elif frogandtoad[i]=='t': 
      result[1] = True 
    return all(result) 

変数resultはカエルとヒキガエル状況について虚偽とFalseで定義されています。 all(result)をTrueにするには、両方の項目がTrueでなければならず、Trueが返されます。そうでない場合はFalseが返されます。

編集:コードvalid = Trueを持っていたので、私はvalid_move()を持っていないと書いてありましたが、私はexit_game()とコメントしました。

+0

前のコメントは無視してください。範囲を変更し、完全に働いた。助けてくれてありがとう、非常に感謝! @michael_heath – Radar

2

if game_won==True:おそらくあなたが実際にコール機能game_wonに必要if game_won()==True:

でなければなりません。

What does it mean to "call" a function in Python?


@quamranaが指摘するようにまた、if/whileステートメントに対して、Python的な方法は、if condition代わりにif condition == Trueを書き込むことです。

+1

またはgame_won(): – quamrana

+0

私の間違いが投稿を更新して申し訳ありませんが、コードはまだ動作しないようです。 @サム – Radar

+0

もっとコードを投稿できますか?例えば、あなたの 'frogandtoad'変数が何であるか、プログラムをどのように実行しているかを知る必要があります。 – sam

関連する問題