Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 37 additions & 13 deletions space_adventure.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand Down Expand Up @@ -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()

Expand Down Expand Up @@ -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)
Expand All @@ -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:
Expand All @@ -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)
Expand All @@ -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()

Expand Down