Clavier Actionlistener

Je suis en train de faire un vaisseau spatial (PlayerShip.gif) dans mon jeu de déplacer vers la gauche, la droite, le haut et vers le bas lorsque le correspondant touches sont pressées. Je sais que j'ai besoin d'un keyboardListener mais je vais avoir des questions à décider où il va et comment il est effectivement implimented. mon code est comme suit.

public class GamePanel extends JPanel implements KeyListener {
Timer timer1;
Timer timer2;
ArrayList<Ships> ship;
int x;
int y;
double speed;
int size;
int shipxCoord;
int shipyCoord;
int shipHeight;
int shipWidth;
int shipRise;
int shipRun;
boolean left = false;
boolean right = false;
boolean up = false;
boolean down = false;
Image enemyShip1;
Image enemyShip2;
Image playerShip;
ImageIcon ic = new ImageIcon("Ship.gif");
ImageIcon ic2 = new ImageIcon("Ship2.gif");
int width = ic.getIconWidth();
int height = ic.getIconHeight();
Image background = Toolkit.getDefaultToolkit().createImage("background.jpg");
public GamePanel(int size, double speed) {
super();
x = 450;
y = 510;
ship = new ArrayList<Ships>();
//call timer for 1st type of enemy Ship with a delay of 5 seconds between ships
enemy1Timer(5);
//call timer for 2nd type of enemy Ship with a delay of 3 seconds between ships
enemy2Timer(3);
this.size = size;
this.speed = speed;
enemyShip1 = new ImageIcon("ship.gif").getImage();
enemyShip2 = new ImageIcon("ship2.gif").getImage();
playerShip = new ImageIcon("playerShip.gif").getImage();
// this.add(image);
} //end constructor
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(background, 0, 0, null);
for (Ships s : ship) {
s.paintComponent(g);
}
g.drawImage(playerShip, x, y, this);
//g.drawImage(enemyShip2,x,y,this);
}//end method paintComponent
public void move() {
for (Ships s : ship) {
s.moveship(this);
//s.detectCollision(ship);
}
if (left) {
x -= speed;
}
if (right) {
x += speed;
}
if (up) {
y -= speed;
}
if (down) {
y += speed;
}
if (x > getWidth() - size) {
x = getWidth() - size;
}
if (x < 0) {
x = 0;
}
if (y > getHeight() - size) {
y = getHeight() - size;
}
if (y < 0) {
y = 0;
}
}//end method move
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_LEFT) {
left = true;
}
if (e.getKeyCode() == e.VK_RIGHT) {
right = true;
}
if (e.getKeyCode() == e.VK_UP) {
up = true;
}
if (e.getKeyCode() == e.VK_DOWN) {
down = true;
}
} //end method keyPressed
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == e.VK_LEFT) {
left = false;
}
if (e.getKeyCode() == e.VK_RIGHT) {
right = false;
}
if (e.getKeyCode() == e.VK_UP) {
up = false;
}
if (e.getKeyCode() == e.VK_DOWN) {
down = false;
}
}
public void enemy1Timer(int seconds) {
timer1 = new Timer();
timer1.schedule(new ShipSwarm1(), 1000, seconds * 1000);
}//end method enemy1Timer
class ShipSwarm1 extends TimerTask {
public void run() {
for (int Wave = 1; Wave > 0; Wave--) {
Ships enemy = new Ships(ic, enemyShip1);
ship.add(enemy);
}//end for
}//end method run
}//end class Enemy1Swarm
public void enemy2Timer(int seconds) {
timer2 = new Timer();
timer2.schedule(new ShipSwarm2(), 3000, seconds * 1000);
}//end method enemy1Timer
class ShipSwarm2 extends TimerTask {
public void run() {
for (int Wave = 1; Wave > 0; Wave--) {
Ships enemy = new Ships(ic2, enemyShip2);
ship.add(enemy);
}//end for
}//end method run
}
}
pouvez-vous accepter des réponses, si vous vous sentez qu'ils sont corrects ?

OriginalL'auteur Jeremy | 2011-07-30