def load_from_map_file(self): layout_file = open(self.map_file) r = csv.reader(layout_file, delimiter=',') first_line = r.next() self.width = int(first_line[0]) self.height = int(first_line[1]) self.scenario_number = int(first_line[2]) self.terrain_layer = Matrix(self.width, self.height) self.scenario_layer = [Matrix(self.width, self.height) for i in\ range(self.scenario_number)] y = 0 for line in r: if len(line) == self.width: for x, value in enumerate(line): self.terrain_layer[x, y] = self.terrain_tileset.\ tiles[int(value)] y += 1 if y >= self.height: break for i in xrange(self.scenario_number): y = 0 for line in r: if len(line) == self.width: for x, value in enumerate(line): tile = self.scenario_tileset[i].tiles[int(value)] self.scenario_layer[i][x, y] = tile y += 1 if y >= self.height: break layout_file.close()
def __init__(self, width, height, width_in_cells, height_in_cells, visible=False, focusable=False, theme=None): Div.__init__(self, width, height, focusable, theme) self.visible = visible self.width_in_cells = width_in_cells self.height_in_cells = height_in_cells self.cell_width = self.width / self.width_in_cells self.cell_height = self.height / self.height_in_cells self.cells = Matrix(width_in_cells, height_in_cells) for y in xrange(height_in_cells): for x in xrange(width_in_cells): div = Div(self.cell_width, self.cell_height, focusable=False, theme=self.theme) pos = (x * self.cell_width, y * self.cell_height) self.cells[x, y] = div self.add_widget(div, pos)
def __init__(self, map_file, terrain_tileset_files, scenario_tileset_files_list): """ *Constructor:* Initialize the MapModel with a layout defined by *map_file* (a .map file). The terrain tileset is specified by *terrain_tileset_files*, which is a tuple (tileset image filename, tileset boundaries filename). Tileset image filename should be a bitmap file (.png typically) and tileset boundaries filename) should be a .bnd file. The scenario tilesets are specified by *scenario_tileset_files_list*, a list of tuples like the one passed as *terrain_tileset_files*. Each will correspond to a scenario layer. """ Model.__init__(self) self.world = None self.id = None self.music = None # Set up party self.party = None self.party_avatar = None # Load file data self.map_file = map_file self.terrain_tileset_files = terrain_tileset_files self.scenario_tileset_files_list = scenario_tileset_files_list self.terrain_tileset = Tileset(self.terrain_tileset_files[0], self.terrain_tileset_files[1]) self.scenario_tileset = [Tileset(i, j) for i, j in\ self.scenario_tileset_files_list] self.load_from_map_file() # Set up local state self.local_state = None # Set up objects self.objects = [] self.below_objects = [] self.obstacle_objects = [] self.above_objects = [] self.updatable_objects = [] self.object_layer = Matrix(self.width, self.height) for x in range(self.width): for y in range(self.height): self.object_layer[x, y] = ObjectCell() # Set up areas self.areas = [] self.area_layer = Matrix(self.width, self.height) for x in range(self.width): for y in range(self.height): self.area_layer[x, y] = [] # Set up context system self.pause_delay = 0 self.contexts = []
print m print def test_get(x, y): try: value = m[x, y] print 'Getting', str(x) + ',', str(y), 'as', value except: print 'Error getting x=' + str(x), 'y=' + str(y) print m print if __name__ == '__main__': m = Matrix(3, 4) test_set(1, 1, 'a') test_set(1, 2, 'b') test_set(0, 3, 'c') test_set(3, 2, 'd') test_get(0, 1) test_get(1, 1) test_get(2, 2) test_get(0, 3) test_get(3, 2) m.resize(100, 100) test_get(99, 99)