import java.awt.Canvas; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferStrategy; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends Canvas { private static final long serialVersionUID = 1L; private int WIDTH = 1000; private int HEIGHT = 500; private int FPS = 10; private BufferStrategy strategy; public Main() { // create a frame to contain our game JFrame container = new JFrame("Maple Story"); // get hold the content of the frame and set up the resolution of the game JPanel panel = (JPanel) container.getContentPane(); panel.setPreferredSize(new Dimension(WIDTH, HEIGHT)); panel.setLayout(null); // setup our canvas size and put it into the content of the frame setBounds(0, 0, WIDTH, HEIGHT); panel.add(this); // Tell AWT not to bother repainting our canvas since we're // going to do that our self in accelerated mode setIgnoreRepaint(true); // finally make the window visible container.pack(); container.setResizable(false); container.setVisible(true); // add a listener to respond to the user closing the window. If they // do we'd like to exit the game container.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // add a key input system (defined below) to our canvas // so we can respond to key pressed addKeyListener(new KeyInputHandler()); // request the focus so key events come to us requestFocus(); // create the buffering strategy which will allow AWT // to manage our accelerated graphics createBufferStrategy(2); strategy = getBufferStrategy(); // initialise the entities in our game so there's something // to see at startup setup(); } /* * Initialise all of your Objects in here */ public void setup() { } public void gameLoop() { while(true) { update(); Graphics2D g = (Graphics2D) strategy.getDrawGraphics(); /* * START PAINTING * START PAINTING * START PAINTING * START PAINTING * START PAINTING * START PAINTING * START PAINTING */ /* * STOP PAINTING * STOP PAINTING * STOP PAINTING * STOP PAINTING * STOP PAINTING * STOP PAINTING * STOP PAINTING */ g.dispose(); strategy.show(); try { Thread.sleep(FPS); } catch (Exception e) { } } } /* * Update all of the x and y coordinates in here */ public void update() { } /* * Keyboard Action listener * Esc is set to close the window by default */ private class KeyInputHandler extends KeyAdapter { public void keyPressed(KeyEvent e) { if(e.getKeyCode()==27) { System.exit(0); } } public void keyReleased(KeyEvent e) { } } public static void main(String argv[]) { Main g =new Main(); // Start the main game loop, note: this method will not // return until the game has finished running. Hence we are // using the actual main thread to run the game. g.gameLoop(); } }