我刚刚看了一个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;
}
2条答案
按热度按时间vvppvyoh1#
在这里,蛇的身体部分
x[i]
向后移动1格,显示蛇在移动。你在这里没有提供很多上下文,但我假设
'U'
蛇的第一个身体部位将等于它自己减去你给出的单位大小。反之亦然的情况下'd'和类似的左右。k5hmc34c2#
我们没有太多的背景,但我猜(
x[0]
,y[0]
)是蛇头的坐标(x[i]
,y[i]
)蛇身体其余部分的坐标。switch语句的主体根据移动方向调整头部的坐标。例如,下移(
case 'D'
),y坐标y[0]
增加UNIT_SIZE
在y[0] = y[0]+UNIT_SIZE;
.for循环遍历蛇的每个身体部位,将其移动到之前所在的下一个身体部位。例如,如果你的蛇
哪里
0
是头,如果向左移动,蛇就会变成哪里
2
已经搬到哪里去了1
是,3
已经搬到哪里去了2
是的,等等。这就是为什么循环移动
i
-身体的一部分i-1
-以前的身体部位是。