#!/usr/bin/python3 from sprite_stacking_engine.stacked_sprite import * from random import uniform P = "player" A, B, C = "Robot", "Building", "Bla" MAP = [ # two dimensional object matrix [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, B, B, B, B], [0, 0, A, A, 0, B, B, B, B], [0, 0, A, A, P, B, B, B, B], [0, 0, A, A, 0, B, B, B, B], [0, 0, 0, 0, C, B, B, B, B], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], ] MAP_SIZE = MAP_WIDTH, MAP_HEIGHT = vec2(len(MAP), len(MAP[0])) MAP_CENTER = MAP_SIZE / 2 class Scene: def __init__(self, engine): self.engine = engine self.app = engine.app self.load_scene() def load_scene(self): rand_rot = lambda: uniform(0, 360) rand_pos = lambda pos: pos + vec2(uniform(-0.25, 0.25)) for j, row in enumerate(MAP): # loop through all objects on the map for i, name in enumerate(row): pos = vec2(i, j) + vec2(0.5) if name == "player": self.engine.player.offset = pos * TILE_SIZE elif name: if name == "Bla": AnimatedStackedSprite(self.engine, name=name, pos=rand_pos(pos), rot=rand_rot()) else: StackedSprite(self.engine, name=name, pos=rand_pos(pos), rot=rand_rot())