Advertisement
pseudocreator

javaGameBase>60fps

May 17th, 2014
557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.09 KB | None | 0 0
  1. package com.game.src.main;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Dimension;
  5.  
  6. import javax.swing.JFrame;
  7.  
  8. public class Game extends Canvas implements Runnable {
  9.  
  10.     private static final long serialVersionUID = 1L;
  11.     public static final int WIDTH = 320;
  12.     public static final int HEIGHT = WIDTH / 12 * 9;
  13.     public static final int SCALE = 2;
  14.     public final String TITLE = "2D Space Game";
  15.    
  16.    
  17.     private boolean running = false;
  18.     private Thread thread;
  19.    
  20.     private synchronized void start(){
  21.         if(running)
  22.             return;
  23.        
  24.         running = true;
  25.         thread = new Thread(this);
  26.         thread.start();
  27.     }
  28.    
  29.     private synchronized void stop(){
  30.         if(!running)
  31.             return;
  32.        
  33.         running = false;
  34.         try{
  35.             thread.join(); 
  36.         } catch (InterruptedException e) {
  37.             e.printStackTrace();
  38.         }
  39.         System.exit(1);
  40.     }
  41.    
  42.     public void run(){
  43.         long lastTime = System.nanoTime();
  44.         final double amountOfTicks = 60.0;
  45.         double ns = 1000000000 / amountOfTicks;
  46.         double delta = 0;
  47.         int updates = 0;
  48.         int frames = 0;
  49.         long timer = System.currentTimeMillis();
  50.        
  51.         //game loop #osnovna petlja
  52.         while(running){
  53.             long now = System.nanoTime();
  54.             delta += (now - lastTime) / ns;
  55.             lastTime = now;
  56.             if(delta >= 1){
  57.                 tick();
  58.                 updates++;
  59.                 delta--;
  60.             }
  61.             render();
  62.             frames++;
  63.            
  64.             if(System.currentTimeMillis() - timer > 1000){
  65.                 timer += 1000;
  66.                 System.out.println(updates + " Ticks, " + "fps, " + frames);
  67.                 updates = 0;
  68.                 frames = 0;
  69.             }
  70.         }
  71.         stop();
  72.     }
  73.    
  74.     private void tick(){
  75.        
  76.     }
  77.    
  78.     private void render(){
  79.        
  80.     }
  81.    
  82.     public static void main(String args[]){
  83.         Game game = new Game();
  84.         game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  85.         game.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  86.         game.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  87.        
  88.         JFrame frame = new JFrame(game.TITLE);
  89.         frame.add(game);
  90.         frame.pack();
  91.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  92.         frame.setResizable(false);
  93.         frame.setLocationRelativeTo(null);
  94.         frame.setVisible(true);
  95.        
  96.         game.start();
  97.        
  98.        
  99.     }
  100.  
  101.    
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement