2016-08-17 7 views
1

私は最初のpythonプロジェクトとして単純なテキストベースのトリビアゲームに取り組んでいます。スコアの上限に達すると私のプログラムは終了しません。スコアの上限に達すると、プログラムは終了しませんか?

def game(quest_list): 
    points = 0 
    score_limit = 20 

    x, y = info() 
    time.sleep(2) 

    if y >= 18 and y < 100: 
     time.sleep(1) 
     while points < score_limit: 
      random.choice(quest_list)(points) 
      time.sleep(2) 
      print("Current score:", points, "points") 
     print("You beat the game!") 
     quit() 
    ... 
+6

'points'は決してインクリメントされないので、ループは決して終了しません – FujiApple

答えて

2

変数が増加していないようです。このような何かはあなたの内側のループに働くかもしれない:

while points < score_limit: 
     points = random.choice(quest_list)(points) 
     time.sleep(2) 
     print("Current score:", points, "points") 

私はquest_listは関数のリストであることを仮定している、とあなたは、引数としてpoints値を渡していますか?この例を動作させるには、呼び出されたquest_listによって返された関数からポイントを返すことも必要です。おそらくクリーンな方法は、クエストによって生成されたポイントだけを返すことです。 pointsが変更可能なデータ構造がある場合を除き

 quest = random.choice(quest_list) 
     points += quest() 

は、それが値を変更しません。そして、あなたのような何かを行うことができます。詳しくはthis StackOverflow questionをご覧ください。

関連する問題