2017-09-01 78 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