Java实现飞机大战小游戏(二)

day2 创建玩家

1.加入飞机

通过不断切换飞机的图片实现飞机动作。
Java实现飞机大战小游戏(二)_第1张图片

Player类

设置飞机宽度、高度、横坐标、纵坐标

public int width = 100;
public int height = 100;
public int x;
public int y;

用数组存放所有飞机对象

public Image[] images = new Image[]{
     
	Toolkit.getDefaultToolkit().getImage("images/player01.png"),
    Toolkit.getDefaultToolkit().getImage("images/player02.png"),
    Toolkit.getDefaultToolkit().getImage("images/player03.png")
};

用变量imageindex存储当前图片下标

public int imageindex = 0;

设置Player构造方法,因为飞机是在MyPanel上进行绘制,所以我们需要MyPanel的一些参数。

public Player(MyPanel myPanel){
     
	this.myPanel = myPanel;
    //飞机横坐标在窗口中间,纵坐标在距离窗口下方两个飞机高度处
    this.x = (BaseFrame.frameWidth - this.width)/2;
    this.y = BaseFrame.frameHeight - this.height*2;
}

将飞机类的绘制过程用drawSelf方法进行封装

public void drawSelf(Graphics g){
     
	//画飞机
    g.drawImage(this.images[imageindex], x, y, width, height, null);
    //每隔50毫秒改变飞机图片一次
    if(this.myPanel.timer%50==0){
     
    	imageindex++;
        if(this.imageindex == this.images.length)
        	this.imageindex = 0;
    }	
}

MyPanel类

将飞机放在myPanel上

public Player player;

新建一个Player对象

this.player = new Player();  

在paintComponent方法绘制飞机:

this.player.drawSelf(g);

运行效果

2.让飞机跟着鼠标移动

使用监听器监视鼠标单击事件

FrameMouseListener类

public class FrameMouseListener implements MouseListener{
     }

因为要实现鼠标点击哪里飞机就会出现在哪里的功能,所以我们需要对整个窗体设置监听器,在FrameMouseListener类内定义BaseFrame对象。

public BaseFrame baseFrame;

给整个窗体设置监听器后,当鼠标点击窗体的某个位置时,就会触发鼠标监听器MouseListener的mouseClick(MouseEvent e)方法,所以我们把点击后要实现的动作在这个方法里完成。

public void mouseClick(MouseEvent e){
     
	//飞机的坐标修 改为 鼠标坐标减去飞机宽高的一半
	this.baseFrame.myPanel.Player.x = e.getX()-this.baseFrame.myPanel.player.width/2;
	this.baseFrame.myPanel.Player.y = e.getY()-this.baseFrame.myPanel.Player.height/2;
}

BaseFrame类

给BaseFrame对象添加监听器,我们需要新建一个监听器对象

public FrameMouseListener frameMouseListener;

然后给窗体添加监听器

public BaseFrame {
     
	this.frameMouseListener = new FrameMouseListener();
	this.frameMouseListener.baseFrame = this;
	this.addMouseListener(this.frameMouseListener);
}

运行效果

你可能感兴趣的:(Java项目)