This repository has been archived on 2019-12-09. You can view files and clone it, but cannot push or open issues or pull requests.
pacman2/scenes/game_objects/pacman.py
2019-12-09 12:36:42 +01:00

81 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from pygame import Surface, draw, Rect, key, image, transform
from pygame.locals import K_UP, K_DOWN, K_LEFT, K_RIGHT
from engine.entity import Entity
from engine.game import Game
from engine.resources import res
from engine.components.collide_rect import CollideRect
from engine.components.sprite import Sprite
from .common import S
class PacMan(Entity):
SIZE = 1
SPEED = 2
def __init__(self, x, y):
super().__init__('pacman')
# surf = Surface((S//PacMan.SIZE, S//PacMan.SIZE)).convert()
# surf.fill((0, 0, 0))
# draw.circle(surf,
# (255, 255, 0),
# (S//(2*PacMan.SIZE), S//(2*PacMan.SIZE)),
# S//(2*PacMan.SIZE))
surf_1 = image.load(res('pacman_1.png')).convert()
surf_2 = image.load(res('pacman_2.png')).convert()
self.surf = [[transform.rotate(surf_1, 90),
transform.rotate(surf_1, -90),
transform.flip(surf_1, True, False),
surf_1],
[transform.rotate(surf_2, 90),
transform.rotate(surf_2, -90),
transform.flip(surf_2, True, False),
surf_2]]
self.cur_anim = 0
self.sprite = self.add(Sprite(self.surf[self.cur_anim][0], 2))
self.phys = self.add(
CollideRect(Rect(self.x, self.y,
self.sprite.width, self.sprite.width),
static=False))
self.script = PacMan.update
self.x = x
self.y = y
def update(self):
p = self.phys
s = self.sprite
# Avance lanimation
if Game.cur_tick % 5 == 0:
self.cur_anim += 1
self.cur_anim %= 2
# Nouvelle sprite
if p.vy < 0:
s.surf = self.surf[self.cur_anim][0]
elif p.vy > 0:
s.surf = self.surf[self.cur_anim][1]
elif p.vx < 0:
s.surf = self.surf[self.cur_anim][2]
elif p.vx > 0:
s.surf = self.surf[self.cur_anim][3]
inputs = key.get_pressed()
if PacMan.SIZE > 1:
p.vx = 0
p.vy = 0
if inputs[K_UP]:
p.vy = -PacMan.SPEED
if inputs[K_DOWN]:
p.vy = PacMan.SPEED
if inputs[K_LEFT]:
p.vx = -PacMan.SPEED
if inputs[K_RIGHT]:
p.vx = PacMan.SPEED