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

day2 创建玩家

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);
}
运行效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值