蛇怎么会带着这些代码移动?
How come the snake moves with these codes?
我刚刚看了一个youtuber做的蛇游戏,我不明白这些代码是如何让蛇移动的。这里的 x[] 是 x 坐标,而 y[] 是 y 坐标。 youtube上并没有真正解释太多,所以我希望我能在这里得到答案。
for(int i=bodyParts;i>0;i--) {
x[i]=x[i-1];
y[i]=y[i-1];
}
switch(direction) {
case 'U':
y[0] = y[0]-UNIT_SIZE;
break;
case 'D':
y[0] = y[0]+UNIT_SIZE;
break;
case 'L':
x[0] = x[0]-UNIT_SIZE;
break;
case 'R':
x[0] = x[0]+UNIT_SIZE;
break;
default:
break;
}
我们这里没有太多的上下文可以继续,但我会猜测 (x[0]
, y[0]
) 是蛇头的坐标,并且 (x[i]
, y[i]
) 蛇的每个剩余 body 部分的坐标。
switch语句的body根据移动的方向调整头部坐标,例如向下移动(case 'D'
),y-coordinatey[0]
在 y[0] = y[0]+UNIT_SIZE;
中增加了 UNIT_SIZE
。
for 循环遍历蛇的每个 body 部分,将其移动到下一个 body 部分之前所在的位置。例如,如果你的蛇是
0 1 2 3
4
5 6
其中0
是头,向左移动,蛇就会变成
0 1 2 3 4
5
6
其中 2
已移至 1
所在位置,3
已移至 2
所在位置,依此类推。这就是循环
的原因
for (int i = bodyParts; i > 0; i--) {
x[i] = x[i-1];
y[i] = y[i-1];
}
将第 i
个 body 部分移动到第 i-1
个 body 部分之前所在的位置。
for(int i=bodyParts;i>0;i--) {
x[i]=x[i-1];
y[i]=y[i-1];
}
在此,蛇的body部分x[i]
向后移动1space,表示蛇在移动。
switch(direction) {
case 'U':
y[0] = y[0]-UNIT_SIZE;
break;
case 'D':
y[0] = y[0]+UNIT_SIZE;
break;
case 'L':
x[0] = x[0]-UNIT_SIZE;
break;
case 'R':
x[0] = x[0]+UNIT_SIZE;
break;
default:
break;
}
你在这里没有提供很多上下文,但我假设当它的情况 'U'
时,蛇的第一个 body 部分将等于自身减去你给定的单位大小。 'D' 的情况反之亦然,左右类似。
我刚刚看了一个youtuber做的蛇游戏,我不明白这些代码是如何让蛇移动的。这里的 x[] 是 x 坐标,而 y[] 是 y 坐标。 youtube上并没有真正解释太多,所以我希望我能在这里得到答案。
for(int i=bodyParts;i>0;i--) {
x[i]=x[i-1];
y[i]=y[i-1];
}
switch(direction) {
case 'U':
y[0] = y[0]-UNIT_SIZE;
break;
case 'D':
y[0] = y[0]+UNIT_SIZE;
break;
case 'L':
x[0] = x[0]-UNIT_SIZE;
break;
case 'R':
x[0] = x[0]+UNIT_SIZE;
break;
default:
break;
}
我们这里没有太多的上下文可以继续,但我会猜测 (x[0]
, y[0]
) 是蛇头的坐标,并且 (x[i]
, y[i]
) 蛇的每个剩余 body 部分的坐标。
switch语句的body根据移动的方向调整头部坐标,例如向下移动(case 'D'
),y-coordinatey[0]
在 y[0] = y[0]+UNIT_SIZE;
中增加了 UNIT_SIZE
。
for 循环遍历蛇的每个 body 部分,将其移动到下一个 body 部分之前所在的位置。例如,如果你的蛇是
0 1 2 3
4
5 6
其中0
是头,向左移动,蛇就会变成
0 1 2 3 4
5
6
其中 2
已移至 1
所在位置,3
已移至 2
所在位置,依此类推。这就是循环
for (int i = bodyParts; i > 0; i--) {
x[i] = x[i-1];
y[i] = y[i-1];
}
将第 i
个 body 部分移动到第 i-1
个 body 部分之前所在的位置。
for(int i=bodyParts;i>0;i--) {
x[i]=x[i-1];
y[i]=y[i-1];
}
在此,蛇的body部分x[i]
向后移动1space,表示蛇在移动。
switch(direction) {
case 'U':
y[0] = y[0]-UNIT_SIZE;
break;
case 'D':
y[0] = y[0]+UNIT_SIZE;
break;
case 'L':
x[0] = x[0]-UNIT_SIZE;
break;
case 'R':
x[0] = x[0]+UNIT_SIZE;
break;
default:
break;
}
你在这里没有提供很多上下文,但我假设当它的情况 'U'
时,蛇的第一个 body 部分将等于自身减去你给定的单位大小。 'D' 的情况反之亦然,左右类似。