R: mikado (heading enum)

This commit is contained in:
Paul Hameteman 2025-10-14 22:13:55 +02:00
commit 61e293ee18
4 changed files with 42 additions and 20 deletions

View file

@ -6,7 +6,7 @@ class Rover {
if (command.size >= ROVER_MINIMUM_NEEDED_COMMANDS) {
state.positionX = command[ROVER_STARTING_POSITION_X].toInt()
state.positionY = command[ROVER_STARTING_POSITION_Y].toInt()
state.heading = command[ROVER_FACING_DIRECTION][ROVER_COMMANDLIST_DIRECTION]
state.heading = Heading.from(command[ROVER_FACING_DIRECTION][ROVER_COMMANDLIST_DIRECTION]) ?: Heading.NORTH
}
}
@ -22,28 +22,28 @@ class Rover {
private fun move() {
when (state.heading) {
HEADING_EAST -> state.positionX++
HEADING_SOUTH -> state.positionY--
HEADING_WEST -> state.positionX--
HEADING_NORTH -> state.positionY++
Heading.EAST -> state.positionX++
Heading.SOUTH -> state.positionY--
Heading.WEST -> state.positionX--
Heading.NORTH -> state.positionY++
}
}
private fun turnRight() {
when (state.heading) {
HEADING_EAST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_NORTH
HEADING_NORTH -> state.heading = HEADING_EAST
Heading.EAST -> state.heading = Heading.SOUTH
Heading.SOUTH -> state.heading = Heading.WEST
Heading.WEST -> state.heading = Heading.NORTH
Heading.NORTH -> state.heading = Heading.EAST
}
}
private fun turnLeft() {
when (state.heading) {
HEADING_EAST -> state.heading = HEADING_NORTH
HEADING_NORTH -> state.heading = HEADING_WEST
HEADING_WEST -> state.heading = HEADING_SOUTH
HEADING_SOUTH -> state.heading = HEADING_EAST
Heading.EAST -> state.heading = Heading.NORTH
Heading.NORTH -> state.heading = Heading.WEST
Heading.WEST -> state.heading = Heading.SOUTH
Heading.SOUTH -> state.heading = Heading.EAST
}
}
@ -64,8 +64,3 @@ private const val ROVER_COMMANDLIST_DIRECTION = 0
private const val COMMAND_TURN_LEFT = 'L'
private const val COMMAND_TURN_RIGHT = 'R'
private const val COMMAND_MOVE = 'M'
internal const val HEADING_EAST = 'E'
internal const val HEADING_NORTH = 'N'
internal const val HEADING_WEST = 'W'
internal const val HEADING_SOUTH = 'S'