21
actors/enums.py
Normal file
21
actors/enums.py
Normal file
@@ -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)
|
5
actors/ghost.py
Normal file
5
actors/ghost.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from .enums import GhostDirection
|
||||
|
||||
class ActorGhost:
|
||||
def __init__(self):
|
||||
pass
|
31
actors/pacman.py
Normal file
31
actors/pacman.py
Normal file
@@ -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
|
5
actors/pill.py
Normal file
5
actors/pill.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from .enums import PillType
|
||||
|
||||
class Pill:
|
||||
def __init__(self, typ: PillType):
|
||||
self.pilltype = typ
|
8
actors/wall.py
Normal file
8
actors/wall.py
Normal file
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
Class representing a pivoting wall.
|
||||
Only Pacman can make a wall pivot.
|
||||
"""
|
||||
|
||||
class WallPivot:
|
||||
def __init__(self):
|
||||
pass
|
25
pman.py
Normal file
25
pman.py
Normal file
@@ -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()
|
Reference in New Issue
Block a user