Advertisement
pseudocreator

jgd Game.java

May 18th, 2014
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.82 KB | None | 0 0
  1. package com.game.src.main;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Dimension;
  5. import java.awt.Graphics;
  6. import java.awt.event.KeyEvent;
  7. import java.awt.image.BufferStrategy;
  8. import java.awt.image.BufferedImage;
  9. import java.io.IOException;
  10.  
  11. import javax.swing.JFrame;
  12.  
  13.  
  14.  
  15. public class Game extends Canvas implements Runnable {
  16.  
  17.     private static final long serialVersionUID = 1L;
  18.     public static final int WIDTH = 320;
  19.     public static final int HEIGHT = WIDTH / 12 * 9;
  20.     public static final int SCALE = 2;
  21.     public final String TITLE = "2D Space Game";
  22.    
  23.    
  24.     private boolean running = false;
  25.     private Thread thread;
  26.    
  27.    
  28.    
  29.     private BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
  30.     private BufferedImage spriteSheet = null;
  31.    
  32.     //inicijalizacija igraca
  33.     private Player p;
  34.        
  35.    
  36.     public void init(){
  37.         requestFocus();
  38.         BufferedImageLoader loader = new BufferedImageLoader();
  39.         try{
  40.             spriteSheet = loader.loadImage("/sprite_sheet.png");
  41.             }catch(IOException e){
  42.             e.printStackTrace();
  43.         }
  44.        
  45.         addKeyListener(new KeyInput(this));
  46.        
  47.         p = new Player(200, 200, this);
  48.     }
  49.    
  50.    
  51.    
  52.     private synchronized void start(){
  53.         if(running)
  54.             return;
  55.        
  56.         running = true;
  57.         thread = new Thread(this);
  58.         thread.start();
  59.     }
  60.    
  61.     private synchronized void stop(){
  62.         if(!running)
  63.             return;
  64.        
  65.         running = false;
  66.         //obezbedi se od greske!
  67.         try{
  68.             thread.join(); 
  69.         } catch (InterruptedException e) {
  70.             e.printStackTrace();
  71.         }
  72.         System.exit(1);
  73.     }
  74.    
  75.     public void run(){
  76.         init();
  77.         long lastTime = System.nanoTime();
  78.         final double amountOfTicks = 60.0;
  79.         double ns = 1000000000 / amountOfTicks;
  80.         double delta = 0;
  81.         int updates = 0;
  82.         int frames = 0;
  83.         long timer = System.currentTimeMillis();
  84.        
  85.         //game loop #osnovna petlja
  86.         while(running){
  87.             long now = System.nanoTime();
  88.             delta += (now - lastTime) / ns;
  89.             lastTime = now;
  90.             if(delta >= 1){
  91.                 tick();
  92.                 updates++;
  93.                 delta--;
  94.             }
  95.             render();
  96.             frames++;
  97.            
  98.             if(System.currentTimeMillis() - timer > 1000){
  99.                 timer += 1000;
  100.                 System.out.println(updates + " Ticks, " + "fps, " + frames);
  101.                 updates = 0;
  102.                 frames = 0;
  103.             }
  104.         }
  105.         stop();
  106.     }
  107.    
  108.     private void tick(){
  109.         p.tick();
  110.         }
  111.    
  112.     private void render(){
  113.         BufferStrategy bs = this.getBufferStrategy();
  114.        
  115.         if(bs == null){
  116.            
  117.             createBufferStrategy(3);
  118.             return;
  119.         }
  120.        
  121.         Graphics g = bs.getDrawGraphics();
  122.         ////////////////////////////////
  123.        
  124.         g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
  125.        
  126.         p.render(g);
  127.        
  128.        
  129.         ///////////////////////////////
  130.         g.dispose();
  131.         bs.show();
  132.        
  133.     }
  134.    
  135.     public void keyPressed(KeyEvent e){
  136.         int key = e.getKeyCode();
  137.        
  138.         if(key == KeyEvent.VK_RIGHT){
  139.             p.setVelX(5);
  140.         }else if (key == KeyEvent.VK_LEFT){
  141.             p.setVelX(-5);
  142.         }else if (key == KeyEvent.VK_DOWN){
  143.             p.setVelY(5);
  144.         }else if (key == KeyEvent.VK_UP){
  145.             p.setVelY(-5);
  146.         }
  147.     }
  148.     public void keyReleased(KeyEvent e){
  149.         int key = e.getKeyCode();
  150.        
  151.         if(key == KeyEvent.VK_RIGHT){
  152.             p.setVelX(0);
  153.         }else if (key == KeyEvent.VK_LEFT){
  154.             p.setVelX(0);
  155.         }else if (key == KeyEvent.VK_DOWN){
  156.             p.setVelY(0);
  157.         }else if (key == KeyEvent.VK_UP){
  158.             p.setVelY(0);
  159.         }
  160.     }
  161.    
  162.     public static void main(String args[]){
  163.         Game game = new Game();
  164.         game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  165.         game.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  166.         game.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));
  167.        
  168.         JFrame frame = new JFrame(game.TITLE);
  169.         frame.add(game);
  170.         frame.pack();
  171.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  172.         frame.setResizable(false);
  173.         frame.setLocationRelativeTo(null);
  174.         frame.setVisible(true);
  175.        
  176.         game.start();
  177.        
  178.        
  179.     }
  180.    
  181.     public BufferedImage getSpriteSheet(){
  182.         return spriteSheet;
  183.     }
  184.  
  185.    
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement