Drawing pacman. /JL

This commit is contained in:
Jan Lerking
2025-04-14 09:07:52 +02:00
parent 63b0d702ff
commit 4f8ffe3db7
3 changed files with 49 additions and 14 deletions

View File

@@ -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
@@ -15,3 +15,7 @@ class GhostDirection(Enum):
class PillType(Enum):
PillTypeRegular = 1
PillTypePower = 2
class Colors(Enum):
Yellow = (255, 255, 0)
Black = (0, 0, 0)

View File

@@ -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

17
pman.py
View File

@@ -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()