Java 飞机大战 键盘控制飞机

package PlayGame;

import java.awt.*;
import java.awt.event.KeyEvent;

public class Plane extends GameObject {

    boolean left,right,up,down;//飞机方向

    public void drawSelf(Graphics g) {
        g.drawImage(img, (int) x, (int) y, null);

        if (left) {             //如果 left 是真,坐标x-speed(x = 50 ,speed = 1,就是说明按一下left键 ,就成了49)
            x -= speed;
        }
        if(right){
            x+=speed;
        }
        if(up){
            y-=speed;
        }
        if(down){
            y+=speed;
        }
    }

    public Plane(Image img, double x, double y) {
        this.img = img;
        this.x = x;
        this.y = y;

    }

    //按下某个键,增加相应的方向
    public void addDirection(KeyEvent e){
        switch (e.getKeyCode()){
            case KeyEvent.VK_LEFT:  //KeyEvent.VK_left :告诉left对应的数字是多少
                left = true;
                break;
            case KeyEvent.VK_UP:
                up = true;
                break;
            case KeyEvent.VK_RIGHT:
                right = true;
                break;
            case KeyEvent.VK_DOWN:
                down = true;
                break;

        }
    }

    //按下某个键,取消相应的方向 ,如果不取消 就会一直向这个方向移动
    public void minusDirection(KeyEvent e){
        switch (e.getKeyCode()){
            case KeyEvent.VK_LEFT:  //KeyEvent.VK_left :告诉left对应的数字是多少
                left = false;
                break;
            case KeyEvent.VK_UP:
                up = false;
                break;
            case KeyEvent.VK_RIGHT:
                right = false;
                break;
            case KeyEvent.VK_DOWN:
                down = false;
                break;

        }
    }

}

KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值 。

当按下一个键时会调用KeyPressed处理器,当松开一个键时会调用KeyReleased处理器,当输入一个统一编码时会调用KeyTyped处理器。如果这个键不是统一码(如功能键,修改键,动作键和控制键) 每个按键事件有一个相关的按键字符和按键代码,分别由KeyEvent中的getKeyChar()和getKeyCode()方法返回   getKeyChar():  char            返回这个事件中和键相关的字符 getKeyCode():  int              返回这个事件中和键相关的整数键 getKeyCode()          返回定义在表中的值 getKeyChar()          返回输入的字符   keyPressed(e: KeyEvent)         在源组件上按下一个键后被调用 KeyReleased(e: KeyEvent)       在源组件上释放一个键后被调用 KeyTyped(e: KeyEvent)           在源组件上按下一个键然后释放该键后被调用   ***************************************************************************************************   boolean 定义了 left , right ,up ,down 四个键(即 真假值 true false)     KeyEvent.VK_?? :表示提取这个键盘的值,如  KeyEvent.VK_UP 表示 up键的整数值,  KeyEvent.VK_UP  是38,就不需要去记忆上键的值。   ********************************************************************************************* 在重画飞机中,采用对应的真假值来改变下一次飞机重画时的坐标。  
上一篇:linux学习第十二天 (Linux就该这么学)找到一本不错的Linux电子书,附《Linux就该这么学》章节目录


下一篇:桥接模式与解耦合