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();
        }
    }
}