为什么蛇用这些代码移动?

bcs8qyzn  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(257)

我刚刚看了一个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;
    }
vvppvyoh

vvppvyoh1#

for(int i=bodyParts;i>0;i--) {
        x[i]=x[i-1];
        y[i]=y[i-1];
    }

在这里,蛇的身体部分 x[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;
    }

你在这里没有提供很多上下文,但我假设 'U' 蛇的第一个身体部位将等于它自己减去你给出的单位大小。反之亦然的情况下'd'和类似的左右。

k5hmc34c

k5hmc34c2#

我们没有太多的背景,但我猜( x[0] , y[0] )是蛇头的坐标( x[i] , y[i] )蛇身体其余部分的坐标。
switch语句的主体根据移动方向调整头部的坐标。例如,下移( case 'D' ),y坐标 y[0] 增加 UNIT_SIZEy[0] = y[0]+UNIT_SIZE; .
for循环遍历蛇的每个身体部位,将其移动到之前所在的下一个身体部位。例如,如果你的蛇

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 -身体的一部分 i-1 -以前的身体部位是。

相关问题