#!/usr/bin/env python from enum import Enum, auto class Map: width: int height: int tiles: list def __init__(self, width: int, height: int, tiles: list): self.width = width self.height = height self.tiles = tiles @staticmethod def load(filename: str): with open(filename, "r") as f: file = f.read() return Map.load_from_string(file) @staticmethod def load_from_string(content: str): lines = content.split("\n") lines = [line for line in lines if line] height = len(lines) width = len(lines[0]) tiles = [[Tile.from_char(c) for x, c in enumerate(line)] for y, line in enumerate(lines)] return Map(width, height, tiles) class Tile(Enum): EMPTY = auto() WALL = auto() FLOOR = auto() @staticmethod def from_char(c: str): return {'#': Tile.WALL, '.': Tile.FLOOR, ' ': Tile.EMPTY}[c] class Entity: x: int y: int def move(self, x: int, y: int) -> None: self.x = x self.y = y