1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class Q extends JFrame {
private int px;
private int py; private int oldPx; private int oldPy;
private boolean started;
private boolean gameOver;
private int[] keys = new int[] { KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT, KeyEvent.VK_UP, KeyEvent.VK_DOWN};
private boolean[] controls = new boolean[4];
private Q() { super("Quix"); super.setSize(400, 400); super.setResizable(false); super.show(); super.createBufferStrategy(2); BufferStrategy strategy = getBufferStrategy(); this.init(); long lastLoopTime = System.currentTimeMillis(); while (true) { int delta = (int) (System.currentTimeMillis() - lastLoopTime); logic(delta);
lastLoopTime = System.currentTimeMillis(); this.render(strategy.getDrawGraphics()); strategy.show(); try { Thread.sleep(1); } catch(InterruptedException e) { } } }
private void init() { this.started = true; this.gameOver = false; this.px = 200; this.py = 370; }
private void logic(int delta) { if(!this.started) { return; } if(this.controls[2]) { this.py -= delta * 0.1; } else if(this.controls[3]) { this.py += delta * 0.1; } else if(this.controls[0]) { this.px -= delta * 0.1; } else if(this.controls[1]) { this.px += delta * 0.1; } else { this.oldPx = this.px; this.oldPy = this.py; } }
private void render(Graphics g) { g.setColor(Color.black); g.fillRect(0, 0, 400, 400);
g.setFont(g.getFont().deriveFont(Font.BOLD, 20.0f)); if (!started) { g.setColor(Color.red); g.drawString("Quix", 90, 100); g.drawString("4k Game", 80, 120); g.setColor(Color.white); g.drawString("Press Space", 65, 150); return; } g.setColor(Color.blue); g.drawRect(20,30,360,350); g.setColor(Color.red); g.drawLine(this.px,this.py,this.oldPx,this.oldPy);
}
protected void processKeyEvent(KeyEvent e) { for (int i = 0; i < keys.length; i++) { if (e.getKeyCode() == keys[i]) { controls[i] = e.getID() == KeyEvent.KEY_PRESSED; } } if (e.getKeyCode() == 27) { System.exit(0); } else if (e.getKeyCode() == 32) { started = true; if (this.gameOver) { this.init(); } } }
public static void main(String[] args) { new Q(); } } |