spele/plagiats/game.py

77 lines
2.6 KiB
Python

import random
import pygame
import pygame.font
from settings import GameSettings
from map import Map
from entity import Enemy, Player
from projectiles import Projectiles
from camera import Camera
class Game:
def __init__(self):
self.settings = GameSettings()
self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
pygame.display.set_caption(self.settings.caption)
self.clock = pygame.time.Clock()
self.map = Map(self, 0, 0)
player_spawn_block = self.map.player_spawn
offset = [
(self.settings.screen_width // 2) - player_spawn_block.x - (self.settings.block_size // 2),
(self.settings.screen_height // 2) - player_spawn_block.y - (self.settings.block_size // 2)
]
self.map.change_coords(offset[0], offset[1])
self.enemies = pygame.sprite.Group()
self.projectiles = Projectiles(self)
d = (self.settings.block_size - self.settings.entity_size) // 2
self.player = Player(self, self.map.player_spawn.x + d, self.map.player_spawn.y + d)
self.camera = Camera(self)
self.score = 0
def run(self):
while self.settings.running:
#FPS control
self.clock.tick(self.settings.fps)
#Events
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.settings.running = False
self.camera.update()
self.enemies.update()
#Spawn enemies
if self.settings.enemy_spawn_rev < self.settings.enemy_spawn_rev_thresh:
self.settings.enemy_spawn_rev -= self.settings.enemy_spawn_rev_delta
if random.randint(1, self.settings.enemy_spawn_rev) == 1:
self.spawn_enemy()
#Render
self.screen.fill((0, 0, 0))
self.map.update()
#print(map)
self.player.update()
self.enemies.draw(self.screen)
self.projectiles.update()
self.draw_score()
pygame.display.flip()
return self.score
def spawn_enemy(self):
es = random.choice(self.map.enemy_spawns)
self.enemies.add(Enemy(self, es.x, es.y))
def draw_score(self):
fnt = pygame.font.SysFont("calibri", 40, True)
score = fnt.render("Score: " + str(self.score), True, (255, 255, 255), (0, 0, 0))
self.screen.blit(score, (0, 0))