Blizzardo1 icon

Blizzeta Sample

Blizzardo1 | PRO | 08/13/14 04:44:24 AM UTC | 0 ⭐ | 620 👁️ | Never ⏰ | []
Java |

5.5 KB

|

None

|

0 👍

/

0 👎

// Blizzeta Sample code
// Copyright (c) 2014 Blizzeta Software and Gaming
 
package net.blizzeta.game.test;
 
import org.lwjgl.*;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.*;
 
 
public class Game {
    private int width = 1024, height = 768;
    private long lastFPS, lastFrame, fps;
    private float x = 400, y = 300, rotation = 0;
    private float delta;
    private boolean vSync;
    
    /**
     * Start a new Game
     */
    public void start() {
        try {
            vSync = true;
            Display.setVSyncEnabled(vSync);
            setDisplayMode(width, height, false);
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace(System.out);
            System.exit(0);
        }
        
        initGL();
        getDelta();
        lastFPS = getTime();
        
        while(!Display.isCloseRequested()){
            update(getDelta());
        }
        destroy();
    }
    
    private void setDisplayMode(int width, int height, boolean fullscreen) {
        DisplayMode dspm = Display.getDisplayMode();
        if((dspm.getWidth() == width) && (dspm.getHeight() == height) && Display.isFullscreen()) {
            return;
        }
        
        try {
            DisplayMode targetMode = null;
            if(fullscreen) {
                DisplayMode[] modes = Display.getAvailableDisplayModes();
                int freq = 0;
                
                for(int i = 0; i < modes.length; i++) {
                    DisplayMode current = modes[i];
                    
                    if((current.getWidth() == width) && (current.getHeight() == height )) {
                        if((targetMode == null) || (current.getFrequency() >= freq)) {
                            if((targetMode == null) || (current.getBitsPerPixel() > targetMode.getBitsPerPixel())) {
                                targetMode = current;
                                freq = targetMode.getFrequency();
                            }
                        }
                        DisplayMode dspm2 = Display.getDesktopDisplayMode();
                        if((current.getBitsPerPixel() == dspm2.getBitsPerPixel()) && (current.getFrequency() == dspm.getFrequency())) {
                            targetMode = current;
                            break;
                        }
                    }
                }
            } else {
                targetMode = new DisplayMode(width, height);
            }
            
            if(targetMode == null) {
                displayConsoleMessage(String.format("Failed to find value mode: %dx%d fs=%s", width, height, fullscreen));
                return;
            }
            Display.setDisplayMode(targetMode);
            Display.setFullscreen(fullscreen);
        } catch (LWJGLException e) {
            e.printStackTrace(System.out);
            displayConsoleMessage(String.format("Unable to setup mode %dx%d fullscreen=%s",width, height, fullscreen));
        }
    }
    
    /**
     * Prints out to the console
     * @param input - The message
     */
    private void displayConsoleMessage(String input) {
        System.out.println(input);
    }
    
    /**
     * Updates the FPS
     */
    public void updateFPS() {
        if(getTime() - lastFPS > 1000) {
            Display.setTitle(String.format("FPS: %d", fps));
            fps = 0;
            lastFPS += 1000;
        }
        fps++;
    }
    
    /**
     * Get the time in milliseconds
     * @return The System's time in milliseconds
     */
    private long getTime() {
        return (Sys.getTime() * 1000) / Sys.getTimerResolution();
    }
    
    private int getDelta() {
        long time = getTime();
        int delta = (int)(time - lastFrame);
        lastFrame = time;
        this.delta = delta;
        return delta;
    }
    
    private boolean down(int key) {
        return Keyboard.isKeyDown(key);
    }
    
    /**
     * Searches for a keypress
     */
    public void pollInput() {
        
        // Left Button
        if(Mouse.isButtonDown(0))
        {
            int x = Mouse.getX();
            int y = Mouse.getY();
            displayConsoleMessage(String.format("MOUSE DOWN @ X: %d Y: %d", x, y));
        }
        
        if(Keyboard.isKeyDown(Keyboard.KEY_SPACE))
        {
            displayConsoleMessage("SPACE PRESSED");
        }
        int w = Keyboard.KEY_W;
        int a = Keyboard.KEY_A;
        int s = Keyboard.KEY_S;
        int d = Keyboard.KEY_D;
        
        int ra = Keyboard.KEY_RIGHT;
        int la = Keyboard.KEY_LEFT;
        int ua = Keyboard.KEY_UP;
        int da = Keyboard.KEY_DOWN;
        
        // Forward Key
        if(down(w)){
            y += 0.35f * delta;
        }
            
        // Left Key
        if(down(a)){
            x -= 0.35f * delta;
        }
        
        // Down Key
        if(down(s)) {
            y -= 0.35f * delta;
        }
        
        // Right Key
        if(down(d)) {
            x += 0.35f * delta;
        }
        
        // Up Arrow Key
        if(down(ua)) {
            
        }
        
        // Left Arrow Key
        if(down(la)) {
        
        }
        
        // Down Arrow Key
        if(down(da)) {
            
        }
        
        // Right Arrow Key
        if(down(ra)) {
            
        }
    }
    
    /**
     * Destroys the game
     */
    public void destroy() {
        Display.destroy();
    }
    
    /**
     * Updates the frames and searches for keypresses
     */
    public void update(int delta) {
        
        rotation+= 0.15f * delta;
        
        pollInput();
        
        if(x < 0) x = 0;
        if(x > width) x = width;
        if(y < 0) y = 0;
        if(y > height)  y = height;
        updateFPS();
        
        renderGL();
        Display.update();
        Display.sync(60);
    }
    
    private void initGL() {
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        GL11.glLoadIdentity();
        GL11.glOrtho(0, width, 0, height, 1, -1);
        GL11.glMatrixMode(GL11.GL_MODELVIEW);
    }
    
    private void renderGL() {
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        GL11.glColor3f(0.5f, 0.5f, 1.0f);
        
        GL11.glPushMatrix();
        GL11.glTranslatef(x, y, 0);
        GL11.glRotatef(rotation, 0f, 0f, 1f);
        GL11.glTranslatef(-x, -y, 0);
        
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2f(x - 50, y - 50);
        GL11.glVertex2f(x + 150, y);
        GL11.glVertex2f(x + 150, y + 150);
        GL11.glVertex2f(x + 150, y + 150);
        
        GL11.glEnd();
        GL11.glPopMatrix();
    }
    
    /**
     * MAIN Function. Without this, we can't live!
     * @param args
     */
    public static void main(String[] args) {
        // Initialize a new Game, then start it up.
        Game g = new Game();
        g.start();
        
    }
 
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎