diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-04-19 02:09:53 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-04-19 02:09:53 +0200 |
| commit | 6c43e3b3ab77ec0c3c57763178723a50e4dcac52 (patch) | |
| tree | cbd4ce1a6ce900c1178c25f2dc6760e637aea71c | |
| parent | 5cb37cd7aac7fab72b04061de6dfd5f2f5f254fa (diff) | |
| download | Macpan-6c43e3b3ab77ec0c3c57763178723a50e4dcac52.tar.xz Macpan-6c43e3b3ab77ec0c3c57763178723a50e4dcac52.zip | |
Added the ghost sprites to the game.
| -rw-r--r-- | assets/Ghosts.png | bin | 0 -> 9508 bytes | |||
| -rw-r--r-- | assets/blinky.png | bin | 0 -> 4397 bytes | |||
| -rw-r--r-- | assets/clyde.png | bin | 0 -> 2961 bytes | |||
| -rw-r--r-- | assets/inky.png | bin | 0 -> 2905 bytes | |||
| -rw-r--r-- | assets/pinky.png | bin | 0 -> 2911 bytes | |||
| -rw-r--r-- | assets/sfx/credit.wav | bin | 0 -> 19216 bytes | |||
| -rw-r--r-- | assets/sfx/death_1.wav | bin | 0 -> 245924 bytes | |||
| -rw-r--r-- | assets/sfx/death_2.wav | bin | 0 -> 16742 bytes | |||
| -rw-r--r-- | assets/sfx/eat_fruit.wav | bin | 0 -> 35048 bytes | |||
| -rw-r--r-- | assets/sfx/eat_ghost.wav | bin | 0 -> 47050 bytes | |||
| -rw-r--r-- | assets/sfx/extend.wav | bin | 0 -> 175734 bytes | |||
| -rw-r--r-- | assets/sfx/game_start.wav | bin | 0 -> 373024 bytes | |||
| -rw-r--r-- | assets/sfx/intermission.wav | bin | 0 -> 458058 bytes | |||
| -rw-r--r-- | assets/sfx/munch_1.wav | bin | 0 -> 7470 bytes | |||
| -rw-r--r-- | assets/sfx/munch_2.wav | bin | 0 -> 6972 bytes | |||
| -rw-r--r-- | assets/sfx/power_pellet.wav | bin | 0 -> 185926 bytes | |||
| -rw-r--r-- | assets/sfx/retreating.wav | bin | 0 -> 181808 bytes | |||
| -rw-r--r-- | assets/sfx/siren_1.wav | bin | 0 -> 141106 bytes | |||
| -rw-r--r-- | assets/sfx/siren_2.wav | bin | 0 -> 156842 bytes | |||
| -rw-r--r-- | assets/sfx/siren_3.wav | bin | 0 -> 175436 bytes | |||
| -rw-r--r-- | assets/sfx/siren_4.wav | bin | 0 -> 157066 bytes | |||
| -rw-r--r-- | assets/sfx/siren_5.wav | bin | 0 -> 164808 bytes | |||
| -rw-r--r-- | src/Game.py | 47 | ||||
| -rw-r--r-- | src/Ghost.py | 10 | ||||
| -rw-r--r-- | src/Player.py | 26 | ||||
| -rw-r--r-- | src/blinky.py | 4 | ||||
| -rw-r--r-- | src/clyde.py | 9 | ||||
| -rw-r--r-- | src/inky.py | 9 | ||||
| -rw-r--r-- | src/pinky.png | bin | 0 -> 2911 bytes | |||
| -rw-r--r-- | src/pinky.py | 5 | ||||
| -rw-r--r-- | src/util.py | 28 |
31 files changed, 90 insertions, 48 deletions
diff --git a/assets/Ghosts.png b/assets/Ghosts.png Binary files differnew file mode 100644 index 0000000..e24f633 --- /dev/null +++ b/assets/Ghosts.png diff --git a/assets/blinky.png b/assets/blinky.png Binary files differnew file mode 100644 index 0000000..f5dd19d --- /dev/null +++ b/assets/blinky.png diff --git a/assets/clyde.png b/assets/clyde.png Binary files differnew file mode 100644 index 0000000..fd91705 --- /dev/null +++ b/assets/clyde.png diff --git a/assets/inky.png b/assets/inky.png Binary files differnew file mode 100644 index 0000000..ad634c6 --- /dev/null +++ b/assets/inky.png diff --git a/assets/pinky.png b/assets/pinky.png Binary files differnew file mode 100644 index 0000000..59661ee --- /dev/null +++ b/assets/pinky.png diff --git a/assets/sfx/credit.wav b/assets/sfx/credit.wav Binary files differnew file mode 100644 index 0000000..0b557d3 --- /dev/null +++ b/assets/sfx/credit.wav diff --git a/assets/sfx/death_1.wav b/assets/sfx/death_1.wav Binary files differnew file mode 100644 index 0000000..47f21ac --- /dev/null +++ b/assets/sfx/death_1.wav diff --git a/assets/sfx/death_2.wav b/assets/sfx/death_2.wav Binary files differnew file mode 100644 index 0000000..b8e2c1c --- /dev/null +++ b/assets/sfx/death_2.wav diff --git a/assets/sfx/eat_fruit.wav b/assets/sfx/eat_fruit.wav Binary files differnew file mode 100644 index 0000000..0d3a7af --- /dev/null +++ b/assets/sfx/eat_fruit.wav diff --git a/assets/sfx/eat_ghost.wav b/assets/sfx/eat_ghost.wav Binary files differnew file mode 100644 index 0000000..30ae4a3 --- /dev/null +++ b/assets/sfx/eat_ghost.wav diff --git a/assets/sfx/extend.wav b/assets/sfx/extend.wav Binary files differnew file mode 100644 index 0000000..42fdf30 --- /dev/null +++ b/assets/sfx/extend.wav diff --git a/assets/sfx/game_start.wav b/assets/sfx/game_start.wav Binary files differnew file mode 100644 index 0000000..5a44df0 --- /dev/null +++ b/assets/sfx/game_start.wav diff --git a/assets/sfx/intermission.wav b/assets/sfx/intermission.wav Binary files differnew file mode 100644 index 0000000..73f60d6 --- /dev/null +++ b/assets/sfx/intermission.wav diff --git a/assets/sfx/munch_1.wav b/assets/sfx/munch_1.wav Binary files differnew file mode 100644 index 0000000..d3a8009 --- /dev/null +++ b/assets/sfx/munch_1.wav diff --git a/assets/sfx/munch_2.wav b/assets/sfx/munch_2.wav Binary files differnew file mode 100644 index 0000000..f47f302 --- /dev/null +++ b/assets/sfx/munch_2.wav diff --git a/assets/sfx/power_pellet.wav b/assets/sfx/power_pellet.wav Binary files differnew file mode 100644 index 0000000..bed8e58 --- /dev/null +++ b/assets/sfx/power_pellet.wav diff --git a/assets/sfx/retreating.wav b/assets/sfx/retreating.wav Binary files differnew file mode 100644 index 0000000..14c740d --- /dev/null +++ b/assets/sfx/retreating.wav diff --git a/assets/sfx/siren_1.wav b/assets/sfx/siren_1.wav Binary files differnew file mode 100644 index 0000000..7875d47 --- /dev/null +++ b/assets/sfx/siren_1.wav diff --git a/assets/sfx/siren_2.wav b/assets/sfx/siren_2.wav Binary files differnew file mode 100644 index 0000000..5cbc996 --- /dev/null +++ b/assets/sfx/siren_2.wav diff --git a/assets/sfx/siren_3.wav b/assets/sfx/siren_3.wav Binary files differnew file mode 100644 index 0000000..5b1988e --- /dev/null +++ b/assets/sfx/siren_3.wav diff --git a/assets/sfx/siren_4.wav b/assets/sfx/siren_4.wav Binary files differnew file mode 100644 index 0000000..2d027c0 --- /dev/null +++ b/assets/sfx/siren_4.wav diff --git a/assets/sfx/siren_5.wav b/assets/sfx/siren_5.wav Binary files differnew file mode 100644 index 0000000..5f6f37f --- /dev/null +++ b/assets/sfx/siren_5.wav diff --git a/src/Game.py b/src/Game.py index 0ba8c79..0d517a1 100644 --- a/src/Game.py +++ b/src/Game.py @@ -1,13 +1,12 @@ -from pygame.mouse import get_pressed import Player -import Ghost from pinky import Pinky from blinky import Blinky +from inky import Inky +from clyde import Clyde from Direction import DIRECTION import settings as Settings import map as Map import pygame -import math class Game(): @@ -25,12 +24,20 @@ class Game(): # Sprite sheet for pacman sprite_sheet = pygame.image.load( '../assets/pacman_left_sprite.png').convert_alpha() + blinky_sprite = pygame.image.load( + '../assets/blinky.png').convert_alpha() + pinky_sprite = pygame.image.load( + '../assets/pinky.png').convert_alpha() + clyde_sprite = pygame.image.load( + '../assets/clyde.png').convert_alpha() + inky_sprite = pygame.image.load( + '../assets/inky.png').convert_alpha() player = Player.Player(sprite_sheet) - blinky = Blinky(75, 75) - pinky = Pinky(27 * 30, 30 * 30 + 15) - inky = Ghost.Ghost("orange", 75, 30 * 30 + 15) - clyde = Ghost.Ghost("cyan", 27 * 30 + 15, 75) + blinky = Blinky(blinky_sprite,75, 75) + pinky = Pinky(pinky_sprite, 27 * 30, 30 * 30 + 15) + inky = Inky(inky_sprite, 75, 30 * 30 + 15) + clyde = Clyde(clyde_sprite, 27 * 30 + 15, 75) # Set the pacman velocity dx = 0 @@ -48,7 +55,6 @@ class Game(): grid_x = Settings.settings.width // len(maze.maze[0]) grid_y = Settings.settings.height // len(maze.maze) - print(grid_x, grid_y) # Checks collision with walls @@ -59,6 +65,8 @@ class Game(): is_free = maze.maze[y][x] == 0 if is_dot or is_big_dot: maze.maze[y][x] = 0 + # munch_sound.play(1, fade_ms=1) + return (is_dot or is_free or is_big_dot) @@ -77,13 +85,21 @@ class Game(): return True - # Main game loop + pygame.mixer.music.load('../assets/sfx/game_start.wav') + siren_sound = pygame.mixer.Sound('../assets/sfx/siren_1.wav') + munch_sound = pygame.mixer.Sound('../assets/sfx/munch_1.wav') + + pygame.mixer.music.play() + siren_sound.play(-1) running = True + # Main game loop while running: # setting game fps clock.tick(Settings.settings.fps) + + # counter logic for cycling between pacman different sprites if counter < 19: counter += 1 @@ -102,6 +118,7 @@ class Game(): running = False elif event.type == pygame.KEYDOWN: # Move the circle based on the pressed key + # if not pygame.mixer.get_busy(): if event.key == pygame.K_w: player.direction = DIRECTION.UP ty = -player.speed @@ -120,6 +137,7 @@ class Game(): ty = 0 # Necssarry to move only horizontal or vertical keys = pygame.key.get_pressed() + # if not pygame.mixer.get_busy(): if keys[pygame.K_w]: ty = -player.speed tx = 0 @@ -156,14 +174,17 @@ class Game(): blinky.move(maze.maze, player) pinky.move(maze.maze, player) - # inky.move(maze.maze, player) - # clyde.move(maze.maze, player) + inky.move(maze.maze, player) + clyde.move(maze.maze, player) + maze.draw_map(screen) + player.draw(screen, counter) blinky.draw(screen) pinky.draw(screen) - # inky.draw(screen) - # clyde.draw(screen) + inky.draw(screen) + clyde.draw(screen) + # Update the screen pygame.display.flip() diff --git a/src/Ghost.py b/src/Ghost.py index 17f5ed0..a26de62 100644 --- a/src/Ghost.py +++ b/src/Ghost.py @@ -1,12 +1,14 @@ import pygame import math +from util import get_sprites from Direction import DIRECTION import map as Map class Ghost(): - def __init__(self, color, x, y): + def __init__(self,sprite_sheet, color, x, y): self.x = x self.y = y + self.sprite = get_sprites(sprite_sheet) self.color = color self.last_move = 3 self.speed = 3 @@ -82,7 +84,5 @@ class Ghost(): def draw(self, screen): radius = 30 // 2 - pos = (self.x , self.y) - pygame.draw.circle(screen, self.color, pos, radius) - - + pos = (self.x - radius , self.y - radius) + screen.blit(self.sprite[0], pos) diff --git a/src/Player.py b/src/Player.py index 430a974..21c1f7e 100644 --- a/src/Player.py +++ b/src/Player.py @@ -1,33 +1,9 @@ from typing import List from Direction import DIRECTION +from util import get_sprites import pygame -def get_sprites(sprite_sheet) -> List: - sheet_width, sheet_height = sprite_sheet.get_size() - sprite_width, sprite_height = 32, 32 - rows = sheet_height // sprite_height - columns = sheet_width // sprite_width - sprites = [] - - for row in range(rows): - for col in range(columns): - x = col * sprite_width - y = row * sprite_height - - # Create a new surface for the current sprite and blit it from the - # sprite sheet onto this new surface - new_sprite_surface = pygame.Surface( - (sprite_width, sprite_height), pygame.SRCALPHA) - new_sprite_surface.blit( - sprite_sheet, (0, 0), (x, y, x + sprite_width, y + sprite_height)) - - # Add this new surface to our list of sprites - sprites.append(new_sprite_surface) - - return sprites - - class Player(): def __init__(self, sprite_sheet): self.x = 30 * 17 - 15 diff --git a/src/blinky.py b/src/blinky.py index d30bc52..ca647e3 100644 --- a/src/blinky.py +++ b/src/blinky.py @@ -1,8 +1,8 @@ from Ghost import Ghost class Blinky(Ghost): - def __init__(self, x, y): - super().__init__("red", x, y) + def __init__(self, sprite_sheet, x, y): + super().__init__(sprite_sheet, "red", x, y) diff --git a/src/clyde.py b/src/clyde.py new file mode 100644 index 0000000..ae96bfb --- /dev/null +++ b/src/clyde.py @@ -0,0 +1,9 @@ +from Ghost import Ghost + +class Clyde(Ghost): + def __init__(self, sprite_sheet, x, y): + super().__init__(sprite_sheet, "red", x, y) + + + + diff --git a/src/inky.py b/src/inky.py new file mode 100644 index 0000000..926a8d1 --- /dev/null +++ b/src/inky.py @@ -0,0 +1,9 @@ +from Ghost import Ghost + +class Inky(Ghost): + def __init__(self, sprite_sheet, x, y): + super().__init__(sprite_sheet, "red", x, y) + + + + diff --git a/src/pinky.png b/src/pinky.png Binary files differnew file mode 100644 index 0000000..59661ee --- /dev/null +++ b/src/pinky.png diff --git a/src/pinky.py b/src/pinky.py index b512bb9..f89865d 100644 --- a/src/pinky.py +++ b/src/pinky.py @@ -5,8 +5,8 @@ import math from Ghost import Ghost class Pinky(Ghost): - def __init__(self, x, y): - super().__init__("pink", x, y) + def __init__(self, sprite_sheet, x, y): + super().__init__(sprite_sheet,"pink", x, y) @@ -59,7 +59,6 @@ class Pinky(Ghost): forbidden = 1 new_target = self.get_four_tiles_ahead_of_pacman(target) - print((target.x, target.y), new_target) for i in range(len(dx)): if i != forbidden: diff --git a/src/util.py b/src/util.py new file mode 100644 index 0000000..66fecb4 --- /dev/null +++ b/src/util.py @@ -0,0 +1,28 @@ +from typing import List +import pygame + + +def get_sprites(sprite_sheet) -> List: + sheet_width, sheet_height = sprite_sheet.get_size() + sprite_width, sprite_height = 32, 32 + rows = sheet_height // sprite_height + columns = sheet_width // sprite_width + sprites = [] + + for row in range(rows): + for col in range(columns): + x = col * sprite_width + y = row * sprite_height + + # Create a new surface for the current sprite and blit it from the + # sprite sheet onto this new surface + new_sprite_surface = pygame.Surface( + (sprite_width, sprite_height), pygame.SRCALPHA) + new_sprite_surface.blit( + sprite_sheet, (0, 0), (x, y, x + sprite_width, y + sprite_height)) + + # Add this new surface to our list of sprites + sprites.append(new_sprite_surface) + + return sprites + |
