飞机大战之-添加玩家

我们的玩家,以及各种敌机可以归为一类,所以我们新建一个包, modle用与存放各种飞机。接下来就是新建一个Player类用来表示我们的玩家。

回想之前的创建背景图, 创建背景图的时候我们新建了一些常量, 例如 背景图的长和宽

所以在新间玩家时,我们也创建玩家的长和宽 ,以及玩家的横纵坐标。

package modle;

public class Player {

	public int width = 100;
	
	public int height = 100;
	
	public int x, y;
	
	public Player()
	{
		
		
	}
	
}

最最重要的 我们玩家的图片还需要新建一个变量, 但是由于我们的玩家是有多个图片组合起的动态效果,所以我们需要新建一个图片数组用于存放玩家的图片,形成动画效果。
为了访问图片数组,所以我们定义一个数组下标变量。
获得图片的函数和之前获得背景是一个函数。

package modle;

import java.awt.Image;
import java.awt.Toolkit;

public class Player {

	public int width = 100;
	
	public int height = 100;
	
	public int x, y;
	
	public Image player[] = {
			Toolkit.getDefaultToolkit().getImage("images/player01.png"),
			Toolkit.getDefaultToolkit().getImage("images/player02.png"),
			Toolkit.getDefaultToolkit().getImage("images/player03.png"),
			Toolkit.getDefaultToolkit().getImage("images/player04.png"),
			Toolkit.getDefaultToolkit().getImage("images/player05.png"),
			Toolkit.getDefaultToolkit().getImage("images/player06.png"),
			Toolkit.getDefaultToolkit().getImage("images/player07.png"),
			Toolkit.getDefaultToolkit().getImage("images/player08.png"),
			Toolkit.getDefaultToolkit().getImage("images/player09.png"),
			Toolkit.getDefaultToolkit().getImage("images/player10.png"),
			
	};
	
	public int indexImage = 0;
	
	public Player()
	{
		
		
	}
	
}

接下来就是让我们的玩家动起来, 我们需要使用 定义在MyPanel中的time定时器,根据时间来改变图片。所以在Player构造方法中接收MyPanel参数。
接着新建一个MyPanle对象用于保存构造函数中的MyPanel。

package modle;

import java.awt.Image;
import java.awt.Toolkit;

import view.MyPanel;

public class Player {
	
	public MyPanel myPanel;

	public int width = 100;
	
	public int height = 100;
	
	public int x, y;
	
	public Image player[] = {
			Toolkit.getDefaultToolkit().getImage("images/player01.png"),
			Toolkit.getDefaultToolkit().getImage("images/player02.png"),
			Toolkit.getDefaultToolkit().getImage("images/player03.png"),
			Toolkit.getDefaultToolkit().getImage("images/player04.png"),
			Toolkit.getDefaultToolkit().getImage("images/player05.png"),
			Toolkit.getDefaultToolkit().getImage("images/player06.png"),
			Toolkit.getDefaultToolkit().getImage("images/player07.png"),
			Toolkit.getDefaultToolkit().getImage("images/player08.png"),
			Toolkit.getDefaultToolkit().getImage("images/player09.png"),
			Toolkit.getDefaultToolkit().getImage("images/player10.png"),
			
	};
	
	public int indexImage = 0;
	
	public Player(MyPanel myPanel)
	{
		this.myPanel = myPanel;
		
	}
	
}

然后我们可以利用time 去创建动画,接下来画我们的玩家。

编写drawPlayer()方法记得我们使用该方法的参数Graphics g来绘制。

	public void drawPlayer(Graphics g)
	{
		g.drawImage(this.player[indexImage], x, y, width, height,null);

	}

接下来就是利用myPanel中的time去改变图片,形成动画。


```java
if(myPanel.time % 50 == 0)
		{
			indexImage ++;
			
			if(indexImage == player.length)
			{
				indexImage = 0;
			}
		}

动画制作完了最后设置玩家的位置(利用窗口类BaseFrame中的静态常量,窗口的宽和高去改位置)

public Player(MyPanel myPanel)
	{
		this.myPanel = myPanel;
		this.x = (BaseFrame.frameWidth - this.width) / 2;
		this.y = (BaseFrame.frameHeight - this.height * 2) ;
		
	}

接下来就是去MyPanel中调用该绘制方法drawPlayer()
1.新建一个 Player对象,
2.MyPanel构造函数中添加玩家对象,
3.用玩家调用绘制方法drawPlayer()

package view;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JPanel;

import modle.Player;
import thread.DrawbleThread;

public class MyPanel extends JPanel{
	
	public Image bgImage;
	
	public int time = 0;
	public int top = 0;
	
	public DrawbleThread drawbleThread;
	
	public Player player;
	
	
	public MyPanel()
	{
		//设置背景
		this.bgImage = Toolkit.getDefaultToolkit().getImage("images/bg01.jpg");
		//添加玩家
		this.player = new Player(this);
		//创建线程
		this.drawbleThread = new DrawbleThread(this);
		//启动线程
		this.drawbleThread.start();
		
	}
	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawImage(this.bgImage, 0,
				top-this.bgImage.getHeight(this), 
				this.bgImage.getWidth(this),
				this.bgImage.getHeight(this),
				null);
		g.drawImage(this.bgImage, 0,top, 
				this.bgImage.getWidth(this),
				this.bgImage.getHeight(this),
				null);
		
		time ++;
		
		if(time == 10000)
			time = 0;
		
	
		if(time % 10 == 0)
		{
			top ++;
			
			if(top >= this.bgImage.getHeight(this))
			{
				top = 0;
			}
			
		}
		
		this.player.drawPlayer(g);
		
	}
	
	
}

发布了24 篇原创文章 · 获赞 1 · 访问量 1458

猜你喜欢

转载自blog.csdn.net/qq_43077318/article/details/104644569