diff --git a/space_adventure.py b/space_adventure.py index 7411aa0..78a73ef 100644 --- a/space_adventure.py +++ b/space_adventure.py @@ -82,15 +82,15 @@ def update(self): self.speed_x = 0 keystate = pygame.key.get_pressed() if keystate[pygame.K_LEFT]: - self.speed_x = 8 + self.speed_x = -8 # Changed from 8 to -8 for correct left movement if keystate[pygame.K_RIGHT]: - self.speed_x = -8 + self.speed_x = 8 # Changed from -8 to 8 for correct right movement self.rect.x += self.speed_x - if self.rect.right > SCREEN_WIDTH + 20: - self.rect.right = SCREEN_WIDTH + 20 - if self.rect.left < -20: - self.rect.left = -20 + if self.rect.right > SCREEN_WIDTH: + self.rect.right = SCREEN_WIDTH + if self.rect.left < 0: + self.rect.left = 0 def shoot(self): if not self.hidden: @@ -99,9 +99,13 @@ def shoot(self): all_sprites.add(bullet) bullets.add(bullet) elif self.power_level >= 2: - bullet1 = Bullet(self.rect.centerx, self.rect.top) + # Create two bullets side by side + bullet1 = Bullet(self.rect.centerx - 10, self.rect.top) # Left bullet + bullet2 = Bullet(self.rect.centerx + 10, self.rect.top) # Right bullet all_sprites.add(bullet1) + all_sprites.add(bullet2) bullets.add(bullet1) + bullets.add(bullet2) def hide(self): self.hidden = True @@ -145,10 +149,10 @@ def __init__(self, x, y): self.rect = self.image.get_rect() self.rect.centerx = x self.rect.bottom = y - self.speedy = 1 + self.speedy = 10 # Increased bullet speed from 1 to 10 def update(self): - self.rect.y += self.speedy + self.rect.y -= self.speedy # Changed += to -= so bullets move upward if self.rect.bottom < 0: self.kill() @@ -267,9 +271,9 @@ def main_game(): all_sprites.update() # Check bullet-enemy collisions - hits = pygame.sprite.groupcollide(enemies, bullets, False, True) + hits = pygame.sprite.groupcollide(enemies, bullets, True, True) # Changed False to True so enemies are destroyed when hit for hit in hits: - score += 10 + score += 100 # Changed from 10 to 100 points per enemy destroyed # Create explosion explosion = Explosion(hit.rect.center, 30) all_sprites.add(explosion) @@ -293,7 +297,7 @@ def main_game(): all_sprites.add(new_enemy) enemies.add(new_enemy) if player.shield <= 0: - # player.lives -= 1 + player.lives -= 1 # Uncommented this line to reduce lives when shield is depleted player.shield = 100 player.hide() if player.lives == 0: @@ -306,11 +310,25 @@ def main_game(): player.shield += 20 if player.shield > 100: player.shield = 100 + # Display shield powerup text + draw_text(screen, "+SHIELD", 18, player.rect.centerx, player.rect.top - 10) if hit.type == 'power': player.powerup() + # Display power powerup text + draw_text(screen, "+POWER LEVEL " + str(player.power_level), 18, player.rect.centerx, player.rect.top - 10) + + # Show visual feedback by updating the display immediately + pygame.display.flip() if game_over: - pass + # Display Game Over message + draw_text(screen, "GAME OVER", 64, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) + pygame.display.flip() + # Wait for a few seconds + pygame.time.delay(2000) # Wait for 2 seconds + running = False # Exit the game loop + pygame.quit() + sys.exit() # Make sure to completely exit the game # Draw / render screen.fill(BLACK) @@ -321,6 +339,12 @@ def main_game(): draw_shield_bar(screen, 5, 5, player.shield) draw_lives(screen, SCREEN_WIDTH - 100, 5, player.lives, player_mini_img) + # Draw power level indicator if powered up + if player.power_level > 1: + time_left = 5 - (pygame.time.get_ticks() - player.power_timer) / 1000 + if time_left > 0: + draw_text(screen, f"POWER LEVEL: {player.power_level} ({time_left:.1f}s)", 18, SCREEN_WIDTH / 2, 30) + # Flip the display pygame.display.flip()