2016-09-25 5 views
0

私は基本的なゲームを作成しようとしていますが、私はPythonのプログラミングシーンにはかなり新しいです。私は、2つのクラス(プレイヤーと敵クラス)で、プレイヤーと敵の健康のようなクラス変数にアクセスしたい、またはその逆の問題に遭遇しました。これを行ういくつかの方法は何ですか?あるクラスから別のクラスに変数を渡す方法はありますか?

ここでは、より良い私が求めているものを強調するためのコードです:

class Player(object): 
     def __init__(self, image): 
      self.x = 100 
      self.y = 240 
      self.health = 30 
      self.defense = 25 
      self.image = image 
      self.black = (0, 0, 0) 
      self.draw() 

     def draw(self): 
      screen.blit(self.image, (self.x, self.y)) 
      line = pygame.draw.rect(screen, self.black, (80, 300, 100, 5)) 

     def attack(self): 
      pass 

    class Enemy(object): 
     def __init__(self, image): 
      self.x = 480 
      self.y = 240 
      self.health = 20 
      self.defense = 15 
      self.image = image 
      self.black = (0, 0, 0) 
      self.draw() 

     def draw(self): 
      screen.blit(self.image, (self.x, self.y)) 
      line = pygame.draw.rect(screen, self.black, (460, 300, 100, 5)) 

     def attack(self): 
      pass 

を基本的に、私は一つのクラスから「self.health」のようなものを取る、と簡単にアクセスする方法を理解していないが、他のクラスから。私は戻りメソッドなどを使用するいくつかのメソッドを試してみましたが、これを行う簡単な方法があれば私は興味があります。ヘルプは高く評価されています!

+0

これらは「クラス変数」ではありません。あなたのタイトルは間違いです。 "別のクラスの変数"はOKです。 – zvone

+0

これらのクラスのインスタンスを作成し、パブリック(編集の対象にする)か、またはそれらをカプセル化して外部スコープに変更しないprivateにする必要があります。それらがプライベートである場合、それらの値を返すメソッドが必要です。 –

+0

通常、ゲーム全体を処理するオブジェクトがあります。それを「ゲーム」と呼んでみましょう。それは 'self.player = Player()'と 'self.enemy = Enemy()'にアクセスするでしょう。それでは簡単です... 'game.enemy.health' – zvone

答えて

0

このコードはクラスを作成し、特別な__init__メソッドでは、さまざまなメンバー変数に値を割り当てます。

class Player(object): 
    def __init__(self, image): 
     self.x = 100 
     self.y = 240 
     self.health = 30 
     self.defense = 25 
     self.image = image 
     self.black = (0, 0, 0) 
     self.draw() 

これらのメンバ変数は、Pythonで性質と呼ばれています。あなたはプレーヤーインスタンスへの参照(プレイヤークラスのインスタンス)がある場合:

p = Player() 

をあなたは、プロパティをあなたが好きなすべてにアクセスすることができます。

print(p.health) 

おそらく、あなたはメインループ」のいくつかの種類を必要としますプレイヤーや敵にアクセスできるコントローラークラスであり、それに応じてプロパティを設定することができます:

class MainLoop(object): 

    def __init__(self): 
    self.player_1 = Player() 
    self.enemy_1 = Enemy() 

    def run(self): 
    if fight(): # fight() is some function of your game 
     self.player_1.health -= 10 
     self.enemy_1.health -= 20 
関連する問題