Déplacer objet dans l'espace
Bonjour à tous !
Je suis actuellement sur un projet JAVA dans lequel il faut recréer un jeu. Je suis bloqué à une étape assez indispensable : le déplacement de mon petit vaisseau dans l'espace.
J'ai donc une classe Vaisseau :
Code:
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 127 128 129 130 131 132 133 134 135
| package main;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.ImageIcon;
public class Vaisseau {
private String vaisseau = "vaisseau.png";
// Les variables de déplacement
private int dx;
private int dy;
// Les positions
private int x;
private int y;
// L'image
private Image image;
// Notre liste de missiles
private ArrayList<Missile> missiles;
// La taille du vaisseau
private final int vaisseau_SIZE = 20;
/**********************************************************************************************/
/* LE CONSTRUCTEUR */
public Vaisseau() {
// On récupère le vaisseau
ImageIcon ii = new ImageIcon(this.getClass().getResource(vaisseau));
image = ii.getImage();
// On initialise le vaisseau
missiles = new ArrayList<Missile>();
// La position de départ
x = 300;
y = 220;
}
/**********************************************************************************************/
/* LES GETTEURS */
public int getX() {
return x;
}
public int getY() {
return y;
}
public Image getImage() {
return image;
}
public ArrayList<Missile> getMissiles() {
return missiles;
}
/**********************************************************************************************/
/*
* Lorsque l'on appuie sur une touche
*/
public void keyPressed(KeyEvent e) {
// On récupère la touche en question
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
fire();
}
if (key == KeyEvent.VK_LEFT) {
dx = -1;
}
if (key == KeyEvent.VK_RIGHT) {
dx = 1;
}
if (key == KeyEvent.VK_UP) {
dy = -1;
}
if (key == KeyEvent.VK_DOWN) {
dy = 1;
}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
dx = 0;
}
if (key == KeyEvent.VK_RIGHT) {
dx = 0;
}
if (key == KeyEvent.VK_UP) {
dy = 0;
}
if (key == KeyEvent.VK_DOWN) {
dy = 0;
}
}
public void fire() {
// vaisseau_SIZE = taille en pixel de l'avion
// On fait partir le missile de la position actuelle + taille du
// vaisseau
// On fait partir le missile de la taille du vaisseau / 2 pour être au
// milieu
missiles.add(new Missile(x + vaisseau_SIZE / 2,y));
}
public void move() {
// La position actuelle devient celle définie par la touche appuyée
x += dx;
y += dy;
}
} |
Et je souhaiterais qu'à chaque fois qu'une personne appuie sur « left » ou « right », cela puisse faire une rotation au vaisseau, et, par la suite, que le déplacement se fasse en fonction de cela.
Si quelqu'un a une idée ?
Merci d'avance !