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