import pygame from player import Player from enemy import Enemy import random import time class Game: pygame.init() def __init__(self): self.WIDTH, self.HEIGHT = 1000, 500 self.WHITE = (255,255,255) self.GREEN = (0,200,0) self.screen = pygame.display.set_mode((self.WIDTH, self.HEIGHT)) pygame.display.set_caption("Beste IN1000 spill ever!") self.enemy_spawn_period = 5 self.enemy_spawn_timer = 0 self.score = 0 # Clock self.clock = pygame.time.Clock() def start(self): self._objects = [] self._objects_to_add = [] self._objects_to_remove = [] self.init_game_objects() self.running = True while self.running: self.draw() for event in pygame.event.get(): if event.type == pygame.QUIT: self.running = False elif event.type == pygame.MOUSEBUTTONUP: self._player.shoot() self.update() pygame.display.update() self.clock.tick(30) pygame.quit() def init_game_objects(self): self._player = Player(self, self.screen) enemy = Enemy(self, self.screen) enemy.target(self._player) self.add_object(self._player) self.add_object(enemy) def draw(self): self.screen.fill(self.GREEN) for obj in self._objects: obj.draw() def update(self): # Update game objects for obj in self._objects: obj.update() # Update game state if time.time() - self.enemy_spawn_timer > self.enemy_spawn_period: x = random.randint(0, self.WIDTH) y = random.randint(0, self.HEIGHT) new_enemy = Enemy(self, self.screen) new_enemy.set_pos(x,y) new_enemy.target(self._player) self.add_object(new_enemy) self.enemy_spawn_timer = time.time() # Remove deleted objects for obj in self._objects_to_remove: if obj not in self._objects: continue self._objects.remove(obj) self._objects_to_remove = [] # Add new objects for obj in self._objects_to_add: self._objects.append(obj) self._objects_to_add = [] def game_over(self): self.running = False print("You died!!! Lol noob") print(f"Your final score was only {self.score} points!") def add_object(self, obj): self._objects_to_add.append(obj) def remove_object(self, obj): self._objects_to_remove.append(obj) def get_objects(self): return self._objects def add_score(self, amount): self.score += amount