X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=erdslangetjie%2Flevel.py;h=e4bc0e09a58072ea9c28dccdd2e4f8a790d9a6fb;hb=aa7da22c57b03b019d046ddd5a1efd1b837751d2;hp=73878aa927bf438439d6b6c08d06dabf2b021a25;hpb=517be20b35d84ce31d2ba7270a4c7fbb65297db4;p=erdslangetjie.git diff --git a/erdslangetjie/level.py b/erdslangetjie/level.py index 73878aa..e4bc0e0 100644 --- a/erdslangetjie/level.py +++ b/erdslangetjie/level.py @@ -73,9 +73,9 @@ class Level(object): exit_points = 0 for line in self._data: if ENTRY in line: - entry_points += 1 + entry_points += line.count(ENTRY) if EXIT in line: - exit_points += 1 + exit_points += line.count(EXIT) if entry_points == 0: raise RuntimeError('No entry point') if entry_points > 1: @@ -93,11 +93,7 @@ class Level(object): return self._data[pos[1]][pos[0]] def set_tile_type(self, pos, new_type): - print '\n'.join([''.join(x) for x in self._data]) self._data[pos[1]][pos[0]] = new_type - print - print '\n'.join([''.join(x) for x in self._data]) - print pos, self._in_limits(pos) new_tile = self._get_tile_image(pos, new_type) self._tiles[pos[1]][pos[0]] = new_tile self._changed.append((pos, new_tile)) @@ -109,7 +105,6 @@ class Level(object): if not self._in_limits(new_pos): continue tile = self._data[new_pos[1]][new_pos[0]] - print new_pos, tile new_tile = self._get_tile_image(new_pos, tile) self._tiles[new_pos[1]][new_pos[0]] = new_tile self._changed.append((new_pos, new_tile)) @@ -120,6 +115,9 @@ class Level(object): def at_exit(self, pos): return pos in self.exit_pos + def get_level_data(self): + return '\n'.join(reversed([''.join(x) for x in self._data])) + def _get_wall_tile(self, pos): # Is the neighbour in this direction also a wall? x, y = pos @@ -181,7 +179,6 @@ class Level(object): self._data[pos[1]][pos[0]] except IndexError: return False - print pos, self._data[pos[1]][pos[0]] return True def blocked(self, pos): @@ -244,10 +241,16 @@ class LevelList(object): line = line.strip() if os.path.exists(filepath(line)): level_file = load(line) - self.levels.append(Level(level_file)) + level = Level(level_file) level_file.close() + try: + level.validate() + except RuntimeError as err: + raise RuntimeError( + 'Invalid level %s in level_list: %s' % (line, err)) + self.levels.append(level) else: - print 'Level list includes non-existant level %s' % line + raise RuntimeError('Level list includes non-existant level %s' % line) level_list.close() self._cur_level = 0