2017-02-17 13 views
0

私はDawsonのPythonを学んでいます。プログラミングは絶対初心者向けで、第5章の割り当てを試してロールプレイヒーローに割り当てます。 30ポイントがありますが、これまでのコードはうまくいきましたが、30ポイントがすべて0になると消えます。私のミニロールプレイコードに有限属性ポイントを割り当てるにはどうすればいいですか

すべてのポイントを使っているときにこのプログラムを停止する方法を教えてください。

以下のコード:

points = 30 


Att = [["Strength", 0] , ["Health" , 0] , ["Wisdom" , 0] , ["Dexterity" , 0]] 

    choice = "" 

    while choice != "0": 

      print ("\nYou have" , points , "points remaining") 

      print (""" 

0 - Exit 
1 - Show Stats 
2 - Assign Strength 
3 - Assign Health 
4 - Assign Wisdom 
5 - Assign Dexterity 

""") 

      choice = input("\n\nChoice: ") 

     if choice == "1": 

     print ("\n") 
     print (Att [0][0] , Att [0][1]) 
     print (Att [1][0] , Att [1][1]) 
     print (Att [2][0] , Att [2][1]) 
     print (Att [3][0] , Att [3][1]) 


     elif choice == "2": 

      s = int(input("\nAdd points to Strength: ")) 

      Att [0][1] = Att [0][1] + s 

      points = points - s 

     elif choice == "3": 

      h = int(input("\nAdd points to Health: ")) 

      Att [1][1] = Att [1][1] + h 

      points = points - h 

     elif choice == "4": 

      w = int(input("\nAdd points to Wisdom: ")) 

      Att [2][1] += w 

      points -= w 

     elif choice == "5": 

      d = int(input("\nAdd points to Dexterity: ")) 

      Att [3][1] += d 

      points -= d 

     elif choice == "0": 


      input("Press enter if sure you have finished: ") 
+1

'choice!=" 0 "とポイント> 0:' –

答えて

0

すべてのポイントが費やされているとき、あなたはちょうどあなたのwhileループとユーザーに通知ループの本体への条件にチェックを追加することができます。

points = 30 


Att = [["Strength", 0] , ["Health" , 0] , ["Wisdom" , 0] , ["Dexterity" , 0]] 

    choice = "" 

    while choice != "0" and points > 0: 

      print ("\nYou have" , points , "points remaining") 


     # ... 
     # (code same as in question) 


     elif choice == "0": 


      input("Press enter if sure you have finished: ") 

     # If points have gone below 0, notify user 
     if points <= 0: 

      print("You ran out of points!") 
0

ユーザが0ポイントの割り当てを残している場合は、選択肢3、4、5を無効にする必要があります。だから、ifの条件をそれぞれの3つの下に追加して、ユーザーがより多くのポイントを割り当てることができるかどうかを確認することができます。例:

elif choice == "2": 
    if points > 0: # Check if the player actually has the points to spend... 
     s = int(input("\nAdd points to Strength: ")) 
     if s > points: # Don't let the user allocate more points than he has left 
      s = points 
     Att [0][1] = Att [0][1] + s 
     points = points - s 
    else: 
     print("No more points to allocate!") # Your error message of choice 

他の統計割り当ての選択肢に似ている必要があります。必要に応じて、外側のwhileループに1つの条件を追加してコードの量を減らすこともできますが、ポイントがゼロになると統計情報(オプション1)を表示することはできません。

+0

優秀..ありがとう!あなたは余分なループを追加するとすぐにあなたのすべてのタブをインデントするためにとにかくありますか? – Devon

+0

スタックオーバーフローまたはIDEで?スペースとタブの間であなたのIDEがあなたのためにインデントする必要があります。もしスタックオーバフローの場合、各インデントレベルでスペースキーを大量にコピーするかコピーし、過去4つのスペースをスラムします。 – PrestonH

関連する問題