2017-09-01 32 views
0

私はpygameで簡単なゲームを作成しようとしています。現在、私は複数の「スター」オブジェクトを持っていて、それらを画面の下に移動させるよう取り組んでいます。ゲームループを実行するたびにクラスを上書きせずにクラスに "i1"を取らせるにはどうすればよいですか?pygame複数の移動オブジェクトを作成する

クラスコード:

class Stars(object): # ok, no way around classes now 
    def __init__(self, i, i1): 
     self.stars_speed = 2 
     self.stars_radius = 5 
     #self.stars_n = 5 
     self.color = white 
     self.i1 = i1 
     self.i = i 
    def draw(self): 
     pygame.draw.circle(gameDisplay, self.color, (self.i, self.i1),self.stars_radius) 
     print(self.i1) 
     #print(i1) 
     if self.i1 < display_height: 
      self.i1 = 200 
      print ("moving star") 
      print(self.i1) 
     else: 
      self.i1 = 0 
      self.i = random.randint(0,display_width) 
      print ("respawning star") 

答えて

0

あなたはこれをやっている理由は、私には明らかではない。

if self.i1 < display_height: 
    self.i1 = 200 

この部分は常に同じ場所でサークル滞在を行います。 質問で説明したタスクを実行する次のコードを記述しました。それがあなたを助けることを願っています。

import pygame 
import random 

display_width = 800 
display_height = 600 
radius = 10 
white = (255, 255, 255) 
black = (0, 0, 0) 

pygame.init() 
gameDisplay = pygame.display.set_mode((display_width, display_height)) 

def stars(x, y, color): 
    pygame.draw.circle(gameDisplay, color, [x, y], radius) 

def game_loop(): 
    circle_x = random.randint(radius, display_width - radius) 
    circle_y = -radius 
    while True: 
     circle_y += 5 
     if circle_y > display_height + radius: 
      circle_y = 0 - radius 
      circle_x = random.randint(0, display_width) 
    gameDisplay.fill(black) 
    stars(circle_x, circle_y, white) 
    pygame.display.update() 

game_loop() 
+0

ありがとうございます。私の問題は、複数のインスタンスを作成し、変数を適切に割り当てる方法を理解できていないことでした。私はあなたのソリューションから始め、自分のニーズに合わせてそれを拡張しました – Codebold

関連する問題