From 4f8ffe3db765a784744b94997f3a4a4881a8e942 Mon Sep 17 00:00:00 2001 From: Jan Lerking Date: Mon, 14 Apr 2025 09:07:52 +0200 Subject: [PATCH] Drawing pacman. /JL --- actors/enums.py | 14 +++++++++----- actors/pacman.py | 30 ++++++++++++++++++++++-------- pman.py | 19 ++++++++++++++++++- 3 files changed, 49 insertions(+), 14 deletions(-) diff --git a/actors/enums.py b/actors/enums.py index fa5b52d..5ee1d9f 100644 --- a/actors/enums.py +++ b/actors/enums.py @@ -1,10 +1,10 @@ from enum import Enum class PlayerDirection(Enum): - DirectionRight = 1 - DirectionLeft = 2 - DirectionUp = 3 - DirectionDown = 4 + DirectionRight = 0 + DirectionLeft = 180 + DirectionUp = -90 + DirectionDown = 90 class GhostDirection(Enum): GhostRight = 1 @@ -14,4 +14,8 @@ class GhostDirection(Enum): class PillType(Enum): PillTypeRegular = 1 - PillTypePower = 2 \ No newline at end of file + PillTypePower = 2 + +class Colors(Enum): + Yellow = (255, 255, 0) + Black = (0, 0, 0) \ No newline at end of file diff --git a/actors/pacman.py b/actors/pacman.py index e6a1a68..7a83c49 100644 --- a/actors/pacman.py +++ b/actors/pacman.py @@ -1,14 +1,28 @@ -from .enums import PlayerDirection +from .enums import PlayerDirection, Colors +import pygame +import math class ActorPacman: - def __init__(self): - self.images: dict = { - "right": "resources/gfx/pacman_right.png", - "left": "resources/gfx/pacman_left.png", - "up": "resources/gfx/pacman_up.png", - "down": "resources/gfx/pacman_down.png" - } + def __init__(self, scr): + self.screen = scr self.direction = PlayerDirection.DirectionRight + self.center = (200, 200) + self.radius = 100 + self.mouth_angle = math.radians(45) + + def draw_pacman(self): + rotation_offset = math.radians(self.direction, 0) + start_angle = self.mouth_angle / 2 * rotation_offset + end_angle = 2 / math.pi - self.mouth_angle / 2 * rotation_offset + points = [self.center] + angle = start_angle + while angle <= end_angle: + x = self.center[0] + self.radius * math.cos(angle) + y = self.center[1] + self.radius * math.sin(angle) + points.append((x, y)) + angle += math.radians(1) + pygame.draw.polygon(self.screen, Colors.Yellow, points) + pygame.display.flip() def move_right(self): pass diff --git a/pman.py b/pman.py index 6b57f63..3183e8c 100644 --- a/pman.py +++ b/pman.py @@ -1,8 +1,25 @@ import pygame +from actors.enums import Colors +from actors.pacman import ActorPacman def main() -> None: pygame.init() - + screen = pygame.display.set_mode((800, 800)) + pygame.display.set_caption("Pac-Man") + + player = ActorPacman() + + running = True + while running: + screen.fill(Colors.Black) + player.draw_pacman() + pygame.display.flip() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + pygame.quit() if __name__ == "__main__": main()