diff --git a/actors/enums.py b/actors/enums.py new file mode 100644 index 0000000..5ee1d9f --- /dev/null +++ b/actors/enums.py @@ -0,0 +1,21 @@ +from enum import Enum + +class PlayerDirection(Enum): + DirectionRight = 0 + DirectionLeft = 180 + DirectionUp = -90 + DirectionDown = 90 + +class GhostDirection(Enum): + GhostRight = 1 + GhostLeft = 2 + GhostUp = 3 + GhostDown = 4 + +class PillType(Enum): + PillTypeRegular = 1 + PillTypePower = 2 + +class Colors(Enum): + Yellow = (255, 255, 0) + Black = (0, 0, 0) \ No newline at end of file diff --git a/actors/ghost.py b/actors/ghost.py new file mode 100644 index 0000000..7775768 --- /dev/null +++ b/actors/ghost.py @@ -0,0 +1,5 @@ +from .enums import GhostDirection + +class ActorGhost: + def __init__(self): + pass \ No newline at end of file diff --git a/actors/pacman.py b/actors/pacman.py new file mode 100644 index 0000000..7a83c49 --- /dev/null +++ b/actors/pacman.py @@ -0,0 +1,31 @@ +from .enums import PlayerDirection, Colors +import pygame +import math + +class ActorPacman: + 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 + + def set_direction(self, dir: PlayerDirection): + self.direction = dir \ No newline at end of file diff --git a/actors/pill.py b/actors/pill.py new file mode 100644 index 0000000..a26edcc --- /dev/null +++ b/actors/pill.py @@ -0,0 +1,5 @@ +from .enums import PillType + +class Pill: + def __init__(self, typ: PillType): + self.pilltype = typ \ No newline at end of file diff --git a/actors/wall.py b/actors/wall.py new file mode 100644 index 0000000..0f966f4 --- /dev/null +++ b/actors/wall.py @@ -0,0 +1,8 @@ +""" +Class representing a pivoting wall. +Only Pacman can make a wall pivot. +""" + +class WallPivot: + def __init__(self): + pass \ No newline at end of file diff --git a/pman.py b/pman.py new file mode 100644 index 0000000..3183e8c --- /dev/null +++ b/pman.py @@ -0,0 +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()