Files
games/2022-2d-shooter/code/game.py
T

62 lines
1.4 KiB
Python

# library imports
import sys
import pygame
from pytmx.util_pygame import load_pygame
# local imports
from settings import *
from player import Player
from allsprites import AllSprites
from sprite import Sprite
class Game:
def __init__(self):
pygame.init()
self.display_surface = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('Western shooter')
self.clock = pygame.time.Clock()
# groups
self.all_sprites = AllSprites()
self.obstacles = pygame.sprite.Group()
self.setup()
def setup(self):
tmx_map = load_pygame('../data/map.tmx')
# tiles
for x, y, surf in tmx_map.get_layer_by_name('Fence').tiles():
Sprite((x * 64, y * 64),surf,[self.all_sprites, self.obstacles])
# objects
for obj in tmx_map.get_layer_by_name('Objects'):
Sprite((obj.x, obj.y),obj.image,[self.all_sprites, self.obstacles])
# entities
for obj in tmx_map.get_layer_by_name('Entities'):
if obj.name == 'Player':
self.player = Player((obj.x,obj.y), self.all_sprites, PATHS['player'], self.obstacles)
def run(self):
while True:
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
dt = self.clock.tick() / 1000
# update groups
self.all_sprites.update(dt)
# draw groups
self.all_sprites.customize_draw(self.player)
pygame.display.update()
# execute Game
if __name__ == '__main__':
Game().run()