/// <summary> /// SpinRight to change the direction of Rover based on input of Controller. /// Skips the action of controller if it finds another rover for the action. /// </summary> public void spinRight() { char currentDirection = getDirection(); switch (currentDirection) { case 'N': if (!(MarsHelper.checkCollision(_xcoord, _ycoord, 'E'))) { setDirection('E'); } break; case 'W': if (!(MarsHelper.checkCollision(_xcoord, _ycoord, 'N'))) { setDirection('N'); } break; case 'S': if (!(MarsHelper.checkCollision(_xcoord, _ycoord, 'W'))) { setDirection('W'); } break; case 'E': if (!(MarsHelper.checkCollision(_xcoord, _ycoord, 'S'))) { setDirection('S'); } break; } }
/// <summary> /// Advance method to change the co-ordinates based on controller input. /// Skips the action of controller if it finds another rover for the action, /// or crosses the boundary limits. /// </summary> public void advance() { char currentDirection = getDirection(); switch (currentDirection) { case 'N': if ((_ycoord + 1 <= Plateau.getMaxy()) && (_ycoord + 1 >= 0) && (!(MarsHelper.checkCollision(_xcoord, _ycoord + 1, _direction)))) { _ycoord = _ycoord + 1; } break; case 'W': if ((_xcoord - 1 <= Plateau.getMaxx()) && (_xcoord - 1 >= 0) && (!(MarsHelper.checkCollision(_xcoord - 1, _ycoord, _direction)))) { _xcoord = _xcoord - 1; } break; case 'E': if ((_xcoord + 1 <= Plateau.getMaxx()) && (_xcoord + 1 >= 0) && (!(MarsHelper.checkCollision(_xcoord + 1, _ycoord, _direction)))) { _xcoord = _xcoord + 1; } break; case 'S': if ((_ycoord - 1 <= Plateau.getMaxy()) && (_ycoord - 1 >= 0) && (!(MarsHelper.checkCollision(_xcoord, _ycoord - 1, _direction)))) { _ycoord = _ycoord - 1; } break; } }