Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- class Scene:
- def __init__(self, control):
- self.control = control
- def on_draw(self, surface):
- pass
- def on_event(self, event):
- pass
- def on_update(self, delta):
- pass
- class Control:
- def __init__(self, caption, size, flags=0, fps=60):
- pygame.display.set_caption(caption)
- self.display = pygame.display.set_mode(size, flags)
- self.rect = self.display.get_rect()
- self.clock = pygame.time.Clock()
- self.running = True
- self.delta = 0
- self.fps = fps
- self.scene = None
- def run(self, scene):
- self.scene = scene
- while self.running:
- for event in pygame.event.get():
- if event.type != pygame.QUIT:
- self.scene.on_event(event)
- else:
- self.running = False
- self.scene.on_update(self.delta)
- self.scene.on_draw(self.display)
- pygame.display.flip()
- self.delta = self.clock.tick(self.fps) / 1000
- class ImageHandler:
- def __init__(self):
- self.frog = self.create_frog((30, 26), 'lawngreen')
- def create_frog(self, size, color):
- rect = pygame.Rect((0, 0), size)
- points = rect.midright, rect.bottomleft, rect.topleft
- surface = pygame.Surface(size, pygame.SRCALPHA)
- surface.fill((0, 0, 0, 0))
- pygame.draw.polygon(surface, color, points)
- image_right = surface
- image_left = pygame.transform.rotate(surface, 180)
- image_up = pygame.transform.rotate(surface, 90)
- image_down = pygame.transform.rotate(surface, -90)
- return {
- pygame.K_RIGHT: image_right,
- pygame.K_d: image_right,
- pygame.K_LEFT: image_left,
- pygame.K_a: image_left,
- pygame.K_UP: image_up,
- pygame.K_w: image_up,
- pygame.K_DOWN: image_down,
- pygame.K_s: image_down
- }
- class Player:
- def __init__(self, frames, position, anchor):
- self.frames = frames
- self.image = frames[pygame.K_UP]
- self.rect = self.image.get_rect(**{anchor: position})
- def draw(self, surface):
- surface.blit(self.image, self.rect)
- def keydown(self, key):
- if key in self.frames:
- self.image = self.frames[key]
- self.rect = self.image.get_rect(center=self.rect.center)
- class Example(Scene):
- def __init__(self, control):
- super().__init__(control)
- self.image = ImageHandler()
- self.player = Player(self.image.frog, self.control.rect.center, 'center')
- def on_draw(self, surface):
- surface.fill('black')
- self.player.draw(surface)
- def on_event(self, event):
- if event.type == pygame.KEYDOWN:
- self.player.keydown(event.key)
- pygame.init()
- control = Control("Example", (800, 600))
- control.run(Example(control))
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement