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 136
|
public class Player extends JComponent{
public float posX, posY;
public float speed;
private float x, y;
private float width, height;
private double angle;
private Image image;
private Boolean leftPress = false, rightPress = false, upPress = false, downPress = false;
public Player(){
this.posX = 400;
this.posY = 300;
this.speed = 3;
this.angle = 0;
setImage("spaceship.png");
}
public void setImage(String s){
try{
image=ImageIO.read(new File(s));
this.width = image.getWidth(null);
this.height = image.getHeight(null);
}catch (IOException e){
e.printStackTrace();
}
}
public void move(){
posX += x;
posY += y;
//collision
if(posX < 1) posX = 1;
if(posY < 1) posY = 1;
if(posX > 800) posX = 800;
if(posY > 600) posY = 600;
}
public void update() {
// Initialisation du déplacement à 0
x = 0;
y = 0;
// Déplacement
if (leftPress) x = -speed;
if (rightPress) x = speed;
if (downPress) y = speed;
if (upPress) y = -speed;
}
public float getPosX() {
return posX;
}
public float getPosY() {
return posY;
}
public float getSpeed() {
return speed;
}
public Image getImage() {
return image;
}
public double getAngle(){
return angle;
}
public void setAngle(double angle){
this.angle=angle;
}
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
switch (key) {
case KeyEvent.VK_LEFT :
leftPress = true;
break;
case KeyEvent.VK_RIGHT :
rightPress = true;
break;
case KeyEvent.VK_UP :
upPress = true;
break;
case KeyEvent.VK_DOWN :
downPress = true;
break;
}
update();
}
public void keyReleased(KeyEvent e) {
// Récupération de la touche relâchée
int key = e.getKeyCode();
// Actions & MAJ
switch (key) {
case KeyEvent.VK_LEFT :
leftPress = false;
System.out.println("Left released");
break;
case KeyEvent.VK_RIGHT :
rightPress = false;
System.out.println("Right released");
break;
case KeyEvent.VK_UP :
upPress = false;
System.out.println("Up released");
break;
case KeyEvent.VK_DOWN :
downPress = false;
System.out.println("Down released");
break;
}
// MAJ
update();
}
public void rotate(MouseEvent e){
System.out.println(""+e.getX());
float xDistance = e.getX() - posX;
float yDistance = e.getY() - posY;
double angleToTurn = Math.atan2(yDistance, xDistance);
this.setAngle(angleToTurn);
}
} |