Пример #1
0
class PandaView:

    def __init__(self, image, width, height):
        self.__width = width
        self.__height = height
        self.__image = image
        self.__panda_sprite = AnimatedSprite(self.__slice_sprite(), 4)

    def get_image(self, time):
        self.__panda_sprite.update(time)
        return self.__panda_sprite.image

    def change_state(self, image):
        self.__image = image
        self.__panda_sprite.change_images(self.__slice_sprite())

    def __slice_sprite(self):
        images = []

        master_width, master_height = self.__image.get_size()
        for i in range(int(master_width/self.__width)):
            image = self.__image.subsurface((i*self.__width, 0,
                                             self.__width, self.__height))
            images.append(image)
        return images
Пример #2
0
class Game:
    def __init__(self, size):
        pygame.init()
        pygame.key.set_repeat(200, 5)
        
        self.screen = pygame.display.set_mode(size)
        
        guy_image = pygame.image.load("data/images/guy.png")
        guy_image = guy_image.convert()
        self.guy = AnimatedSprite([0, 0], guy_image, 3, 4, 10)
        self.guy_idle = self.guy.create_animation([0, 1, 2, 3, 3, 2, 1, 0])
        self.guy_waving = self.guy.create_animation([7, 8, 9, 10, 11, 11, 10, 9, 8, 7])
        
        self.guy.set_animation(self.guy_idle)
        
        world_image = pygame.image.load("data/images/world.png")
        world_image = world_image.convert()
        self.world = World([200, 200], world_image)
        
        self.running = True
        
    def main_loop(self):
        while self.running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.running = False
                elif event.type == pygame.KEYDOWN:
                    self.key_handler(event.key)
            
            if distance(self.guy, self.world) < 140:
                if self.guy.animation != self.guy_waving:
                    self.guy.set_animation(self.guy_waving)
            else:
                if self.guy.animation != self.guy_idle:
                    self.guy.set_animation(self.guy_idle)
            
            self.guy.update()
            self.screen.blit(self.world.image, self.world.rect)
            self.screen.blit(self.guy.image, self.guy.rect)
            pygame.display.flip()

    def key_handler(self, key):
        if (key == pygame.K_DOWN
        or key == pygame.K_UP
        or key == pygame.K_LEFT
        or key == pygame.K_RIGHT):
            self.world.move(key)
            self.screen.fill((0, 0, 0))