diff --git a/wicked_quest.py b/wicked_quest.py index c6b27b4..7c4f23f 100644 --- a/wicked_quest.py +++ b/wicked_quest.py @@ -12,6 +12,7 @@ class WickedQuest: """Initialize game and load sounds.""" self.sounds = initialize_gui("Wicked Quest") self.currentLevel = None + self.gameStartTime = None self.lastThrowTime = 0 self.throwDelay = 250 self.player = None # Will be initialized when first level loads @@ -148,7 +149,7 @@ class WickedQuest: def game_loop(self): """Main game loop handling updates and state changes.""" clock = pygame.time.Clock() - startTime = pygame.time.get_ticks() + levelStartTime = pygame.time.get_ticks() currentLevelNum = 1 while True: @@ -184,31 +185,33 @@ class WickedQuest: # Check for death first if self.currentLevel.player.get_health() <= 0: if self.currentLevel.player.get_lives() <= 0: - # Game over + # Game over - use gameStartTime for total time pygame.mixer.stop() - self.display_game_over(pygame.time.get_ticks() - startTime) + totalTime = pygame.time.get_ticks() - self.gameStartTime + self.display_game_over(totalTime) return else: pygame.mixer.stop() + self.currentLevel.player._health = self.currentLevel.player._maxHealth self.load_level(currentLevelNum) - self.currentLevel.player._health = self.currentLevel.player._maxHealth # Restore health + levelStartTime = pygame.time.get_ticks() # Reset level timer continue # Handle collisions and check level completion if self.currentLevel.handle_collisions(): - # Level completed - self.display_level_stats(pygame.time.get_ticks() - startTime) - - # Try to load next level + # Level time is from levelStartTime + levelTime = pygame.time.get_ticks() - levelStartTime + self.display_level_stats(levelTime) + currentLevelNum += 1 if self.load_level(currentLevelNum): - # Reset timer for new level - startTime = pygame.time.get_ticks() + levelStartTime = pygame.time.get_ticks() # Reset level timer for new level continue else: - # No more levels - game complete! + # Game complete - use gameStartTime for total + totalTime = pygame.time.get_ticks() - self.gameStartTime messagebox("Congratulations! You've completed all available levels!") - self.display_game_over(pygame.time.get_ticks() - startTime) + self.display_game_over(totalTime) return clock.tick(60) # 60 FPS @@ -217,11 +220,12 @@ class WickedQuest: """Main game loop with menu system.""" while True: choice = game_menu(self.sounds, "play", "instructions", "learn_sounds", "credits", "donate", "exit") - + if choice == "exit": exit_game() elif choice == "play": self.player = None # Reset player for new game + self.gameStartTime = pygame.time.get_ticks() # Set game start time here if self.load_level(1): self.game_loop() elif choice == "learn_sounds":