"""Entrypoint for asteroids game""" import sys import pygame from asteroid import Asteroid from asteroidfield import AsteroidField from constants import SCREEN_HEIGHT, SCREEN_WIDTH from logger import log_event, log_state from player import Player from shot import Shot def main(): """Main method for asteroids game""" print(f"Starting Asteroids with pygame version: {pygame.version.ver}") print(f"Screen width: {SCREEN_WIDTH}") print(f"Screen height: {SCREEN_HEIGHT}") pygame.init() clock = pygame.time.Clock() dt = 0.0 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) asteroids = pygame.sprite.Group() updatable = pygame.sprite.Group() drawable = pygame.sprite.Group() shots = pygame.sprite.Group() Player.containers = (updatable, drawable) Asteroid.containers = (asteroids, updatable, drawable) AsteroidField.containers = (updatable) Shot.containers = (updatable, drawable, shots) player = Player(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2) AsteroidField() while True: log_state() for event in pygame.event.get(): if event.type == pygame.QUIT: return for u in updatable: u.update(dt) for a in asteroids: if a.collides_with(player): log_event("player_hit") print("Game over!") sys.exit() for s in shots: if a.collides_with(s): log_event("asteroid_shot") s.kill() a.split() screen.fill("black") for d in drawable: d.draw(screen) pygame.display.flip() dt = clock.tick(60) / 1000 if __name__ == "__main__": main()