Хорошо, я делаю небольшую игру, и мне нужно ограничить свой 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();
}
System.nanoTime()между фактическим кадром и предыдущим кадром. - person Howard   schedule 02.06.2011