예제 #1
0
    def _move_cell(self, cell: Cell):
        # find possible directions
        possible_directions = Direction.all_directions()
        for c in self.__cells:
            if c.column - cell.column == 0:
                if c.row - cell.row == 1:
                    possible_directions.remove(Direction.DOWN)
                elif c.row - cell.row == -1:
                    possible_directions.remove(Direction.UP)
            elif c.row - cell.row == 0:
                if c.column - cell.column == 1:
                    possible_directions.remove(Direction.RIGHT)
                elif c.column - cell.column == -1:
                    possible_directions.remove(Direction.LEFT)
        if cell.column == self._size - 1:
            possible_directions.remove(Direction.RIGHT)
        if cell.column == 0:
            possible_directions.remove(Direction.LEFT)
        if cell.row == self._size - 1:
            possible_directions.remove(Direction.DOWN)
        if cell.row == 0:
            possible_directions.remove(Direction.UP)

        # move if possible
        if len(possible_directions) == 0:
            return
        cell.move(list(possible_directions)[0])