java - 限制我的游戏的 FPS

标签 java frame-rate

好吧,我正在制作一个小游戏,我需要限制我的 FPS,因为当我在我非常快的电脑上玩时,我有大约 850 FPS,游戏会非常快,当我切换到我的旧电脑,它运行得更慢,所以我需要限制我的 FPS 才能做到这一点。如何限制我的 FPS? 我的主要游戏循环:

    public void startGame(){
    initialize();
    while(true){
        drawScreen();
        drawBuffer();
        plyMove();

        //FPS counter
        now=System.currentTimeMillis(); 
        framesCount++; 
        if(now-framesTimer>1000){
            framesTimer=now; 
            framesCountAvg=framesCount; 
            framesCount=0; 
        }

        try{
            Thread.sleep(14);
        }catch(Exception ex){}
    }
}

我如何绘制屏幕,​​以及绘制所有其他东西、球员、球等。 顺便说一下,该游戏是乒乓球翻拍游戏。

    public void drawBuffer(){
    Graphics2D g = buffer.createGraphics();
    g.setColor(Color.BLACK);
    g.fillRect(0,0,600,500);
    g.setColor(Color.GREEN);
    g.fillRect(ply1.getX(),ply1.getY(),ply1.getWidth(),ply1.getHeight());
    g.setColor(Color.RED);
    g.fillRect(ply2.getX(),ply2.getY(),ply2.getWidth(),ply2.getHeight());
    g.setColor(Color.WHITE);
    g.fillOval(ball1.getX(),ball1.getY(),ball1.getWidth(),ball1.getHeight());
    g.drawString("" + framesCountAvg,10,10);
}

public void drawScreen(){
    Graphics2D g = (Graphics2D)this.getGraphics();
    g.drawImage(buffer,0,0,this);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}

最佳答案

听起来您的显示器与您的游戏引擎相关联。确保两者断开连接。无论帧率是多少,您都希望游戏以相同的速度播放。如果您的快速计算机重新绘制屏幕的速度更快,如果引擎导致游戏以恒定速度运行,那是可以的。

关于java - 限制我的游戏的 FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217663/

相关文章:

iphone - 如何在新旧 iPhone 上获得一致的速度?

Java拦截器读取请求体使请求为空

java - 使用 build.sh 脚本构建 Android

amazon-web-services - 使用 Python 进行 AWS 计费

java - 我的第一个 LWJGL 应用程序性能不佳

javascript - WebGL 中的低 FPS(作为 2d 工作)

java - Android JsonObject 错误 org.json.JSONException : No value

java - identity.logout() 之后出现 ViewExpiredException;在 JBoss 中

java - 发现从元素 'elementName' 开始的无效内容。此时不需要子元素

c - 如何避免不支持的帧速率错误?