From 7f501d21772d96756a851421690db08387df3c26 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Sun, 7 May 2023 11:32:10 +0300 Subject: Finished clyde algorithm and added a debug mode to run the program --- src/game.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index 5b85c39..5a41f88 100644 --- a/src/game.py +++ b/src/game.py @@ -24,13 +24,15 @@ class Game(): screen = pygame.display.set_mode((WIDTH, HEIGHT)) # Sprite sheet for pacman - sprite_sheet = pygame.image.load( '../assets/pacman_left_sprite.png').convert_alpha() + sprite_sheet = pygame.image.load( + '../assets/pacman_left_sprite.png').convert_alpha() # Sprite sheets for the ghosts - 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() + 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() # our beautiful maze maze = Map.Map() @@ -41,7 +43,7 @@ class Game(): # Initialize the player and the ghosts player = Player(sprite_sheet) - blinky = Blinky(blinky_sprite,75, 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) @@ -63,7 +65,6 @@ class Game(): siren_sound.play(-1) is_game_over = [False] - # Main game loop while not is_game_over[0]: # setting game fps @@ -124,7 +125,6 @@ class Game(): tx = player.speed ty = 0 - # if tx and ty doesn't lead to colliding change the current dx and dy to them and other wise # let pacman move in his previous direction if player.check_collision(maze, tx, ty, TILE_WIDTH, TILE_HEIGHT): @@ -145,12 +145,11 @@ class Game(): player.y += dy player.x %= 900 - # Move ghosts - blinky.move(maze.maze, player, screen, is_game_over) - pinky.move(maze.maze, player, screen, is_game_over) - inky.move(maze.maze, player, screen, is_game_over) - clyde.move(maze.maze, player, screen, is_game_over) + blinky.move(maze.maze, player, screen, is_game_over, blinky) + pinky.move(maze.maze, player, screen, is_game_over, blinky) + # inky.move(maze.maze, player, screen, is_game_over, blinky) + clyde.move(maze.maze, player, screen, is_game_over, blinky) # Draw the map on each frame maze.draw_map(screen) @@ -159,10 +158,9 @@ class Game(): player.draw(screen, counter) blinky.draw(screen) pinky.draw(screen) - inky.draw(screen) + # inky.draw(screen) clyde.draw(screen) - # Update the screen pygame.display.flip() -- cgit v1.2.3 From c7c473177086399a8fb97936b4c3c2b67a43fce0 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 13:07:48 +0300 Subject: Finished inky's algorithm and also added an option in settings to disable audio --- src/game.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index 5a41f88..c4f5597 100644 --- a/src/game.py +++ b/src/game.py @@ -61,8 +61,9 @@ class Game(): 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) + if settings.sound: + pygame.mixer.music.play() + siren_sound.play(-1) is_game_over = [False] # Main game loop @@ -148,7 +149,7 @@ class Game(): # Move ghosts blinky.move(maze.maze, player, screen, is_game_over, blinky) pinky.move(maze.maze, player, screen, is_game_over, blinky) - # inky.move(maze.maze, player, screen, is_game_over, blinky) + inky.move(maze.maze, player, screen, is_game_over, blinky) clyde.move(maze.maze, player, screen, is_game_over, blinky) # Draw the map on each frame @@ -158,7 +159,7 @@ class Game(): player.draw(screen, counter) blinky.draw(screen) pinky.draw(screen) - # inky.draw(screen) + inky.draw(screen) clyde.draw(screen) # Update the screen -- cgit v1.2.3 From 72aeff07de251f66c579405f0aecb0b9c4d4cfac Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 14:47:07 +0300 Subject: Added scattered mode for the ghosts --- src/game.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index c4f5597..0478b28 100644 --- a/src/game.py +++ b/src/game.py @@ -1,6 +1,7 @@ from blinky import Blinky from clyde import Clyde from direction import DIRECTION +from mode import MODE from inky import Inky from pinky import Pinky from player import Player @@ -34,6 +35,10 @@ class Game(): clyde_sprite = pygame.image.load('../assets/clyde.png').convert_alpha() inky_sprite = pygame.image.load('../assets/inky.png').convert_alpha() + # Set the timer to trigger after 10,000 milliseconds (10 seconds) + timer_event = pygame.USEREVENT + 1 + pygame.time.set_timer(timer_event, 1000 * 10, 1) + # our beautiful maze maze = Map.Map() @@ -43,10 +48,14 @@ class Game(): # Initialize the player and the ghosts player = Player(sprite_sheet) - 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) + blinky = Blinky(blinky_sprite, 12 * TILE_WIDTH + + 15, 12 * TILE_HEIGHT + 15) + pinky = Pinky(pinky_sprite, 11 * TILE_WIDTH + + 15, 12 * TILE_HEIGHT + 15) + inky = Inky(inky_sprite, 13 * TILE_WIDTH + + 15, 12 * TILE_HEIGHT + 15) + clyde = Clyde(clyde_sprite, 14 * TILE_WIDTH + + 15, 12 * TILE_HEIGHT + 15) # Set the pacman velocity dx = 0 @@ -105,6 +114,13 @@ class Game(): player.direction = DIRECTION.RIGHT tx = player.speed ty = 0 # Necssarry to move only horizontal or vertical + # Check for the timer event + if event.type == timer_event: + print("Finished") + pinky.mode = MODE.CHASING + inky.mode = MODE.CHASING + blinky.mode = MODE.CHASING + clyde.mode = MODE.CHASING keys = pygame.key.get_pressed() @@ -126,7 +142,8 @@ class Game(): tx = player.speed ty = 0 - # if tx and ty doesn't lead to colliding change the current dx and dy to them and other wise + # if tx and ty doesn't lead to colliding change the current + # dx and dy to them and other wise # let pacman move in his previous direction if player.check_collision(maze, tx, ty, TILE_WIDTH, TILE_HEIGHT): dx = tx -- cgit v1.2.3 From 9621f880a03337a8a252cf5cd3993d5a1a29969c Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 17:59:55 +0300 Subject: Added frightened mode --- src/game.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index 0478b28..8e4ce37 100644 --- a/src/game.py +++ b/src/game.py @@ -116,7 +116,6 @@ class Game(): ty = 0 # Necssarry to move only horizontal or vertical # Check for the timer event if event.type == timer_event: - print("Finished") pinky.mode = MODE.CHASING inky.mode = MODE.CHASING blinky.mode = MODE.CHASING @@ -174,10 +173,10 @@ class Game(): # Draw the player and the ghosts player.draw(screen, counter) - blinky.draw(screen) - pinky.draw(screen) - inky.draw(screen) - clyde.draw(screen) + blinky.draw(screen, player.powerup, counter) + pinky.draw(screen, player.powerup, counter) + inky.draw(screen, player.powerup, counter) + clyde.draw(screen, player.powerup, counter) # Update the screen pygame.display.flip() -- cgit v1.2.3 From d610718c10e310c75126593624ecaaaa2233b371 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 20:08:41 +0300 Subject: Added a simple GameOver Screen --- src/game.py | 51 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 8 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index 8e4ce37..a904fad 100644 --- a/src/game.py +++ b/src/game.py @@ -17,6 +17,35 @@ class Game(): def __init__(self): self.settings = settings + def show_gameover_screen(self, screen, game_over): + font = pygame.font.SysFont(None, 48) + + # Render the "Game Over" text to a surface + game_over_text = font.render( + "Game Over. Press R to try again.", True, (255, 255, 255)) + + # Blit the "Game Over" text onto the screen + text_rect = game_over_text.get_rect( + center=(WIDTH/2, HEIGHT/2)) + screen.blit(game_over_text, text_rect) + + # Update the display + pygame.display.flip() + + quit_game = False # Initialize the flag variable + while not quit_game: + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN and event.key == pygame.K_r: + # Reset the game and start again + # Add your own code here to reset the game state + game_over[0] = False + quit_game = True # Set the flag to True to break out of both loops + break + elif event.type == pygame.QUIT: + game_over[0] = True + quit_game = True # Set the flag to True to break out of both loops + break + def run(self): # Initialize Pygame pygame.init() @@ -68,7 +97,6 @@ class Game(): 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') if settings.sound: pygame.mixer.music.play() @@ -92,10 +120,12 @@ class Game(): tx = dx ty = dy + is_pacman_alive = [True] + # Handling events for event in pygame.event.get(): if event.type == pygame.QUIT: - is_game_over = False + is_game_over[0] = True elif event.type == pygame.KEYDOWN: # Move the circle based on the pressed key if event.key == pygame.K_w: @@ -163,10 +193,10 @@ class Game(): player.x %= 900 # Move ghosts - blinky.move(maze.maze, player, screen, is_game_over, blinky) - pinky.move(maze.maze, player, screen, is_game_over, blinky) - inky.move(maze.maze, player, screen, is_game_over, blinky) - clyde.move(maze.maze, player, screen, is_game_over, blinky) + blinky.move(maze.maze, player, screen, is_pacman_alive, blinky) + pinky.move(maze.maze, player, screen, is_pacman_alive, blinky) + inky.move(maze.maze, player, screen, is_pacman_alive, blinky) + clyde.move(maze.maze, player, screen, is_pacman_alive, blinky) # Draw the map on each frame maze.draw_map(screen) @@ -178,8 +208,13 @@ class Game(): inky.draw(screen, player.powerup, counter) clyde.draw(screen, player.powerup, counter) - # Update the screen - pygame.display.flip() + if not is_pacman_alive[0]: + self.show_gameover_screen( + screen, is_game_over) + is_pacman_alive[0] = True + else: + # Update the screen + pygame.display.flip() # Quit Pygame pygame.quit() -- cgit v1.2.3 From 241e41892a10d3913c63935a8f9e14306e8a73cd Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 21:40:21 +0300 Subject: Made a Singeltion class GameState containg the current state of the game --- src/game.py | 135 ++++++++++++++++++++++++++---------------------------------- 1 file changed, 58 insertions(+), 77 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index a904fad..4787c00 100644 --- a/src/game.py +++ b/src/game.py @@ -1,23 +1,16 @@ -from blinky import Blinky -from clyde import Clyde from direction import DIRECTION +from game_state import GameState from mode import MODE -from inky import Inky -from pinky import Pinky -from player import Player from settings import settings -import map as Map +from game_state import WIDTH, HEIGHT, TILE_WIDTH, TILE_HEIGHT import pygame -WIDTH = settings.width -HEIGHT = settings.height - class Game(): def __init__(self): self.settings = settings - def show_gameover_screen(self, screen, game_over): + def show_gameover_screen(self, screen, game_state, sprites): font = pygame.font.SysFont(None, 48) # Render the "Game Over" text to a surface @@ -38,14 +31,18 @@ class Game(): if event.type == pygame.KEYDOWN and event.key == pygame.K_r: # Reset the game and start again # Add your own code here to reset the game state - game_over[0] = False + self.reset_game(game_state, sprites) + game_state.game_over = False quit_game = True # Set the flag to True to break out of both loops break elif event.type == pygame.QUIT: - game_over[0] = True + game_state.game_over = True quit_game = True # Set the flag to True to break out of both loops break + def reset_game(self, game_state, sprites): + game_state.reset(sprites) + def run(self): # Initialize Pygame pygame.init() @@ -64,27 +61,14 @@ class Game(): clyde_sprite = pygame.image.load('../assets/clyde.png').convert_alpha() inky_sprite = pygame.image.load('../assets/inky.png').convert_alpha() + sprites = [sprite_sheet, blinky_sprite, + pinky_sprite, clyde_sprite, inky_sprite] + # Set the timer to trigger after 10,000 milliseconds (10 seconds) timer_event = pygame.USEREVENT + 1 pygame.time.set_timer(timer_event, 1000 * 10, 1) - # our beautiful maze - maze = Map.Map() - - # length of the map grid size - TILE_WIDTH = WIDTH // len(maze.maze[0]) - TILE_HEIGHT = HEIGHT // len(maze.maze) - - # Initialize the player and the ghosts - player = Player(sprite_sheet) - blinky = Blinky(blinky_sprite, 12 * TILE_WIDTH + - 15, 12 * TILE_HEIGHT + 15) - pinky = Pinky(pinky_sprite, 11 * TILE_WIDTH + - 15, 12 * TILE_HEIGHT + 15) - inky = Inky(inky_sprite, 13 * TILE_WIDTH + - 15, 12 * TILE_HEIGHT + 15) - clyde = Clyde(clyde_sprite, 14 * TILE_WIDTH + - 15, 12 * TILE_HEIGHT + 15) + game_state = GameState(sprites) # Set the pacman velocity dx = 0 @@ -101,10 +85,9 @@ class Game(): if settings.sound: pygame.mixer.music.play() siren_sound.play(-1) - is_game_over = [False] # Main game loop - while not is_game_over[0]: + while not game_state.game_over: # setting game fps clock.tick(settings.fps) @@ -120,98 +103,96 @@ class Game(): tx = dx ty = dy - is_pacman_alive = [True] - # Handling events for event in pygame.event.get(): if event.type == pygame.QUIT: - is_game_over[0] = True + game_state.game_over = True elif event.type == pygame.KEYDOWN: # Move the circle based on the pressed key if event.key == pygame.K_w: - player.direction = DIRECTION.UP - ty = -player.speed + game_state.pacman.direction = DIRECTION.UP + ty = -game_state.pacman.speed tx = 0 # Necssarry to move only horizontal or vertical elif event.key == pygame.K_s: - player.direction = DIRECTION.DOWN - ty = player.speed + game_state.pacman.direction = DIRECTION.DOWN + ty = game_state.pacman.speed tx = 0 # Necssarry to move only horizontal or vertical elif event.key == pygame.K_a: - player.direction = DIRECTION.LEFT - tx = -player.speed + game_state.pacman.direction = DIRECTION.LEFT + tx = -game_state.pacman.speed ty = 0 # Necssarry to move only horizontal or vertical elif event.key == pygame.K_d: - player.direction = DIRECTION.RIGHT - tx = player.speed + game_state.pacman.direction = DIRECTION.RIGHT + tx = game_state.pacman.speed ty = 0 # Necssarry to move only horizontal or vertical # Check for the timer event if event.type == timer_event: - pinky.mode = MODE.CHASING - inky.mode = MODE.CHASING - blinky.mode = MODE.CHASING - clyde.mode = MODE.CHASING + game_state.pinky.mode = MODE.CHASING + game_state.inky.mode = MODE.CHASING + game_state.blinky.mode = MODE.CHASING + game_state.clyde.mode = MODE.CHASING keys = pygame.key.get_pressed() # Simulates holding the key which adds better playability for pacman if keys[pygame.K_w]: - player.direction = DIRECTION.UP - ty = -player.speed + game_state.pacman.direction = DIRECTION.UP + ty = -game_state.pacman.speed tx = 0 elif keys[pygame.K_s]: - player.direction = DIRECTION.DOWN - ty = player.speed + game_state.pacman.direction = DIRECTION.DOWN + ty = game_state.pacman.speed tx = 0 elif keys[pygame.K_a]: - player.direction = DIRECTION.LEFT - tx = -player.speed + game_state.pacman.direction = DIRECTION.LEFT + tx = -game_state.pacman.speed ty = 0 elif keys[pygame.K_d]: - player.direction = DIRECTION.RIGHT - tx = player.speed + game_state.pacman.direction = DIRECTION.RIGHT + tx = game_state.pacman.speed ty = 0 # if tx and ty doesn't lead to colliding change the current # dx and dy to them and other wise # let pacman move in his previous direction - if player.check_collision(maze, tx, ty, TILE_WIDTH, TILE_HEIGHT): + if game_state.pacman.check_collision(game_state.map, tx, ty, TILE_WIDTH, TILE_HEIGHT): dx = tx dy = ty if dx < 0: - player.direction = DIRECTION.LEFT + game_state.pacman.direction = DIRECTION.LEFT elif dx > 0: - player.direction = DIRECTION.RIGHT + game_state.pacman.direction = DIRECTION.RIGHT elif dy < 0: - player.direction = DIRECTION.UP + game_state.pacman.direction = DIRECTION.UP elif dy > 0: - player.direction = DIRECTION.DOWN + game_state.pacman.direction = DIRECTION.DOWN - if player.check_collision(maze, dx, dy, TILE_WIDTH, TILE_HEIGHT): - player.x += dx - player.y += dy - player.x %= 900 + if game_state.pacman.check_collision(game_state.map, dx, dy, TILE_WIDTH, TILE_HEIGHT): + game_state.pacman.x += dx + game_state.pacman.y += dy + game_state.pacman.x %= 900 # Move ghosts - blinky.move(maze.maze, player, screen, is_pacman_alive, blinky) - pinky.move(maze.maze, player, screen, is_pacman_alive, blinky) - inky.move(maze.maze, player, screen, is_pacman_alive, blinky) - clyde.move(maze.maze, player, screen, is_pacman_alive, blinky) + game_state.blinky.move(game_state, screen) + game_state.pinky.move(game_state, screen) + game_state.inky.move(game_state, screen) + game_state.clyde.move(game_state, screen) # Draw the map on each frame - maze.draw_map(screen) + game_state.map.draw_map(screen) - # Draw the player and the ghosts - player.draw(screen, counter) - blinky.draw(screen, player.powerup, counter) - pinky.draw(screen, player.powerup, counter) - inky.draw(screen, player.powerup, counter) - clyde.draw(screen, player.powerup, counter) + # Draw the game_state.pacman and the ghosts + game_state.pacman.draw(screen, counter) + game_state.blinky.draw(screen, game_state.pacman.powerup, counter) + game_state.pinky.draw(screen, game_state.pacman.powerup, counter) + game_state.inky.draw(screen, game_state.pacman.powerup, counter) + game_state.clyde.draw(screen, game_state.pacman.powerup, counter) - if not is_pacman_alive[0]: + if not game_state.is_pacman_alive: self.show_gameover_screen( - screen, is_game_over) - is_pacman_alive[0] = True + screen, game_state, sprites) + game_state.is_pacman_alive = True else: # Update the screen pygame.display.flip() -- cgit v1.2.3 From aaf0194f9b5d93bd6612bc0b419c4b8f89b4aa21 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Mon, 8 May 2023 23:02:03 +0300 Subject: Added a simple Wining screen when the user collects all the food --- src/game.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 9 deletions(-) (limited to 'src/game.py') diff --git a/src/game.py b/src/game.py index 4787c00..a7efb67 100644 --- a/src/game.py +++ b/src/game.py @@ -11,16 +11,66 @@ class Game(): self.settings = settings def show_gameover_screen(self, screen, game_state, sprites): - font = pygame.font.SysFont(None, 48) + font = pygame.font.SysFont(None, 64) # Render the "Game Over" text to a surface - game_over_text = font.render( - "Game Over. Press R to try again.", True, (255, 255, 255)) + game_over_text_1 = font.render( + "Game Over", True, (255, 255, 255)) + game_over_text_2 = font.render( + "Press R to try again or Q to quit.", True, (255, 255, 255)) # Blit the "Game Over" text onto the screen - text_rect = game_over_text.get_rect( + text_rect_1 = game_over_text_1.get_rect( + center=(WIDTH/2, HEIGHT/2 - 75)) + text_rect_2 = game_over_text_2.get_rect( center=(WIDTH/2, HEIGHT/2)) - screen.blit(game_over_text, text_rect) + + screen.blit(game_over_text_1, text_rect_1) + screen.blit(game_over_text_2, text_rect_2) + + # Update the display + pygame.display.flip() + + quit_game = False # Initialize the flag variable + while not quit_game: + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN and event.key == pygame.K_r: + # Reset the game and start again + # Add your own code here to reset the game state + self.reset_game(game_state, sprites) + game_state.game_over = False + quit_game = True # Set the flag to True to break out of both loops + break + elif event.type == pygame.KEYDOWN and event.key == pygame.K_q: + game_state.game_over = True + quit_game = True + break + elif event.type == pygame.QUIT: + game_state.game_over = True + quit_game = True # Set the flag to True to break out of both loops + break + + def show_wining_screen(self, screen, game_state, sprites): + font = pygame.font.SysFont(None, 64) + + # Render the "Game Over" text to a surface + wining_text_1 = font.render( + "Congratulation You Won!!", True, (255, 255, 255)) + wining_text_2 = font.render( + "Press R to play again or Q to quit", True, (255, 255, 255)) + + text_rect_1 = wining_text_1.get_rect( + center=(WIDTH/2, HEIGHT/2 - 75)) + text_rect_2 = wining_text_2.get_rect( + center=(WIDTH/2, HEIGHT/2)) + + # Blit the "Game Over" text onto the screen + text_rect_1 = wining_text_1.get_rect( + center=(WIDTH/2, HEIGHT/2)) + text_rect_2 = wining_text_2.get_rect( + center=(WIDTH/2, HEIGHT/2 + 100)) + screen.blit(wining_text_1, text_rect_1) + screen.blit(wining_text_2, text_rect_2) # Update the display pygame.display.flip() @@ -35,6 +85,10 @@ class Game(): game_state.game_over = False quit_game = True # Set the flag to True to break out of both loops break + elif event.type == pygame.KEYDOWN and event.key == pygame.K_q: + game_state.game_over = True + quit_game = True + break elif event.type == pygame.QUIT: game_state.game_over = True quit_game = True # Set the flag to True to break out of both loops @@ -62,7 +116,7 @@ class Game(): inky_sprite = pygame.image.load('../assets/inky.png').convert_alpha() sprites = [sprite_sheet, blinky_sprite, - pinky_sprite, clyde_sprite, inky_sprite] + pinky_sprite, inky_sprite, clyde_sprite] # Set the timer to trigger after 10,000 milliseconds (10 seconds) timer_event = pygame.USEREVENT + 1 @@ -155,7 +209,7 @@ class Game(): # if tx and ty doesn't lead to colliding change the current # dx and dy to them and other wise # let pacman move in his previous direction - if game_state.pacman.check_collision(game_state.map, tx, ty, TILE_WIDTH, TILE_HEIGHT): + if game_state.pacman.check_collision(game_state, tx, ty, TILE_WIDTH, TILE_HEIGHT): dx = tx dy = ty @@ -168,10 +222,10 @@ class Game(): elif dy > 0: game_state.pacman.direction = DIRECTION.DOWN - if game_state.pacman.check_collision(game_state.map, dx, dy, TILE_WIDTH, TILE_HEIGHT): + if game_state.pacman.check_collision(game_state, dx, dy, TILE_WIDTH, TILE_HEIGHT): game_state.pacman.x += dx game_state.pacman.y += dy - game_state.pacman.x %= 900 + game_state.pacman.x %= 900 # logic for portal # Move ghosts game_state.blinky.move(game_state, screen) @@ -189,6 +243,10 @@ class Game(): game_state.inky.draw(screen, game_state.pacman.powerup, counter) game_state.clyde.draw(screen, game_state.pacman.powerup, counter) + if game_state.food == 246: + self.show_wining_screen(screen, game_state, sprites) + + if not game_state.is_pacman_alive: self.show_gameover_screen( screen, game_state, sprites) @@ -198,4 +256,5 @@ class Game(): pygame.display.flip() # Quit Pygame + print(game_state.score) pygame.quit() -- cgit v1.2.3