import javax.swing.*; public class Main { public static void main(String[] args) { JFrame f = new JFrame("Tank"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300, 300); Tank tank = new Tank(f); f.getContentPane().add(tank); TankEvent controll = new TankEvent(tank); f.addKeyListener(controll); f.setVisible(true); /* game loop */ int j; long lastFrame=System.currentTimeMillis(); float yield=10000f; float frameAverage=16f; int frame = 0; while(true) { frame++; controll.keyMonitoring(); tank.move(); BulletPool.step(); long timeNow = System.currentTimeMillis(); frameAverage = (frameAverage * 10 + (timeNow - lastFrame)) / 11; lastFrame=timeNow; yield+=yield*((16f/frameAverage)-1)*0.1f+0.05f; for(j = 0;j < yield ;j++) Thread.yield(); } } }