0

有没有办法让我的 2048 游戏运行得更快?

我做了一个称为高速模式的设置,如果移动速度非常快,我会跳过生成、组合和移动动画,但是即使这样,当我同时发送一堆按键时,我仍然通常落后一两个动作.

现在我有一个 tilePanel 类来处理显示我的图块,并使用带有paintComponent(不断绘制图块)的计时器(非常基本的代码)来确保它不断更新板。

public void doAnimation() {
        System.nanoTime();
        Timer timer = new Timer(2, this);
        timer.start();

    }

我构建游戏的方式是我有一个命令的 ArrayList(即按右键将“右”添加到 arraylist,最终 arraylist 到达并执行)我收到以确保它总是移动,在执行序列中的下一步移动之前生成。

为了确保董事会不断自我更新,我做了一个非常基本的运行线程:

public void run(){

                while(true) {
                    if(canDoNewMove&&commands.size()>0&&parent.spawnsLeft==0) {
                        move(commands.get(0));
                        commands.remove(0);
                        canDoNewMove=false;
                    }
                    if(commands.size()>=2) {
                        board.isBehind=true;
                    }
                    else {
                        board.isBehind=false;
                    }
                    if(totalMovements==0&&moveDone) {
                        moveDone=false;
                        if(parent.changed) {
                            parent.spawn(parent);

                        }
                        canDoNewMove=true;

                        
                    }
                    //moveDone=false;
                    try {
                        Thread.sleep(0);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }};

        Thread sampleThread = new Thread(backGroundRunnable);
        sampleThread.start();
        
    }

减少方法调用是否会产生足够明显的差异,以至于在我按下键后操作会立即完成,或者是绘制板的 tilePanel 类中的问题?

多谢你们

4

0 回答 0