1
9 package version20;
10
11 import java.awt.event.KeyEvent;
12
13 public class Player extends Actor {
14 protected static final int PLAYER_SPEED = 4;
15 protected int vx;
16 protected int vy;
17 private boolean up,down,left,right;
18 private int clusterBombs;
19
20
21 public Player(Stage stage) {
22 super(stage);
23 setSpriteNames( new String[] {"nave.gif"});
24 clusterBombs = 5;
25 }
26
27 public void act() {
28 super.act();
29 x+=vx;
30 y+=vy;
31 if (x < 0 || x > Stage.WIDTH)
32 vx = -vx;
33 if (y < 0 || y > Stage.HEIGHT)
34 vy = -vy;
35 }
36
37 public int getVx() { return vx; }
38 public void setVx(int i) {vx = i; }
39 public int getVy() { return vy; }
40 public void setVy(int i) {vy = i; }
41
42
43 protected void updateSpeed() {
44 vx=0;vy=0;
45 if (down) vy = PLAYER_SPEED;
46 if (up) vy = -PLAYER_SPEED;
47 if (left) vx = -PLAYER_SPEED;
48 if (right) vx = PLAYER_SPEED;
49 }
50
51 public void keyReleased(KeyEvent e) {
52 switch (e.getKeyCode()) {
53 case KeyEvent.VK_DOWN : down = false;break;
54 case KeyEvent.VK_UP : up = false; break;
55 case KeyEvent.VK_LEFT : left = false; break;
56 case KeyEvent.VK_RIGHT : right = false;break;
57 }
58 updateSpeed();
59 }
60
61 public void keyPressed(KeyEvent e) {
62 switch (e.getKeyCode()) {
63 case KeyEvent.VK_UP : up = true; break;
64 case KeyEvent.VK_LEFT : left = true; break;
65 case KeyEvent.VK_RIGHT : right = true; break;
66 case KeyEvent.VK_DOWN : down = true;break;
67 case KeyEvent.VK_SPACE : fire(); break;
68 case KeyEvent.VK_B : fireCluster(); break;
69 }
70 updateSpeed();
71 }
72
73 public void fire() {
74 Bullet b = new Bullet(stage);
75 b.setX(x);
76 b.setY(y - b.getHeight());
77 stage.addActor(b);
78 }
79
80 public void fireCluster() {
81 if (clusterBombs == 0)
82 return;
83
84 clusterBombs--;
85 stage.addActor( new Bomb(stage, Bomb.UP_LEFT, x,y));
86 stage.addActor( new Bomb(stage, Bomb.UP,x,y));
87 stage.addActor( new Bomb(stage, Bomb.UP_RIGHT,x,y));
88 stage.addActor( new Bomb(stage, Bomb.LEFT,x,y));
89 stage.addActor( new Bomb(stage, Bomb.RIGHT,x,y));
90 stage.addActor( new Bomb(stage, Bomb.DOWN_LEFT,x,y));
91 stage.addActor( new Bomb(stage, Bomb.DOWN,x,y));
92 stage.addActor( new Bomb(stage, Bomb.DOWN_RIGHT,x,y));
93 }
94
95 }
96