javascript - 如何在 Javascript 中将对象包装在网格上?

标签 javascript loops if-statement

我目前正在研究火星漫游者卡塔。我创建了一个 10x10 网格,漫游者可以向前和向后移动并改变方向 ['N'、'E'、'S'、'W']。因为网格实际上代表一个球形行星,所以漫游车应该环绕 10x10 网格而不是完全离开。我正在尝试对包装进行编码。包含更多上下文的对象。我目前正在使用 if/else 语句来确定漫游器应该换行的情况,但我知道我把它弄得太复杂了。 switch 语句会更有效吗?或者我可以以某种方式使用循环吗?我是 JavaScript 新手。非常感谢。

var myRover = {
  position: [[0],[0]],
  direction: 'N',
  roverDirections = ['N', 'E', 'S', 'W'],
  marsGrid: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],
  obstacles: [];
};

if (command === 'f') {

if ((myRover.position[[0],[0]]) && (myRover.direction === 'S')) {
  myRover.position[[10],[0]];
}

else if ((myRover.position[[0],[0]]) && (myRover.direction === 'W')) {
  myRover.position[[0],[10]];
}

if ((myRover.position[[0],[10]]) && (myRover.direction === 'E')) {
  myRover.position[[0],[0]];
}

else if ((myRover.position[[0],[10]]) && (myRover.direction === 'S')) {
  myRover.position[[10],[10]];
}

if ((myRover.position[[10],[0]]) && (myRover.direction === 'N')) {
  myRover.position[[0],[0]];
}

else if ((myRover.position[[10],[0]]) && (myRover.direction === 'W')) {
  myRover.position[[10],[10]];
}

if ((myRover.position[[10],[10]]) && (myRover.direction === 'N')) {
  myRover.position[[0],[10]];
}

else if ((myRover.position[[0],[0]]) && (myRover.direction === 'E')) {
  myRover.position[[10],[0]];
}


}

最佳答案

您可以使用一个对象来计算给定方向的漫游器的新位置。

directions = {
    N: [0, 9], // 9 because length of x - 1 and the positive remainder operator
    W: [9, 0], // 9 because length of y - 1
    O: [1, 0],
    S: [0, 1]
};

然后你可以确定新的位置

direction = 'S';
newPos = [
    (oldPos[0] + directions[direction][0]) % 10,
    (oldPos[1] + directions[direction][1]) % 10
];

关于javascript - 如何在 Javascript 中将对象包装在网格上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514476/

相关文章:

java - 为什么我不能在 '_' 语句中与 "if"char 进行比较?

c - (int ret = 0; !ret && ret !=0) 之间的区别

javascript - 同步返回异步onload事件的值?

php css/js 缩小器?

javascript - 如何检查字符串是否是有效的 JSON 字符串?

python - 在Python中通过字符串制作A ROT13

javascript - 读取 URL 扩展并从中删除 [.]

loops - Octave fzero 不是有效的初始包围

loops - 脚本运行时执行时间限制

java - 使用 ComboBox if 语句时,方程答案不会输出到 JTextField