2016-09-23 2 views
0

私は、ゲームのSnakeeyesのバージョンを作成しようとしています。これは、プログラムの最初にnを取ります.nはプレーヤーの数です。しかし、私はそれがPythonの作品とどのクラス(など)は、これを高速化するために使用することができる方法であるため、私の認識の甘さで動作させることはできませんクラスデータを配列に格納し、必要に応じてこのデータを呼び出すにはどうすればよいですか?

import random 


def rollDice(): 
    dice = random.randint(1, 6) 
    print "You rolled a", dice 
    return dice 


def addUser(name): 
    name = player() 
    print name, "is a player" 


class player(): 
    score = 0 
    players = [] 
    def __init__(self): 
     score = 0 
     player.score = score 


    def addScore(self, dice1, dice2): 
     if dice1 == 1 or dice2 == 1: 
      player.score = 0 
      if dice1 == 1 and dice2 == 1: 
       print "SNAKE EYES" 
     else: 
      player.score += dice1 
      player.score += dice2 
     return player.score 


    def dispScore(self): 
     return player.score 



numbp = int(input("Please enter number of players \n")) 
plyarr = dict() 
for x in range(numbp): 
    plyarr[x] = player() 
    plyarr[x].addScore(rollDice(),rollDice()) 

for x in range(numbp): 
    print plyarr[x].score 


はこれまでのところ、私ははるかにこれを取得するために管理していますプログラミングの一種。主な問題は、辞書内の同じ場所を上書きすることです(辞書を使用する場合)。

+0

は、[OK]を、あなたが変数と呼ばれるプレーヤーを使用している次のようにあなたがそれを行うことができ

numbp = int(input("Please enter number of players \n")) plyarr = dict() for x in range(numbp): current_player = player() current_player.addScore(rollDice(),rollDice()) playarr[x] = current_player 

そして最後に、あなたのプレイヤーのスコアを表示する(元のコードに小さな変更をしました)あなたのクラスで。このクラスでは定義されていません。そしてあなたはプレイヤーリストをどこで使用しますか? –

+0

その変数は、クラスをループで使用する前の試みの残りの部分です。私はdispScore()メソッドの後にプレイヤーリストを使用しますが、それ以降は何もしません。私はそれまでのforループを持っていましたが、これはnまでxを繰り返して、そのクラスをプレイヤーにコールします。[x] – bkoohy

+0

私の答えにあなたのプレーヤークラスを書きました。このクラスがあなたの意図どおりに機能するかどうかを確認できますか? (私はゲームに精通していません) –

答えて

0

が書かれたプレイヤーのクラス再:あなたのコメントから

class player(): 
    def __init__(self): 
     self.score = 0 
     self.players = [] 


    def addScore(self, dice1, dice2): 
     if dice1 == 1 or dice2 == 1: 
      player.score = 0 
      if dice1 == 1 and dice2 == 1: 
       print "SNAKE EYES" 
     else: 
      self.score += dice1 
      self.score += dice2 

     return self.score 


    def dispScore(self): 
     return self.score 

    def __str__(self): 
     return '<a description of the current object>' 

を、私はあなたが辞書に選手を格納する方法についてinquringていると仮定します。最初のオフ、

for player_id, player in plyarr.items(): 
    print player.dispScore() 
+0

これは完璧です、ありがとう、しかしこれは私の問題を解決しません(申し訳ありません、私の最後のコミュニケーションが悪いです)。クラス情報を保持する変数として配列(list/dict)を使用するにはどうすればよいですか? – bkoohy

+0

現在のクラスにある情報を辞書やリストに保存しますか?その場合、クラスは使用されませんか?クラス内のオブジェクトをリストまたはdictに格納したいのですか? –

+0

リストまたは辞書をサイズn(ユーザーが選択)で宣言し、forループを使用して循環させ、list/dictを使用してクラスを編成します(プログラムがループを使用してデータを取得できるようにします)。これは可能ですか? – bkoohy

関連する問題