我的蛇游戏运行得很慢。有没有办法优化它?

问题描述 投票:2回答:1

随着蛇变大,我的蛇游戏一直在慢慢地运行。我已将其缩小到导致问题的代码块:

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,所以我只是在结束游戏的任何事情上手动完成。

java
1个回答
2
投票

您可以尝试以下方法:

1.您可以创建一个已经占用的地图或一​​组(x,y)坐标并对其进行检查。这将比访问更频繁地更新。

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

© www.soinside.com 2019 - 2024. All rights reserved.