eng
competition

Text Practice Mode

Java Class

created Sep 4th 2014, 23:06 by


13


Rating

386 words
71 completed
00:00
package game;
 
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
 
import javax.swing.JFrame;
 
import game.entity.mob.Player;
import game.gfx.Screen;
import game.input.Keyboard;
import game.level.Level;
import game.level.RandomLevel;
 
public class Game extends Canvas implements Runnable {
    private static final long serialVersionUID = 1L;
    public static int width = 300;
    public static int height = width / 16 * 9;
    public static int scale = 3;
    public static String title = "Filler Name";
 
    private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
 
    private Thread gameThread;
    private Keyboard key;
    private Level level;
    private Player player;
    private JFrame frame;
    private boolean running = false;
 
    private Screen screen;
    public Game() {
        Dimension size = new Dimension(width * scale, height * scale);
        setPreferredSize(size);
        screen = new Screen(width, height);
 
        frame = new JFrame();
 
        key = new Keyboard();
 
        level = new RandomLevel(64, 64);
 
        player = new Player(key);
 
        addKeyListener(key);
 
    }
    public synchronized void start() {
        running = true;
        gameThread = new Thread(this, "Display");
        gameThread.start();
 
    }
 
    public synchronized void stop() {
        running = false;
        try {
            gameThread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
 
    }
 
    public void run() {
        long lastTime = System.nanoTime();
        long timer = System.currentTimeMillis();
        final double ns = 1000000000.0 / 60.0;
        double delta = 0;
        int frames = 0;
        int updates = 0;
 
        while (running) {
            long now = System.nanoTime();
            delta += (now - lastTime) / ns;
 
            lastTime = now;
            while (delta >= 1) {
                update();
                updates++;
                delta--;
            }
            render();
 
            frames++;
            if (System.currentTimeMillis() - timer > 1000) {
                timer += 1000;
                System.out.println(updates + " ups | " + frames + " fps");
                frame.setTitle(title + updates + " ups | " + frames + " fps");
                updates = 0;
                frames = 0;
            }
        }
 
        stop();
    }
 
    public void update() {
        key.update();
        player.update();
 
    }
 
    public void render() {
        BufferStrategy bs = getBufferStrategy();
        if (bs == null) {
            createBufferStrategy(3);
            return;
        }
        screen.clear();
         
        int xScroll = player.x - screen.width / 2;
        int yScroll = player.y - screen.height / 2;
        level.render(xScroll, yScroll, screen);
        player.render(screen);
 
        screen.render(x, y);
        for (int i = 0; i < pixels.length; i++) {
            pixels[i] = screen.pixels[i];
 
        }
        Graphics g = bs.getDrawGraphics();
        g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
        g.setColor(Color.WHITE);
        g.setFont(new Font("Verdana", 0, 50));
        //g.drawString("X: " + player.x + ", Y: " + player.y, 300, 300);
        g.dispose();
        bs.show();
    }
 
    public static void main(String[] args) {
        Game game = new Game();
        game.frame.setResizable(false);
        game.frame.add(game);
        game.frame.pack();
        game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        game.frame.setLocationRelativeTo(null);
        game.frame.setVisible(true);
        game.requestFocus();
        game.start();
 
    }
 
}
 

saving score / loading statistics ...