基于JAVA的简易坦克大战(八)

4.2.5 爆炸效果类算法

1、爆炸效果类通过在子弹有效打击的时候,在子弹和击杀坦克接触的坐标上按规定的爆炸步数,画出不同半径的圆来模拟爆炸效果的。

2、爆炸效果类的设计源码:

import java.awt.*;
public class Explosion {
	private int x;
	private int y;
	private TankClient tc = null;
	private int step = 6;
	private int size[][] = {{10,10},{20,20},{30,30},{35,35},{20,20},{5,5}};
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	public Explosion(int x, int y, TankClient tc) {
		super();
		this.x = x;
		this.y = y;
		this.tc = tc;
	}
	public void drawExplosion(Graphics g){
	Color c = g.getColor();
	g.setColor(Color.YELLOW);
	for(int i = 0;i < step;i++ )
	{
		g.fillOval(x + 10, y + 10, size[i][0], size[i][1]);
	}
	g.setColor(c);
	}
}

4.2.6 墙体类算法

1、墙体类实现了游戏中墙体的draw方法:通过调用JAVA内部封装的画图方法实现了简易墙体的绘制。

2、子弹与墙体的碰撞检测以及敌我双方坦克与墙体的额碰撞检测是在坦克大战管理类中实现的。碰撞检测是通过判断对象实例的双方所占的额范围是否重合来实现的。挡子弹与墙体(非水墙)碰撞时,子弹live = false,并将该子弹从坦克大战管理类的子弹集合中删除(线程重画将不会再次画出该子弹)。当坦克和墙体发生碰撞时,坦克的坐标会自动返回坦克上一次的坐标(oldx,oldy),这样就可以解决坦克穿墙的问题了。

墙体类设计源码:
import java.awt.*;
public class Wall {

	private int x;
	private int y;
	private int width;
	private int height;
	private int number;//墙体类型编号
	private TankClient tc = null;
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	public int getNumber() {
		return number;
	}

	public Wall(int x, int y, int width, int height, int number, TankClient tc) {
		this.x = x;
		this.y = y;
		this.width = width;
		this.height = height;
		this.number = number;
		this.tc = tc;
	}
    public void drawWall(Graphics g){
    	Color c = g.getColor();	
    	//土墙
    	if(number == 0)
    	{
    		g.setColor(Color.GRAY);
    		g.fillRect(x, y, width, height);
    	}
    	//海
    	if(number == 1)
    	{
    		g.setColor(Color.BLUE);
    		g.fillRect(x, y, width, height);
    	}
    	g.setColor(c);
    }
    public Rectangle getRect(){
    	return new Rectangle(x,y,width,height);
    }
}


java做的坦克大战游戏 是课程设计来的 做了我8天 里面实验报告 可执行Jar文件 源代码都有了,游戏可以暂停 设置游戏等级等 下面是报告的一部分 方便下载的朋友看看 1. 游戏要有图形用户界面,界面能够反映游戏所有的细节。 2. 界面中要有坦克,墙,树林,河流。 3. 界面中要有一个“家”,“家”被攻击中则输了游戏。 4. 坦克分两种,敌方和我方。 5. 墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙。 6. 树和河流均只有一种,树林坦克可以通过。 7. 坦克可以发射子弹,敌我方的子弹属性一样。 8. 我方子弹可以杀死敌方坦克,敌方子弹也可以杀死我方坦克,但需要多枪子弹才可以杀死。 9. 敌方之间不可以杀死对方。 10. 子弹击中坦克要有爆炸,但击中墙不能爆炸。 11. 我方可以吃血包增加生命。 12. 游戏可以暂停,重新开始,游戏帮助等功能。具体如下图: 13. 1. 设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。 2. 界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。 3. 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。 4. 树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。 5. 河流:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。 6. 墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。 7. “家”:用户方除了有一辆自己的坦克外还有一个要保护的家,家由普通墙体包围,家受到子弹攻击后游戏立即结束,用户方则输了本局游戏。 8. 子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。 9. 爆炸:当子弹射击到坦克身上时,要产生爆炸效果。 10. 方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向从属于坦克的方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值