squirrel-battle/dungeonbattle/game.py

67 lines
1.7 KiB
Python

from .interfaces import Map
from .mapdisplay import MapDisplay
from .settings import Settings
from .term_manager import TermManager
class Game:
INSTANCE = None
def init(self) -> None:
Game.INSTANCE = self
self.settings = Settings()
self.settings.load_settings()
self.settings.write_settings()
with TermManager() as term_manager:
self._start_game(term_manager.screen)
def _start_game(self, screen):
# TODO Generate map, or make the possibility to load another one
m = Map.load("example_map.txt")
player = Player()
self.player = player
player.y = 1
player.x = 6
d = MapDisplay(m, player)
while True:
screen.clear()
screen.refresh()
d.display(player.getPosY(), player.getPosX())
key = screen.getkey()
self.handle_key_pressed(key)
def handle_key_pressed(self, key):
# TODO load keys from settings
if key == 'z' or key == 'KEY_UP':
self.player.move_up()
if key == 's' or key == 'KEY_DOWN':
self.player.move_down()
if key == 'q' or key == 'KEY_LEFT':
self.player.move_left()
if key == 'd' or key == 'KEY_RIGHT':
self.player.move_right()
class Player:
# FIXME Should be elsewhere, only useful to don't break the previous code
y: int = 0
x: int = 0
def move_up(self):
self.y -= 1
def move_down(self):
self.y += 1
def move_left(self):
self.x -= 1
def move_right(self):
self.x += 1
def getPosX(self):
return self.x
def getPosY(self):
return self.y