簡體   English   中英

如何在 Javascript 中將對象包裝在網格上?

[英]How do you wrap an object on a grid in Javascript?

我目前正在研究火星探測器 Kata。 我創建了一個 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
];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM