为什么所有坐标都具有相同的值?

时间:2017-12-25 06:19:39

标签: javascript

我正在尝试制作蛇克隆,但每当我运行它时,尾部碎片都会被分配与头部相同的值。我不知道为什么会这样。

这段代码应该绘制整个尾部,然后将每个尾部的坐标更新为其前面的部分。

for (var i = 1; i < snake.length; i++) {
    snake[i].draw();
    snake[i].x = snake[i-1].x;
    snake[i].y = snake[i-1].y;
}

完整代码:https://drive.google.com/open?id=1HaFBpaasoqNTi5tnNLr5O9vIM4oTujgv

1 个答案:

答案 0 :(得分:1)

我认为你需要相反的任务。

snake[i - 1].x = snake[i].x;
snake[i - 1].y = snake[i].y;

用你的方法你有这个

...  ...  ...
0.1  0.1  0.1
1.1  0.1  0.1
1.0  1.0  0.1

代码

&#13;
&#13;
const coor = [
  {x: 0, y: 1},
  {x: 1, y: 1},
  {x: 1, y: 0}
];

for(let i = 1; i < coor.length; i++) {
  coor[i].x = coor[i - 1].x;
  coor[i].y = coor[i - 1].y;
}

console.log(coor);
&#13;
&#13;
&#13;

根据给定你得到这个。最后一个是没有更多的项目。

...  ...  ...
0.1  1.1  1.1
1.1  1.1  1.0
1.0  1.0  ...

代码

&#13;
&#13;
const coor = [
  {x: 0, y: 1},
  {x: 1, y: 1},
  {x: 1, y: 0}
];

for(let i = 1; i < coor.length; i++) {
  coor[i - 1].x = coor[i].x;
  coor[i - 1].y = coor[i].y;
}

console.log(coor);
&#13;
&#13;
&#13;