TankWar游戏(图片版)----阶段六
来源:互联网 发布:夏朝存在吗 知乎 编辑:程序博客网 时间:2024/04/30 13:17
游戏素材:https://pan.baidu.com/s/1i4Z2Cip
阶段六实现敌方坦克的产生,受伤害死亡的效果。
初始化游戏时产生10辆敌方坦克,左右分别4辆,上方3辆。
1、初始化敌方坦克
TankClient中创建集合用来存放敌方坦克:
public List<Tank> tanks = new LinkedList<Tank>();在launchFrame()后添加敌方坦克:
for(int i=0;i<4;i++){//左右分别产生4辆坦克Tank t1 = new Tank(10,150*i,5,Direction.D,false,tc);//在tank类中有变量good用于设置己方(true)还是敌方(false)Tank t2 = new Tank(1300,150*i,5,Direction.D,false,tc);tanks.add(t1);tanks.add(t2);}for(int i=1;i<=3;i++){//上方产生3辆敌方坦克Tank t = new Tank(350*i,40,5,Direction.D,false,tc);tanks.add(t);}画出敌方tank:
for(int i=0; i<tanks.size(); i++) {Tank t = tanks.get(i);t.draw(g);}效果图(右边4辆产生了,GIF中没显示罢了):
2、敌方坦克的走位与开火
此游戏中没有实现AI,所以敌方坦克的走位我们设计为随机走位。
随机走位思想:
随机选取一个方向走几步,产生一个随机数是否大于某值,大于则开火,再随机选取方向走位,产生一个随机数是否大于某值,大于则开火,如此反复。
在tank类中添加属性:
private static Random r = new Random();private int step=r.nextInt(12);//随机走多少步在move()方法中添加:
if(!good) {Direction[] dirs = Direction.values();if(step == 0) {step = r.nextInt(12) + 3;int rn = r.nextInt(dirs.length);dir = dirs[rn];//获取随机方向}step --;if(r.nextInt(40) > 38) this.fire();//产生的随机数大于38就开火}效果图:
3、中弹死亡效果(己方子弹不受伤害)
子弹类添加属性:good。用于判断是不是己方子弹。
游戏中的碰撞检测:
在游戏中判断是否中弹基本思路是基于矩形的碰撞检测,java中可以很方便的让我们可以得到自身的矩形,使用getRect()方法。
在子弹类中添加方法:
public boolean hitTank(Tank t) {if(this.live && this.getRect().intersects(t.getRect()) && t.getAlive() && this.good != t.isgood()) {//不是己方子弹并且发生了碰撞t.setAlive(false);//坦克死亡this.live = false;//子弹应该消失return true;}return false;}public boolean hitTanks(List<Tank> tanks) {for(int i=0; i<tanks.size(); i++) {if(hitTank(tanks.get(i))) {return true;}}return false;}在TankClient的paint()方法中添加代码:
m.hitTanks(tanks);m.hitTank(mytank);
4、坦克死亡后从集合中移除
public void draw(Graphics g){//添加代码if(!isAlive) {if(!good) {tc.tanks.remove(this);//坦克死亡,移除此对象}return;}效果图:
阅读全文
5 0
- TankWar游戏(图片版)----阶段六
- TankWar游戏(图片版)----阶段一
- TankWar游戏(图片版)----阶段二
- TankWar游戏(图片版)----阶段三
- TankWar游戏(图片版)----阶段四
- TankWar游戏(图片版)----阶段五
- TankWar游戏(图片版)----阶段七
- TankWar游戏(图片版)----阶段八
- TankWar单机 (JAVA版) 目录
- TankWar单机版雏形
- tankWar
- TankWar 单机(JAVA版) 版本0.3 画出坦克
- TankWar 单机(JAVA版) 提前优化 图形化
- TankWar 单机(JAVA版)版本2.2 超级炮弹
- TankWar小型游戏开发全过程(尚学堂视频免费提供)
- TankWar 单机(JAVA版) 版本0.1&&版本0.2 显示一个窗口
- TankWar 单机(JAVA版) 版本0.4~版本0.6 让坦克动起来
- TankWar 单机(JAVA版)优化炮杆和坦克移动方向不一致
- 前端面试题7
- JsonUtil
- 各领域公开数据集下载
- Elasticsearch 5.x Java api Aggregations(聚合)
- Qt5.9.2 msvc + qtcreator程序发布
- TankWar游戏(图片版)----阶段六
- Java中正则表达式
- ionic2+angular-in-memory-web-api(内置内存服务器)+跨域问题
- React Native组件的生命周期及属性props
- 链表的初识
- 多媒体 camera 拍照
- 求sinx的近似值
- PAT考试乙级1028(C语言实现)重点题目
- hbase filter(过滤器)和coprocessor(协处理器)统计行数的简单应用