53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
from . import map
|
|
import pygame as pg
|
|
import numpy as np
|
|
|
|
class App:
|
|
def __init__(self, world):
|
|
pg.init()
|
|
self.screen = pg.display.set_mode((800, 600))
|
|
self.clock = pg.time.Clock()
|
|
self.running = True
|
|
self.world = world
|
|
self.map = map.Map(self.world)
|
|
|
|
def start(self):
|
|
dt = 0.0
|
|
|
|
while self.running:
|
|
start = pg.time.get_ticks()
|
|
|
|
for event in pg.event.get():
|
|
if event.type == pg.QUIT:
|
|
self.running = False
|
|
|
|
# EVENTS
|
|
# ======
|
|
keys = pg.key.get_pressed()
|
|
delta = np.array([0.0, 0.0])
|
|
|
|
if keys[pg.K_UP]:
|
|
delta[1] -= 1.0
|
|
if keys[pg.K_DOWN]:
|
|
delta[1] += 1.0
|
|
if keys[pg.K_LEFT]:
|
|
delta[0] -= 1.0
|
|
if keys[pg.K_RIGHT]:
|
|
delta[0] += 1.0
|
|
|
|
player = self.world.get_player()
|
|
norm = np.linalg.norm(delta)
|
|
if norm > 0:
|
|
delta /= norm
|
|
delta *= player.speed
|
|
player.pos += delta * dt
|
|
|
|
self.screen.fill('black')
|
|
self.map.draw(self.screen)
|
|
pg.display.flip()
|
|
self.clock.tick(60)
|
|
dt = (pg.time.get_ticks() - start)/1000.0
|
|
pg.quit()
|
|
|
|
|