{"author_name":"Dexkill","cat":"LD #29","comments":[],"epoch":1398450900,"likes":2,"metadata":{"p_key":"32862","p_author":"Dexkill","p_authorkey":"501557","p_urlkey":"68382","p_title":"My Base Java Window Code","p_cat":"LD #29","p_event":"LD29","p_time":"1398450900","p_likes":"2","p_comments":"1","p_status":"UPD5","us_key":"501557","us_name":"Dexkill","us_username":"Dexkill","event_start":"1398384000","event_key":"22","event_name":"LD29"},"text":"<blockquote><p><em>&#8220;Base code and personal code libraries are allowed, but should be declared and shared with the community prior to beginning your entry. To do this, make a blog post.&#8221; &#8211; LD Rules<\/em><\/p><\/blockquote>\n <p>The rules told my to do that.<\/p>\n <p>My Basic Java Gamewindow (which i would use for every Game):<\/p>\n <hr \/>\n <p><code><em><strong>Main.java:<\/strong><\/em><br \/>\n public class Main {<\/code><\/p>\n <p>public static void main(String[] args) {<\/p>\n <p>Game.initiate();<\/p>\n <p>}<\/p>\n <p>}<\/p>\n <hr \/>\n <p><code><em><strong>Game.java:<\/strong><\/em><br \/>\n import java.awt.BorderLayout;<br \/>\n import java.awt.Canvas;<br \/>\n import java.awt.Color;<br \/>\n import java.awt.Dimension;<br \/>\n import java.awt.Graphics2D;<br \/>\n import java.awt.Rectangle;<br \/>\n import java.awt.image.BufferStrategy;<br \/>\n import java.awt.image.BufferedImage;<br \/>\n import java.io.File;<br \/>\n import java.io.IOException;<\/code><\/p>\n <p>import javax.imageio.ImageIO;<br \/>\n import javax.swing.JFrame;<\/p>\n <p>public class Game extends Canvas implements Runnable{<\/p>\n <p>private static final long serialVersionUID = 1L;<\/p>\n <p>private JFrame jframe;<\/p>\n <p>private boolean paused = false;<br \/>\n private boolean running;<br \/>\n private int FPS = 0;<br \/>\n private int TICKS = 0;<\/p>\n <p>public static final int WIDTH = 800;<br \/>\n public static final int HEIGHT = WIDTH\/16*9;<br \/>\n public static final int SCALE = 1;<br \/>\n public static final String NAME = &#8220;Game Name&#8221;;<br \/>\n public static final String VERSION = &#8220;0.0_1 pre-alpha&#8221;;<\/p>\n <p>public static Game gameInstance;<\/p>\n <p>public static Game getGame(){<br \/>\n return gameInstance;<br \/>\n }<\/p>\n <p>public static Game initiate(){<\/p>\n <p>gameInstance = new Game();<br \/>\n gameInstance.start();<\/p>\n <p>return gameInstance;<br \/>\n }<\/p>\n <p>public Game(){<\/p>\n <p>Canvas canvas = this;<\/p>\n <p>canvas.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));<br \/>\n canvas.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));<br \/>\n canvas.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE));<\/p>\n <p>\/\/canvas.addKeyListener(inputListener);<br \/>\n \/\/canvas.addMouseListener(inputListener);<br \/>\n \/\/canvas.addMouseMotionListener(inputListener);<br \/>\n \/\/canvas.addMouseWheelListener(mainMouseListener);<\/p>\n <p>this.jframe = new JFrame(NAME + &#8221; &#8221; + VERSION);<\/p>\n <p>jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br \/>\n jframe.setLayout(new BorderLayout());<br \/>\n jframe.add(canvas, BorderLayout.CENTER);<\/p>\n <p>\/\/jframe.setUndecorated(true);<\/p>\n <p>\/\/jframe.setExtendedState(JFrame.MAXIMIZED_BOTH);<\/p>\n <p>jframe.setResizable(false);<\/p>\n <p>jframe.setVisible(true);<\/p>\n <p>jframe.pack();<\/p>\n <p>jframe.setLocationRelativeTo(null);<br \/>\n }<\/p>\n <p>public int tickCount = 0;<\/p>\n <p>private boolean sysStats = true;<\/p>\n <p>public boolean isSysStats() {<br \/>\n return sysStats;<br \/>\n }<\/p>\n <p>public void setSysStats(boolean sysStats) {<br \/>\n this.sysStats = sysStats;<br \/>\n }<\/p>\n <p>public synchronized void start(){<\/p>\n <p>this.running = true;<br \/>\n new Thread(this).start();<br \/>\n }<\/p>\n <p>public synchronized void stop(){<br \/>\n this.running = false;<br \/>\n }<\/p>\n <p>@Override<br \/>\n public void run() {<\/p>\n <p>long lastTime = System.nanoTime();<br \/>\n double nsPerTick = 1000000000D\/60; \/\/ 60 = MaxFrames<\/p>\n <p>int ticks = 0;<br \/>\n int frames = 0;<\/p>\n <p>long lastTimer = System.currentTimeMillis();<br \/>\n double delta= 0;<\/p>\n <p>init();<\/p>\n <p>while(this.running){<br \/>\n long now = System.nanoTime();<\/p>\n <p>delta += (now &#8211; lastTime) \/ nsPerTick;<br \/>\n lastTime = now;<br \/>\n boolean shouldRender = false;<\/p>\n <p>while (delta &gt;= 1){<\/p>\n <p>if(!paused){<\/p>\n <p>ticks++;<br \/>\n tick();<\/p>\n <p>}<\/p>\n <p>delta -= 1;<br \/>\n shouldRender = true;<br \/>\n }<\/p>\n <p>try {<br \/>\n Thread.sleep(2);<br \/>\n } catch (InterruptedException e) {<br \/>\n e.printStackTrace();<br \/>\n }<\/p>\n <p>if(shouldRender){<br \/>\n frames++;<br \/>\n render();<br \/>\n }<\/p>\n <p>if(System.currentTimeMillis() &#8211; lastTimer &gt;= 1000){<br \/>\n lastTimer += 1000;<br \/>\n this.FPS = frames;<br \/>\n this.TICKS = ticks;<br \/>\n frames = 0;<br \/>\n ticks = 0;<br \/>\n }<\/p>\n <p>}<\/p>\n <p>System.exit(0);<br \/>\n }<\/p>\n <p>private void init() {<\/p>\n <p>\/\/GamePlayer player = new GamePlayer(&#8220;Powerman3540&#8221;);<br \/>\n \/\/Handlers.getHandler().playerHandler.setActivePlayer(player);<br \/>\n \/\/Handlers.getHandler().ingamePlayerTeamHandler.registerPlayerTeam(new PlayerTeam(1, player, &#8220;Black Label&#8221;));<br \/>\n }<\/p>\n <p>public void render(){<br \/>\n BufferStrategy bs = getBufferStrategy();<br \/>\n if(bs == null){<br \/>\n createBufferStrategy(3);<br \/>\n return;<br \/>\n }<\/p>\n <p>Graphics2D g = (Graphics2D) bs.getDrawGraphics();<\/p>\n <p>g.setColor(Color.BLACK);<br \/>\n g.fillRect(0, 0, getWidth(), getHeight());<\/p>\n <p>\/\/float scale = (getWidth()*getHeight())\/(2052000F\/2);<\/p>\n <p>g.scale(1, 1);<\/p>\n <p>draw(g);<\/p>\n <p>if(this.sysStats)drawSysStats(g);<\/p>\n <p>g.dispose();<br \/>\n bs.show();<\/p>\n <p>}<\/p>\n <p>private void drawSysStats(Graphics2D g){<\/p>\n <p>g.setColor(Color.BLACK);<br \/>\n g.drawString(&#8220;FPS: &#8221; + this.FPS + &#8221; | TICK\/PS &#8221; + this.TICKS, 11, 11);<br \/>\n g.setColor(Color.WHITE);<br \/>\n g.drawString(&#8220;FPS: &#8221; + this.FPS + &#8221; | TICK\/PS &#8221; + this.TICKS, 10, 10);<\/p>\n <p>}<\/p>\n <p>public void tick(){<br \/>\n this.tickCount ++;<\/p>\n <p>}<\/p>\n <p>private void draw(Graphics2D g) {<br \/>\n \/\/Background<br \/>\n g.setColor(Color.DARK_GRAY);<br \/>\n g.fillRect(0, 0, this.getWidth(), this.getHeight());<\/p>\n <p>}<\/p>\n <p>public BufferedImage getImage(Class classx, String path){<br \/>\n BufferedImage img;<\/p>\n <p>try {<br \/>\n img = ImageIO.read(new File(path));<br \/>\n } catch (IOException e) {<br \/>\n img = null;<br \/>\n System.out.println(&#8220;&#8216;&#8221; + classx.getName() + &#8220;&#8216; : &#8221; + path + &#8221; &#8211; Do not exist!&#8221;);<br \/>\n }<\/p>\n <p>return img;<\/p>\n <p>}<\/p>\n <p>public Rectangle getScreenRect(){<br \/>\n return new Rectangle(0, 0, WIDTH, HEIGHT);<br \/>\n }<\/p>\n <p>}<\/p>\n <hr \/>\n <p>&nbsp;<\/p>","time":"April 25th, 2014 1:35 pm","title":"My Base Java Window Code"}