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
| import org.eclipse.swt.graphics.*;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
public class Jeu {
private Display display;
private Shell shell;
private Canvas canvas;
private GC gc;
//Tableau dans lequel on va stocker les images de l'animation du personnage.
private Image[] images;
//Delais d'affichage entre chaque phase d'animation du personnage.
private int delayTime;
//x et y représentent la position du personnage.
private int x;
private int y;
//Ecart entre deux animations.
private int step;
public Jeu() {
step = 5;
x = 150;
y = 150;
delayTime = 150;
display = new Display();
shell = new Shell(display, SWT.MIN | SWT.CLOSE);
shell.setLocation(0, 0);
shell.setSize(300, 300);
//On initialise le tableau d'image avec les fichiers choisis.
images = new Image[4];
images[0] = new Image(display, ".\\rpg1-1.png");
images[1] = new Image(display, ".\\rpg1-2.png");
images[2] = new Image(display, ".\\rpg1-3.png");
images[3] = images[1];
final Image image = new Image(display, images[1], SWT.IMAGE_COPY);
gc = new GC(image);
canvas = new Canvas(shell,SWT.NONE);
canvas.setSize(300, 300);
canvas.setLocation(0, 0);
canvas.setBackground(new Color(display, 0, 0, 0));
canvas.addPaintListener(new PaintListener(){
public void paintControl(PaintEvent event){
event.gc.drawImage(image, x, y);
}
});
//Lorsqu'on appuyra sur la touche "i" on veut que le personnage monte.
canvas.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
String key = "" + e.character;
if (key.equals("i")) {
display.syncExec(
new Runnable() {public void run() {
walkForward();
}
});
}
}
public void keyReleased(KeyEvent e) {
}
});
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
}
//Fonction faisant l'animation du personnage qui monte vers le haut.
private void walkForward() {
for (int i=0; i<=3; i=i+1) {
y = y - step;
ImageData imageData = images[i].getImageData();
Image newImage = new Image(display, imageData);
gc.drawImage(newImage, imageData.x, imageData.y);
newImage.dispose();
canvas.redraw();
try {
Thread.sleep(delayTime);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
} |
Partager