From fc3044fc3648348f692715b696ffd4c5893f268b Mon Sep 17 00:00:00 2001 From: Shade-raid <55247492+Shade-raid@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:35:51 +0400 Subject: [PATCH] Update game.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Müəyyən aralıqlarla vurulan düşmən güllələri əlavə edildi. Düşmən güllələri ilə oyunçu arasında toqquşmanın aşkarlanması həyata keçirilib. Yekun hesab ekranı ilə oyunu ekran üzərində təkmilləşdirdi --- game.py | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/game.py b/game.py index 264b42d..b9d6f86 100644 --- a/game.py +++ b/game.py @@ -19,6 +19,7 @@ shoot_sound = pygame.mixer.Sound("shoot.wav") enemy_hit_sound = pygame.mixer.Sound("enemy_hit.wav") game_over_sound = pygame.mixer.Sound("game_over.wav") +pygame.mixer.music.load("background_music.mp3") # Define the player class class Player(pygame.sprite.Sprite): @@ -62,6 +63,8 @@ def __init__(self): self.rect.x = random.randint(0, screen_width - self.rect.width) self.rect.y = random.randint(-100, -40) self.speed = random.randint(1, 3) + self.bullet_delay = random.randint(1000, 3000) + self.last_shot = pygame.time.get_ticks() def update(self): self.rect.y += self.speed @@ -69,6 +72,16 @@ def update(self): self.rect.x = random.randint(0, screen_width - self.rect.width) self.rect.y = random.randint(-100, -40) self.speed = random.randint(1, 3) + self.shoot() + + def shoot(self): + # Shoot bullets at specified interval + current_time = pygame.time.get_ticks() + if current_time - self.last_shot > self.bullet_delay: + bullet = Bullet(self.rect.centerx, self.rect.bottom) + all_sprites.add(bullet) + enemy_bullets.add(bullet) + self.last_shot = current_time # Define the bullet class class Bullet(pygame.sprite.Sprite): @@ -83,7 +96,7 @@ def __init__(self, x, y): def update(self): self.rect.y += self.speed - if self.rect.bottom < 0: + if self.rect.bottom < 0 or self.rect.top > screen_height: self.kill() # Create player and groups for sprites @@ -92,6 +105,7 @@ def update(self): all_sprites.add(player) enemies = pygame.sprite.Group() bullets = pygame.sprite.Group() +enemy_bullets = pygame.sprite.Group() # Generate initial enemies for _ in range(8): @@ -102,8 +116,9 @@ def update(self): # Set up the game clock clock = pygame.time.Clock() -# Game over flag +# Game over flag and score tracking game_over = False +score = 0 # Game loop running = True @@ -119,10 +134,11 @@ def update(self): # Reset the game game_over = False player.health = 3 - player.score = 0 + score = 0 all_sprites.empty() bullets.empty() enemies.empty() + enemy_bullets.empty() for _ in range(8): enemy = Enemy() all_sprites.add(enemy) @@ -136,17 +152,26 @@ def update(self): # Check for bullet collisions with enemies bullet_hits = pygame.sprite.groupcollide(bullets, enemies, True, True) for hit_enemies in bullet_hits.values(): - player.score += len(hit_enemies) + score += len(hit_enemies) enemy_hit_sound.play() # Check for enemy collisions with player enemy_hits = pygame.sprite.spritecollide(player, enemies, True) - if enemy_hits: + for _ in enemy_hits: + player.health -= 1 + enemy_hit_sound.play() + + # Check for enemy bullet collisions with player + enemy_bullet_hits = pygame.sprite.spritecollide(player, enemy_bullets, True) + if enemy_bullet_hits: player.health -= 1 - if player.health == 0: - game_over = True - pygame.mixer.music.stop() - game_over_sound.play() + enemy_hit_sound.play() + + # Check if the player runs out of health + if player.health <= 0: + game_over = True + pygame.mixer.music.stop() + game_over_sound.play() # Draw screen.fill(BLACK) @@ -155,7 +180,7 @@ def update(self): # Draw player health and score font = pygame.font.Font(None, 36) health_text = font.render(f"Health: {player.health}", True, WHITE) - score_text = font.render(f"Score: {player.score}", True, WHITE) + score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(health_text, (10, 10)) screen.blit(score_text, (screen_width - score_text.get_width() - 10, 10))