Advertisement
Guest User

Game

a guest
Jun 13th, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. package com.thecherno.rain;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.image.BufferStrategy;
  8. import java.awt.image.BufferedImage;
  9. import java.awt.image.DataBufferInt;
  10.  
  11. import javax.swing.JFrame;
  12.  
  13. import com.thecherno.rain.entity.mob.Player;
  14. import com.thecherno.rain.graphics.Screen;
  15. import com.thecherno.rain.input.Keyboard;
  16. import com.thecherno.rain.level.Level;
  17. import com.thecherno.rain.level.RandomLevel;
  18.  
  19. public class Game extends Canvas implements Runnable {
  20.    
  21.     /**
  22.      *
  23.      */
  24.     private static final long serialVersionUID = 1L;
  25.     int width = 300;
  26.     int height = width / 16 * 10;
  27.     int scale = 3;
  28.     public static String title = "Contact";
  29.    
  30.    
  31.     private Thread thread;
  32.     private JFrame frame;
  33.     private Keyboard key;
  34.     private Level level;
  35.     private Player player;
  36.     private boolean running = false;
  37.    
  38.     private Screen screen;
  39.    
  40.     private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  41.     private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
  42.    
  43.     public Game() {
  44.         Dimension size = new Dimension(width*scale, height*scale);
  45.         setPreferredSize(size);
  46.        
  47.         screen = new Screen(width, height);
  48.         frame = new JFrame();
  49.         key = new Keyboard();  
  50.         level = new RandomLevel(64, 64);
  51.         player = new Player(key);
  52.        
  53.         addKeyListener(key);
  54.     }
  55.    
  56.     public synchronized void start() {
  57.         running = true;
  58.         thread = new Thread(this, "Game");
  59.         thread.start();
  60.     }
  61.    
  62.     public synchronized void stop() {
  63.         running = false;
  64.         try {
  65.             thread.join();
  66.         } catch(InterruptedException e) {
  67.             e.printStackTrace();
  68.         }
  69.     }
  70.    
  71.     public void run() {
  72.         long lastTime = System.nanoTime();
  73.         long timer = System.currentTimeMillis();
  74.         final double nanoSeconds = 1000000000.0 / 60.0;
  75.         double delta = 0;
  76.         int frames = 0;
  77.         int updates = 0;
  78.         requestFocus();
  79.         while (running == true) {
  80.             long now = System.nanoTime();
  81.             delta += (now-lastTime) / nanoSeconds;
  82.             lastTime = now;
  83.             while (delta >= 1) {
  84.                 update();
  85.                 updates += 1;
  86.                 delta -= 1;
  87.             }
  88.             render();
  89.             frames += 1;
  90.            
  91.             if (System.currentTimeMillis() - timer > 1000) {
  92.                 timer += 1000;
  93.                 System.out.println(updates + " ups, " + frames + " fps");
  94.                 frame.setTitle(title + "  |  " + updates + " ups, " + frames + " fps ");
  95.                 updates = 0;
  96.                 frames = 0;
  97.             }
  98.         }
  99.         stop();
  100.     }
  101.    
  102.  
  103.    
  104.     public void update() {
  105.         key.update();
  106.         player.update();
  107.     }
  108.    
  109.     public void render() {
  110.         BufferStrategy buffers = getBufferStrategy();
  111.         if (buffers == null) {
  112.             createBufferStrategy(3);
  113.             return;
  114.         }
  115.        
  116.         screen.clear();
  117.         int xScroll = player.x - screen.width / 2;
  118.         int yScroll = player.y - screen.height / 2;
  119.         level.render(xScroll, yScroll, screen);
  120.         player.render(screen);
  121.        
  122.         for (int i = 0; i < pixels.length; i++) {
  123.             pixels [i] = screen.pixels[i];
  124.         }
  125.        
  126.         Graphics g = buffers.getDrawGraphics();
  127.         g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
  128.         g.dispose();
  129.         buffers.show();
  130.     }
  131.    
  132.     public static void main(String[] args) {
  133.         Game game = new Game();
  134.         game.frame.setResizable(false);
  135.         game.frame.setTitle("Game.title");
  136.         game.frame.add(game);
  137.         game.frame.pack();
  138.         game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  139.         game.frame.setLocationRelativeTo(null);
  140.         game.frame.setVisible(true);
  141.        
  142.         game.start();
  143.     }
  144.  
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement