Tank大战0.8 版本

说明:这个版本中添加了爆炸的效果.

1.爆炸效果在子弹击中坦克时发生.

2.要在窗口中看到爆炸,必须由窗口画出爆炸.....


1.新建爆炸类.

import java.awt.Color;
import java.awt.Graphics;


public class Explode extends Thread{

	int i;
	int j;
	TankClient tc;	

	public void run() {
		try {
			Explode.sleep(300);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tc.AE.remove(this);
		
	}

	public Explode(int i,int j,TankClient tc) {
		this.i=i;
		this.j=j;
		this.tc=tc;
	} 
	
	public void draw(Graphics g) {
		
		g.setColor(Color.pink);
		g.fillOval(i-35, j-35, 60, 60);
		
	}
	
	public static void main(String[] args) {
		
	}

}

爆炸类从Thread类中继承,因为爆炸的类需要自动在生成的一段时间类消失...需要让TankClient中画出这个生成的类..那我们必须把它放在TankClient的容器中去.


2.

public void paint(Graphics g) {
		g.setColor(Color.red);
		g.drawString("There are those numbers of bullets: "+N1.BTA.size(), 50, 50);
		g.drawLine(pt.x, 0, pt.x, 550);
		g.drawLine(0, pt.y, 700, pt.y);
		
		drawTank(GATK,g,Color.green);
		drawTank(BATK,g,Color.MAGENTA); 
		drawExplode(g);
		
		N1.drawBullets(g);
		}	
	
	
	public void drawExplode(Graphics g) {
		for(int i=0;i<AE.size();i++) {
			AE.get(i).draw(g);
		}
		
	}

在Client函数新增了画出爆炸的方法,同时在paint()方法中调用.


3.子弹方法中加入当达到坦克时产生爆炸.

public void run() {
		while((x>=0)&&(x<=700)&&(y>=0)&&(y<=550)) {
			for(int i=0;i<tc.BATK.size();i++) {
			if(this.rectangle().intersects(tc.BATK.get(i).rectangle())) {
				
				ex=new Explode(this.x,this.y,tc);
				tc.AE.add(ex);
				ex.start();
				
				tk.BTA.remove(this);
				tc.BATK.remove(tc.BATK.get(i));
				}
			}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值