feat: complete the game
This commit is contained in:
@@ -1,18 +1,43 @@
|
||||
"""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_state
|
||||
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()
|
||||
|
||||
@@ -20,8 +45,29 @@ def main():
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user