我的蛇游戏运行非常缓慢。有什么方法可以优化它吗?

时间:2018-09-18 03:32:31

标签: java

随着蛇的变大,我一直遇到蛇游戏运行缓慢的问题。我将其范围缩小到导致问题的这段代码:

for(int i = 0 ; i < snake.size(); i++) {
    if(xCoor == snake.get(i).getxCoor() && yCoor == snake.get(i).getyCoor()) {
        if(i != snake.size() - 1) {
            stop();
            tries = 1;
            }
        }
    }

这是蛇的头部撞到蛇的身体的碰撞检测。除了删除它(删除游戏的核心)之外,我一直没有想到其他优化方法。我认为这是每个问题都存在的问题。我可以取消使用刻度线,但是我不知道如何开始使用刻度线。

编辑:这是我设置游戏时间的方法:

public void tick() {
    if(snake.size() == 0) {
        b = new BodyPart(xCoor, yCoor, 10);
        snake.add(b);
        }
    ticks++;
    if(ticks > 750000) {

    }
}

EDIT2 :Thread.sleep(60)成就了奇迹!我的stop()方法不再起作用了,但是它实际上所做的全部设置为false,所以我只是在结束游戏的任何事情上手动进行了操作。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

1。您可以创建一个地图或一组(x,y)坐标已被占用并对其进行检查。与访问相比,此更新的频率要低得多。

2。您可以为每个电路板位置创建一个二维布尔数组。检查会很快。更新将需要一些时间。这取决于两者发生的相对频率。