Created
January 3, 2020 15:22
-
-
Save LukeSkyRunner/71b64629b04ac4bb41482e3bb039a99e to your computer and use it in GitHub Desktop.
JavaScript Mars Rover
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var rover = { | |
x : 0, | |
y : 0, | |
direction : "N", | |
travelLog : [0,0] | |
} | |
//Add additional rovers to the map. | |
// ====================== | |
//Create obstacles for the rover too | |
var grid = [ | |
[null, null, "obstacle", null, null, null, null, null, null, null], | |
[null, null, null, null, null, "obstacle", null, null, null, null], | |
[null, null, null, null, null, "obstacle", null, null, null, null], | |
[null, null, null, null, "obstacle", null, null, null, null, null], | |
[null, null, null, null, null, null, "obstacle", null, null, null], | |
[null, null, null, null, null, null, null, null, null, null], | |
[null, "obstacle", null, null, null, null, null, null, null, null], | |
[null, null, null, null, null, null, null, "obstacle", null, null], | |
[null, null, null, null, null, null, null, null, null, null], | |
[null, null, null, "obstacle", null, null, null, null, null, null] | |
]; | |
// ====================== | |
//create a function to turn the rover: | |
function turnLeft(rover){ | |
console.log("turnLeft was called!"); | |
switch ((rover).direction){ | |
case "N": | |
(rover).direction="S"; | |
break; | |
case "W": | |
(rover).direction="S"; | |
break; | |
case "S": | |
(rover).direction="E"; | |
break; | |
case "E": | |
(rover).direction="N"; | |
break; | |
default: | |
} | |
console.log (`Rover Direction: ${(rover).direction}`) | |
} | |
//turnLeft(rover); | |
//turnLeft(rover); | |
//turnLeft(rover); | |
function turnRight(rover){ | |
console.log("turnRight was called!"); | |
switch (rover.direction){ | |
case "N": | |
rover.direction="E"; | |
break; | |
case "W": | |
rover.direction="N"; | |
break; | |
case "S": | |
rover.direction="W"; | |
break; | |
case "E": | |
rover.direction="S"; | |
break; | |
} | |
console.log (`Rover Direction: ${rover.direction}`) | |
} | |
//turnRight(rover); | |
//turnRight(rover); | |
//turnRight(rover); | |
//create a function to move the rover forward or backward based on its direction, | |
function moveForward(rover){ | |
console.log("moveForward was called"); | |
switch (rover.direction){ | |
case rover.direction = "N" : | |
if (rover.y === 0){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else if (grid[rover.y-1] != null) { | |
//report the obstacle as found | |
console.log ("Rover can crash with an obstacle! STOP!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else if (rover.y == rover2.y && rover.x == rover2.x){ | |
} | |
else { | |
rover.y--; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "S" : | |
if (rover.y === 9){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover current position is ${rover.x}${rover.y}`); | |
} | |
else if (grid[rover.y+1] != null) { | |
console.log ("Rover can crash with an obstacle! STOP!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.y++; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "W" : | |
if (rover.x === 0){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else if (grid[rover.x-1] != null) { | |
console.log ("Rover can crash with an obstacle! STOP!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.x--; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "E" : | |
if (rover.x === 0){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else if (grid[rover.x+1] != null) { | |
console.log ("Rover can crash with an obstacle! STOP!"); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.x++; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover current position is ${rover.x},${rover.y}`); | |
} | |
break; | |
} | |
} | |
//For testing before i set the position of the rover in the middle of the grid | |
//moveForward(rover); | |
//moveForward(rover); | |
//moveForward(rover); | |
//moveForward(rover); | |
//Create another function called moveBackward() that will move the rover back. This will be very similar to the moveForward() function. | |
function moveBackward(rover){ | |
console.log("moveBackward was called"); | |
switch (rover.direction){ | |
case rover.direction = "N" : | |
if (rover.y === 9){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.y++; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "S" : | |
if (rover.y === 0){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.y--; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "W" : | |
if (rover.x === 9){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.x++; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
break; | |
case rover.direction = "E" : | |
if (rover.x === 9){ | |
console.log ("You can't place Rover outside of the board!"); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
else { | |
rover.x--; | |
rover["travelLog"].push([rover.x,rover.y]); | |
console.log (`The last positions of the Rover are: ${rover.travelLog}`); | |
console.log (`Rover position is ${rover.x},${rover.y}`); | |
} | |
break; | |
} | |
} | |
//moveBackward(rover); | |
//moveBackward(rover); | |
//moveBackward(rover); | |
//moveBackward(rover); | |
//create a function to receive a list of commands and move based off of those commands. | |
var listOfCommands = ["r","f","f","r","f","f","l","f","r","f","f"]; | |
function commands(listOfCommands){ | |
for (var i=0; i<listOfCommands.length; i++){ | |
switch (listOfCommands[i]) { | |
case "f": | |
moveForward(rover); | |
break; | |
case "r": | |
turnRight(rover); | |
break; | |
case "l": | |
turnLeft(rover); | |
break; | |
case "b": | |
moveBackward(rover); | |
break; | |
//Bonus3: Add validation so that the inputs must be f, b, r, or l | |
default: | |
console.log("Only this commands are possible: l, r, b or f"); | |
break; | |
} | |
} | |
} | |
//commands(listOfCommands); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment