首页 > 解决方案 > 蛇是怎么用这些代码移动的?

问题描述

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

标签: javagame-development

解决方案


我们这里没有太多的上下文可以继续,但我猜 ( x[0], y[0]) 是蛇头的坐标, ( x[i], ) 是蛇的y[i]每个剩余身体部位的坐标。

switch 语句的主体根据向内移动的方向调整头部的坐标。例如向下移动 ( case 'D'),y 坐标y[0]增加UNIT_SIZEin y[0] = y[0]+UNIT_SIZE;


for 循环遍历蛇的每个身体部位,将其移动到下一个身体部位之前的位置。例如,如果你的蛇是

  0 1 2 3
        4
        5 6

头在哪里0,如果向左移动,蛇就会变成

0 1 2 3 4
        5
        6

哪里2已经​​移动到哪里13已经移动到哪里2,等等。这就是为什么循环

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

i-th 身体部位移动到i-1之前的 -th 身体部位。


推荐阅读