def down(self): if self.y >= len(self.map): return variable('int', '', 0) if (self.x + self.y) % 2 == 0: if self.map[self.y + 1][self.x].type != 'wall': self.y += 1 return variable('int', '', -1) return variable('int', '', 0)
def right(self): if self.x >= len(self.map[0]): return variable('int', '', 0) else: if self.map[self.y][self.x + 1].type != 'wall': self.x += 1 return variable('int', '', 1) return variable('int', '', 0)
def left(self): if self.x <= 0: return variable('int', '', 0) else: if self.map[self.y][self.x - 1].type != 'wall': self.x -= 1 return variable('int', '', -1) return variable('int', '', 0)
def up(self): if self.y <= 0: return variable('int', '', 0) if (self.x + self.y) % 2 == 0: return variable('int', '', 0) else: if self.map[self.y - 1][self.x].type != 'wall': self.y -= 1 return variable('int', '', 1) return variable('int', '', 0)
def move(self, direction): if direction == 'move': if (self.x+self.y) % 2 == 0: return self.down() else: return self.up() elif direction == 'left': return self.left() elif direction == 'right': return self.right() else: return variable('int', '', 0)
def lms(self): dist = 1 length = 5 if self._right: while self.map[self.y][self.x+dist].type == 'empty': if length == 0: return variable('int', '', 0) dist += 1 length -= 1 if self.map[self.y][self.x+dist].type == 'exit': return variable('int', '', -dist) elif self.map[self.y][self.x+dist].type == 'wall': return variable('int', '', dist) else: # left side while self.map[self.y][self.x-dist].type == 'empty': if length == 0: return variable('int', '', 0) dist += 1 length -= 1 if self.map[self.y][self.x+dist].type == 'exit': return variable('int', '', dist) elif self.map[self.y][self.x+dist].type == 'wall': return variable('int', '', -dist)