1     /**
2      * Curso Básico de desarrollo de Juegos en Java - Invaders
3      * 
4      * (c) 2004 Planetalia S.L. - Todos los derechos reservados. Prohibida su reproducción
5      * 
6      * http://www.planetalia.com
7      * 
8      */
9     package version17;
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        
19      
20      public Player(Stage stage) {
21        super(stage);
22        setSpriteNames( new String[] {"nave.gif"});
23      }
24      
25      public void act() {
26        super.act();
27        x+=vx;
28        y+=vy;
29        if (x < 0 || x > Stage.WIDTH)
30          vx = -vx;
31        if (y < 0 || y > Stage.HEIGHT)
32          vy = -vy;
33      }
34    
35      public int getVx() { return vx; }
36      public void setVx(int i) {vx = i; }
37      public int getVy() { return vy; }
38      public void setVy(int i) {vy = i; }
39      
40      
41      protected void updateSpeed() {
42        vx=0;vy=0;
43        if (down) vy = PLAYER_SPEED;
44        if (up) vy = -PLAYER_SPEED;
45        if (left) vx = -PLAYER_SPEED;
46        if (right) vx = PLAYER_SPEED;
47      }
48      
49      public void keyReleased(KeyEvent e) {
50        switch (e.getKeyCode()) {
51          case KeyEvent.VK_DOWN : down = false;break;
52          case KeyEvent.VK_UP : up = false; break;
53          case KeyEvent.VK_LEFT : left = false; break; 
54          case KeyEvent.VK_RIGHT : right = false;break;
55        }
56        updateSpeed();
57      }
58      
59      public void keyPressed(KeyEvent e) {
60        switch (e.getKeyCode()) {
61          case KeyEvent.VK_UP : up = true; break;
62          case KeyEvent.VK_LEFT : left = true; break;
63          case KeyEvent.VK_RIGHT : right = true; break;
64          case KeyEvent.VK_DOWN : down = true;break;
65        }
66        updateSpeed();
67      }
68      
69    }
70