2

python/pygame でプログラミングしているゲームでスコアを設定しようとしています。

私のスコアは、次のような場合に機能します。

global score 
score = 0

擬似:

if player_rect.coliderect(baddie_rect):
      score +=1

次に、スコアを画面に表示します。

しかし、このスコアを別のクラスの関数で使用したいと考えています。その関数がメイン クラスで呼び出される場所。

それで

衝突関数では、プレーヤー クラスにあるスコアをインクリメントしたいと思います。メインクラスでスコアを印刷したいと思います。短縮コードを使用して、次のようなものがあります。

class player:
   .
   .
   .
   global score 
   score = 0
   def __init(self):
       self.score=0
   def get_score(self):
       return self.score
   def set_score(self, score):
       self.score = score
   def collision():
      .
      .
      if player_rect.coliderect(baddie_rect):
           self.score +=1

衝突が発生したときにスコアを取得しようとすると:

class main():
    player = player()
    player.colision()
    print player.get_score()

何も起こりません。スコアは増加しません。

助言がありますか?

4

3 に答える 3

6
class Player:
   def __init(self):
       self.score=0
   def collision():
      if player_rect.coliderect(baddie_rect):
           self.score +=1


class main():
    player = Player()
    player.collision()
    print(player.score)

ここではグローバルは必要ありません。Python では、ゲッターやセッターはほとんど必要ありません。インスタンス属性scoreに直接アクセスまたは設定するだけです。self.scoreより複雑な操作を実行する必要がある場合は、それをプロパティにすることができます。これにより、構文を変更せずにゲッター/セッターのような動作を定義できます。

于 2013-10-29T12:51:58.843 に答える