2016-02-12 2 views
0

Я новичок в Python и Pygame. Я хочу иметь экран в pygame с несколькими копиями одних и тех же изображений, перемещающихся независимо. Я попытался написать его как класс, а затем вызвать его экземпляры внутри цикла while, но он не работает. Может ли кто-нибудь показать, как я могу в принципе сделать такую ​​вещь, используя class?Pygame независимых движущихся изображений на экране

+1

пример - много бабочек с использованием класса Butterfly: http://pastebin.com/p2KAfsHH. Он использует pygame.Surface, но это может быть изображение. – furas

+0

спасибо, например. Что делает '(event.pos)' в определении 'event_handle'? Я не могу найти ничего в pygame с именем 'pos', откуда это происходит? – amirteymuri

+0

'событие' происходит из цикла' for event'. Различные события имеют разные поля. Событие мыши имеет событие '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/у все, что вы хотите

+0

Nice! Спасибо. – amirteymuri

Смежные вопросы