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
|
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
/*
* game template Aug 2014
* @author Mikael Guillemot (alias Forthx)
*/
public class J2DTemplate extends JFrame implements Runnable, KeyListener {
// resolution de la fenetre de jeu
private final int W = 200;
private final int H = 70;
private static final long serialVersionUID = 1L;
private final Color BLACK = new Color(0x0);
private volatile List<Integer> keys = new ArrayList<Integer>();
private long timer;
private Graphics2D g, buffer_g;
private BufferedImage buffer;
private void gameloop(Graphics2D image) {
// exemple de boucle de jeu
image.setColor(Color.white);
image.drawString("touche(s) clavier : " + keys.toString(), 10, 40);
}
public J2DTemplate() {
this.setSize(W, H);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.addKeyListener(this);
this.setVisible(true);
buffer = new BufferedImage(W, H, BufferedImage.TYPE_INT_ARGB);
g = (Graphics2D) getGraphics();
buffer_g = (Graphics2D) buffer.getGraphics();
}
public static void main(String[] args) {
new Thread(new J2DTemplate()).start();
}
public void run() {
while (true) {
buffer_g.setColor(BLACK);
buffer_g.fillRect(0, 0, 800, 600);
timer = System.nanoTime();
gameloop(buffer_g);
g.drawImage(buffer, 0, 0, this);
timer += 16000000; // 62 fps
while (System.nanoTime() < timer)
Thread.yield();
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (!keys.contains(e.getKeyCode()))
keys.add(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
int index = keys.indexOf(e.getKeyCode());
if (index >= 0)
keys.remove(index);
}
} |
Partager