2016-02-12 85 views
0

我是Python和Pygame的新手。我想在pygame中有一個屏幕,並且獨立地移動相同圖像的多個副本。我試圖把它寫成一個類,然後在while循環內調用它的實例,但它不起作用。有人可以展示我如何使用class基本上做這樣的事情?Pygame獨立移動圖像在屏幕上

+1

示例 - 使用蝴蝶班的許多蝴蝶:http://pastebin.com/p2KAfsHH。它使用pygame.Surface,但它可以是圖像。 – furas

+0

謝謝你的例子。 '(event.pos)'在你的'event_handle'定義中做了什麼?我沒有在名爲'pos'的pygame中找到任何東西,這是從哪裏來的? – amirteymuri

+0

'事件'來自'事件'循環。不同的事件有不同的領域。鼠標事件有'event.pos' - 它是鼠標的位置。查看http://www.pygame.org/docs/ref/event.html上的所有字段(請參閱帶黃色背景的列表) – furas

回答

1

我試圖把一切都簡單

例子:

import pygame 
pygame.init() 

WHITE = (255,255,255) 
BLUE = (0,0,255) 
window_size = (400,400) 
screen = pygame.display.set_mode(window_size) 
clock = pygame.time.Clock() 

class Image(): 
    def __init__(self,x,y,xd,yd): 
     self.image = pygame.Surface((40,40)) 
     self.image.fill(BLUE) 
     self.x = x 
     self.y = y 
     self.x_delta = xd 
     self.y_delta = yd 
    def update(self): 
     if 0 <= self.x + self.x_delta <= 360: 
      self.x += self.x_delta 
     else: 
      self.x_delta *= -1 
     if 0 <= self.y + self.y_delta <= 360: 
      self.y += self.y_delta 
     else: 
      self.y_delta *= -1 
     screen.blit(self.image,(self.x,self.y)) 

list_of_images = [] 
list_of_images.append(Image(40,80,2,0)) 
list_of_images.append(Image(160,240,0,-2)) 

done = False 
while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done = True 
    screen.fill(WHITE) 
    for image in list_of_images: 
     image.update() 
    pygame.display.update() 
    clock.tick(30) 

pygame.quit() 

每個圖像都可以單獨從列表中通過簡單地改變Image.x/y以什麼叫搬到你想

+0

好!謝謝。 – amirteymuri