蛇游戏,处理时间越来越长

时间:2019-05-26 21:04:18

标签: java processing

我正在尝试重新创建蛇游戏,现在我被困在蛇上与苹果碰撞的任何地方添加新的部分

我试图告诉程序绘制一个新的矩形,但是x轴稍微偏移,每次我的蛇吃一个苹果时,这种“偏移”会慢慢增加。我的蛇从2个部分开始,当我将蛇移向青苹果时,它仅移动了第二个部分,而不是绘制新的部分,我知道我没有告诉我的绘制方法每次都绘制一个新的矩形蛇吃了一个苹果,因为我不知道该怎么做

public void draw(PApplet p) {
    // clear area
    p.fill(255, 0, 0);

    // draw snake head
    p.rect(x, y, length, width);

    // draw snake body ?
    if (upIsDown == true ) {
        p.rect(x, y - section, length, width);
    } else if(downIsDown == true) {
        p.rect(x, y + section, length, width);
    } else if(RightIsDown == true) {
        p.rect(x - section, y, length, width);
    } else if(LeftIsDown == true) {
        RightIsDown = false;
        p.rect(x + section, y, length, width);
    }
}

在我的checkCollision方法中,section变量增加了10

蛇变长了,但是我的程序只画蛇的头和尾巴

1 个答案:

答案 0 :(得分:2)

我在您的代码中添加了注释。

您在绘制代码中清除了整个游戏区域,然后绘制了两个矩形。如果要查看3个矩形,则需要使用该方法调用p.rect() 3次。如果要查看10个矩形,则需要将其调用10次(因此循环可能会很好)。否则,请一开始重新考虑对p.fill()的呼叫。

对于循环,您需要将每个主体段的坐标存储在LinkedList之类的结构中,并包含每个段的坐标,并在draw方法中绘制所有段。