+ self.tiles.append(tile_line)
+
+ def get_tiles(self):
+ return self.tiles
+
+ def at_exit(self, pos):
+ return pos in self.exit_pos
+
+ def blocked(self, pos):
+ if pos[0] < 0:
+ return True
+ if pos[1] < 0:
+ return True
+ try:
+ tile = self.data[pos[1]][pos[0]]
+ except IndexError:
+ return True
+ if tile == '.':
+ return True
+ return False
+
+
+class LevelList(object):
+
+ LEVELS = 'level_list'
+
+ def __init__(self):
+ self.levels = []
+ level_list = load(self.LEVELS)
+ for line in level_list:
+ line = line.strip()
+ if os.path.exists(filepath(line)):
+ level_file = load(line)
+ self.levels.append(Level(level_file))
+ level_file.close()
+ else:
+ print 'Level list includes non-existant level %s' % line
+ level_list.close()
+ self._cur_level = 0
+
+ def get_current_level(self):
+ if self._cur_level < len(self.levels):
+ return self.levels[self._cur_level]
+ else:
+ return None
+
+ def advance_to_next_level(self):
+ self._cur_level += 1
+ return self.get_current_level()