Мне сложно определить, как сохранить предыдущее значение myRover.position. Мне нужно получить к нему доступ, чтобы сделать резервную копию при приближении к препятствию.Как получить доступ к старой стоимости - JavaScript
var myRover = {
position: [0, 0],
direction: 'N',
obstacleX: [0],
obstacleY: [2],
marsGrid: [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
};
//prevent rover from falling off of planet Mars!
//my best attempt at wrapping a 2d array :-(
function preventSuddenDeath() {
if (myRover.position[0] > 9) {
myRover.position[0] = 0;
}
if (myRover.position[0] < 0) {
myRover.position[0] = 9;
}
if (myRover.position[1] > 9) {
myRover.position[1] = 0;
}
if (myRover.position[1] < 0) {
myRover.position[1] = 9;
}
}
Это моя функция для маневрирования препятствия.
function maneuverObstacle() {
if (myRover.position[0] == myRover.obstacleX && myRover.position[1] == myRover.obstacleY) {
console.log("Crater ahead at " + myRover.position + ". Please change direction!");
return myRover.position();
}
}
Я попытался установить OldValue равную CurrentValue как таковой и, как я предполагаю, он просто переписывает OldValue к текущему.
И остальное, если полезно.
function move_forward() {
if (myRover.direction == 'N') {
myRover.position[0] -= 1;
} else if (myRover.direction == 'E') {
myRover.position[1] += 1;
} else if (myRover.direction == 'S') {
myRover.position[0] += 1;
} else if (myRover.direction == 'W') {
myRover.position[1] -= 1;
} preventSuddenDeath();
}
function move_backward() {
if (myRover.direction == 'N') {
myRover.position[0] += 1;
} else if (myRover.direction == 'E') {
myRover.position[1] -= 1;
} else if (myRover.direction == 'S') {
myRover.position[0] -= 1;
} else if (myRover.direction == 'W') {
myRover.position[1] += 1;
} preventSuddenDeath();
}
function turn_left() {
if (myRover.direction == 'N') {
myRover.direction = 'W';
} else if (myRover.direction == 'E') {
myRover.direction = 'N';
} else if (myRover.direction == 'S') {
myRover.direction = 'E';
} else if (myRover.direction == 'W') {
myRover.direction = 'S';
}
}
function turn_right() {
if (myRover.direction == 'N') {
myRover.direction = 'E';
} else if (myRover.direction == 'E') {
myRover.direction = 'S';
} else if (myRover.direction == 'S') {
myRover.direction = 'W';
} else if (myRover.direction == 'W') {
myRover.direction = 'N';
}
}
function letsGoMrRover() {
//take user input from html prompt and convert the string to an array
var commandString = document.getElementById("command").value;
var output = document.getElementById("demo");
var csLength = commandString.length;
var commandArray = [];
//console.log the starting position
output.innerHTML = "Rover is at " + myRover.position + " and heading " + myRover.direction + "<br />";
for (var i=0; i < csLength; i++) {
commandArray[i] = commandString[i];
switch (commandArray[i]) {
case 'f':
move_forward();
break;
case 'b':
move_backward();
break;
case 'l':
turn_left();
break;
case 'r':
turn_right();
break;
}
maneuverObstacle();
console.log(myRover.position);
}
}
Просто введите переменную с именем 'prev' или что-то в этом роде. –
Я должен проверить препятствие перед тем, как переместить ровера. make checkObstacle - функция, которая принимает робота x, y в качестве параметров и возвращает, если его нормально перемещать, таким образом вы можете передать x + 1, y до фактического изменения робота x до x + 1 – softwarenewbie7331
. Зачем нужна мешалка и решетка решетки объекта ровера? Кажется, это три разных вещи. –