diff --git a/__pycache__/enemy.cpython-313.pyc b/__pycache__/enemy.cpython-313.pyc index 53f1055..ca96a84 100644 Binary files a/__pycache__/enemy.cpython-313.pyc and b/__pycache__/enemy.cpython-313.pyc differ diff --git a/__pycache__/player.cpython-313.pyc b/__pycache__/player.cpython-313.pyc index 9587a29..9166951 100644 Binary files a/__pycache__/player.cpython-313.pyc and b/__pycache__/player.cpython-313.pyc differ diff --git a/__pycache__/settings.cpython-313.pyc b/__pycache__/settings.cpython-313.pyc index acbd22d..5232d6d 100644 Binary files a/__pycache__/settings.cpython-313.pyc and b/__pycache__/settings.cpython-313.pyc differ diff --git a/enemy.py b/enemy.py index 06fba7b..2fe4b2c 100644 --- a/enemy.py +++ b/enemy.py @@ -16,7 +16,7 @@ class Enemy(pygame.sprite.Sprite): random.uniform(0, SCREEN_HEIGHT), ) ) - self.speed = random.uniform(1,2) + self.speed = random.uniform(4,10) diff --git a/main.py b/main.py index a719824..d4e43f9 100644 --- a/main.py +++ b/main.py @@ -14,6 +14,7 @@ from pygame.locals import ( QUIT, K_SPACE, K_f, + K_RETURN, ) pygame.mixer.init() @@ -23,99 +24,155 @@ pygame.font.init() my_font = pygame.font.SysFont('Comic Sans MS', 30) pygame.mixer.music.load("sounds/aura.mp3") -pygame.mixer.music.play(loops=-1) collision_sound = pygame.mixer.Sound("sounds/dead.ogg") - - screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) ADDENEMY = pygame.USEREVENT + 1 pygame.time.set_timer(ADDENEMY, 1000) running = True +game_started = False +# Initialize player, enemy, and sprite groups player = Player() - enemy = Enemy() - enemies = pygame.sprite.Group() all_sprites = pygame.sprite.Group() all_sprites.add(player) all_sprites.add(enemy) - enemies.add(enemy) -bg =pygame.image.load("sprites/Graveyard.png").convert() +bg1 = pygame.transform.scale(pygame.image.load("sprites/Day.city.png").convert(), (SCREEN_WIDTH, SCREEN_HEIGHT)) clock = pygame.time.Clock() -while Start: +# Start screen loop +while not game_started: for event in pygame.event.get(): - if event.type==KEYDOWN: - if event.type==K_SPACE: - Start = False - if event.key ==K_f: - Start = False + if event.type == KEYDOWN: + if event.key == K_SPACE: + game_started = True # Start the game when Space is pressed + if event.key == K_f: + game_started = True # Start the game when F is pressed (optional) elif event.type == QUIT: - Start = False - screen.fill((0,0,0)) - text= my_font.render("Start",True,(255,255,255)) - screen.blit(text,( - (SCREEN_WIDTH-text.get_width())/2, - (SCREEN_HEIGHT-text.get_height())/2 - )) - text = my_font.render("Press Space", True, (255,255,255)) + running = False + game_started = True # Exit the loop if quit event occurs + + screen.fill((0, 0, 0)) + text = my_font.render("Start", True, (255, 255, 255)) screen.blit(text, ( - (SCREEN_WIDTH-text.get_width())/2 - (SCREEN_HEIGHT-text.get_height()-200) + (SCREEN_WIDTH - text.get_width()) / 2, + (SCREEN_HEIGHT - text.get_height()) / 2, )) + text = my_font.render("Press Space to Start", True, (255, 255, 255)) + screen.blit(text, ( + (SCREEN_WIDTH - text.get_width()) / 2, + (SCREEN_HEIGHT - text.get_height() - 200) + )) + pygame.display.flip() - clock.tick(1000) + clock.tick(30) # Limit FPS to 30 + +pygame.mixer.music.play(loops=-1, fade_ms=1000) + + +# Main game loop while running: - screen.blit(bg, (0,0)) + screen.fill((0, 0, 0)) # Background color + screen.blit(bg1, (0, 0)) # Draw the background image + for event in pygame.event.get(): if event.type == KEYDOWN: if event.key == K_ESCAPE: - running = False + running = False # Quit on Escape + elif event.key == K_RETURN: # Press Enter to restart + # Reset the game state + player.kill() # Remove player from all_sprites + enemy.kill() # Remove enemy from all_sprites + enemies.empty() # Empty enemies group + all_sprites.empty() # Empty all_sprites group + + # Reinitialize player, enemies, and all sprites + player = Player() + enemy = Enemy() + enemies.add(enemy) + all_sprites.add(player) + all_sprites.add(enemy) + + # Reset background and re-enter game loop + continue # Restart game loop from the beginning elif event.type == QUIT: - running = False + running = False # Quit on window close elif event.type == ADDENEMY: + # Add a new enemy each second new_enemy = Enemy() enemies.add(new_enemy) all_sprites.add(new_enemy) - pressed_keys = pygame.key.get_pressed() player.update(pressed_keys) - enemies.update() + # Render all sprites for entity in all_sprites: screen.blit(entity.surf, entity.rect) + # Check for collisions between player and enemies if pygame.sprite.spritecollideany(player, enemies): + player.kill() # Remove player when it collides with an enemy + pygame.time.delay(250) # Wait a bit before showing the game over screen + + pygame.mixer.stop - player.kill() collision_sound.play() - pygame.time.delay(1000) - running=False + # Game Over screen after collision + screen.fill((0, 0, 0)) # Clear the screen with a black background + + text = my_font.render("Game Over", True, (255, 0, 0)) + screen.blit(text, ( + (SCREEN_WIDTH - text.get_width()) / 2, + (SCREEN_HEIGHT - text.get_height()) / 2 + )) - text =my_font.render("Ya dead yet?", True, (255,255,0)) - screen.blit(text, (SCREEN_WIDTH-text.get_width(), 0)) + text = my_font.render("Press Enter to Restart", True, (255, 255, 255)) + screen.blit(text, ( + (SCREEN_WIDTH - text.get_width()) / 2, + (SCREEN_HEIGHT - text.get_height()) / 2 + 50, + )) - pygame.display.flip() + text = my_font.render("Press Escape to Quit", True, (255, 255, 255)) + screen.blit(text, ( + (SCREEN_WIDTH - text.get_width()) / 2, + (SCREEN_HEIGHT - text.get_height()) / 2 +100, + )) -clock.tick(5050) + pygame.display.flip() + + # Wait for the player to press Enter to restart or Escape to quit + waiting_for_input = True + while waiting_for_input: + for event in pygame.event.get(): + if event.type == KEYDOWN: + if event.key == K_RETURN: + waiting_for_input = False # Player pressed Enter to restart + if event.key == K_ESCAPE: + running = False # Player pressed Escape to quit + waiting_for_input = False + elif event.type == QUIT: + waiting_for_input = False + running = False + + pygame.display.flip() # Update the screen + + clock.tick(60) # Limit FPS to 60 pygame.mixer.music.stop() pygame.mixer.quit() - pygame.quit() - diff --git a/player.py b/player.py index bd86441..0e56427 100644 --- a/player.py +++ b/player.py @@ -23,13 +23,13 @@ class Player(pygame.sprite.Sprite): #self.surf = pygame.Surface((40, 40)) def update(self, pressed_keys): if pressed_keys[K_UP]: - self.rect.move_ip(0, -1) + self.rect.move_ip(0, -4) if pressed_keys[K_DOWN]: - self.rect.move_ip(0, 1) + self.rect.move_ip(0, 4) if pressed_keys[K_LEFT]: - self.rect.move_ip(-1, 0) + self.rect.move_ip(-4, 0) if pressed_keys[K_RIGHT]: - self.rect.move_ip(1, 0) + self.rect.move_ip(4, 0) if self.rect.left < 0: self.rect.left = 0 diff --git a/settings.py b/settings.py index c2eeac2..63c5ac3 100644 --- a/settings.py +++ b/settings.py @@ -1,2 +1,2 @@ -SCREEN_WIDTH = 800 -SCREEN_HEIGHT = 600 \ No newline at end of file +SCREEN_WIDTH = 1920 +SCREEN_HEIGHT = 1080 \ No newline at end of file diff --git a/sprites/Day.city.png b/sprites/Day.city.png new file mode 100644 index 0000000..5fb29e2 Binary files /dev/null and b/sprites/Day.city.png differ diff --git a/sprites/tile000.png b/sprites/portal/tile000.png similarity index 100% rename from sprites/tile000.png rename to sprites/portal/tile000.png diff --git a/sprites/tile001.png b/sprites/portal/tile001.png similarity index 100% rename from sprites/tile001.png rename to sprites/portal/tile001.png diff --git a/sprites/tile002.png b/sprites/portal/tile002.png similarity index 100% rename from sprites/tile002.png rename to sprites/portal/tile002.png diff --git a/sprites/tile003.png b/sprites/portal/tile003.png similarity index 100% rename from sprites/tile003.png rename to sprites/portal/tile003.png diff --git a/sprites/tile004.png b/sprites/portal/tile004.png similarity index 100% rename from sprites/tile004.png rename to sprites/portal/tile004.png diff --git a/sprites/tile005.png b/sprites/portal/tile005.png similarity index 100% rename from sprites/tile005.png rename to sprites/portal/tile005.png diff --git a/sprites/tile006.png b/sprites/portal/tile006.png similarity index 100% rename from sprites/tile006.png rename to sprites/portal/tile006.png diff --git a/sprites/tile007.png b/sprites/portal/tile007.png similarity index 100% rename from sprites/tile007.png rename to sprites/portal/tile007.png diff --git a/sprites/tile008.png b/sprites/portal/tile008.png similarity index 100% rename from sprites/tile008.png rename to sprites/portal/tile008.png diff --git a/sprites/tile009.png b/sprites/portal/tile009.png similarity index 100% rename from sprites/tile009.png rename to sprites/portal/tile009.png diff --git a/sprites/tile010.png b/sprites/portal/tile010.png similarity index 100% rename from sprites/tile010.png rename to sprites/portal/tile010.png diff --git a/sprites/tile011.png b/sprites/portal/tile011.png similarity index 100% rename from sprites/tile011.png rename to sprites/portal/tile011.png diff --git a/sprites/tile012.png b/sprites/portal/tile012.png similarity index 100% rename from sprites/tile012.png rename to sprites/portal/tile012.png diff --git a/sprites/tile013.png b/sprites/portal/tile013.png similarity index 100% rename from sprites/tile013.png rename to sprites/portal/tile013.png diff --git a/sprites/tile014.png b/sprites/portal/tile014.png similarity index 100% rename from sprites/tile014.png rename to sprites/portal/tile014.png diff --git a/sprites/tile015.png b/sprites/portal/tile015.png similarity index 100% rename from sprites/tile015.png rename to sprites/portal/tile015.png