import java.awt.Canvas; import java.awt.Color; import java.awt.Frame; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferStrategy; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class Game extends Canvas implements KeyListener { private Image sprite; private Image sprite2; private Image sprite3; private BufferStrategy strategy; private boolean left; private boolean right; private boolean up; private boolean down; private Map map; private Entity player; public Game() { try { URL url = Thread.currentThread().getContextClassLoader().getResource("res/sprite.gif"); if (url == null) { System.err.println("Unable to find sprite: res/sprite.gif"); System.exit(0); } sprite = ImageIO.read(url); } catch (IOException e) { System.err.println("Unable to load sprite: res/sprite.gif"); System.exit(0); } try { URL url2 = Thread.currentThread().getContextClassLoader().getResource("res/maze.gif"); if (url2 == null) { System.err.println("Unable to find sprite: res/maze.gif"); System.exit(0); } sprite2 = ImageIO.read(url2); } catch (IOException e) { System.err.println("Unable to load sprite: res/maze.gif"); System.exit(0); } try { URL url3 = Thread.currentThread().getContextClassLoader().getResource("res/box.gif"); if (url3 == null) { System.err.println("Unable to find sprite: res/box.gif"); System.exit(0); } sprite3 = ImageIO.read(url3); } catch (IOException e) { System.err.println("Unable to load sprite: res/box.gif"); System.exit(0); } Frame frame = new Frame("tomb sniffer"); frame.setLayout(null); setBounds(0,0,800,800); frame.add(this); frame.setSize(800,800); frame.setResizable(false); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.addKeyListener(this); addKeyListener(this); frame.setVisible(true); createBufferStrategy(2); strategy = getBufferStrategy(); map = new Map(sprite2, sprite3); player = new Entity(sprite, map, 1.5f, 1.5f); gameLoop(); } public void gameLoop() { boolean gameRunning = true; while (gameRunning) { Graphics2D g = (Graphics2D) strategy.getDrawGraphics(); g.setColor(Color.black); g.fillRect(0,0,800,800); g.translate(100,100); map.paint(g); player.paint(g); g.dispose(); strategy.show(); try { Thread.sleep(10); } catch (Exception e) {}; logic(); } } public void logic() { float dx = 0; float dy = 0; if (left) { dx -= 1; } if (right) { dx += 1; } if (up) { dy -= 1; } if (down) { dy += 1; } if ((dx != 0) || (dy != 0)) { player.move(dx,dy); } } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_LEFT) { left = true; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { right = true; } if (e.getKeyCode() == KeyEvent.VK_DOWN) { down = true; } if (e.getKeyCode() == KeyEvent.VK_UP) { up = true; } } public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_LEFT) { left = false; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { right = false; } if (e.getKeyCode() == KeyEvent.VK_DOWN) { down = false; } if (e.getKeyCode() == KeyEvent.VK_UP) { up = false; } } public boolean getLeft() { return left; } public boolean getRight() { return right; } public boolean getUp() { return up; } public boolean getDown() { return down; } public static void main(String[] argv) { Game bleh = new Game(); } }