敌人自动发射子弹

在我的毕设中,我选择用java写东方project的一个demo,然后在敌人发射子弹这块犯了难。我想实现的是,敌人是随机生成的,放在容器中,子弹是每个随机生成的敌人独立发射的,且发射间隔有序。
       那么问题来了,一方面敌人要随机生成,一方面子弹也是放在容器中的,要赋给每个敌人并且需要在其消失时回收,怎样才能保证其正确的回收,而不是全部?实际开发中我遇到过敌人回收了但子弹依旧虚空发射,敌人出来,子弹不发射等等情况。
       这里提供一个思路,也是目前我觉得稍微可行的方法。我们使用定时器来控制子弹的生成,随着敌人对象的移除而停止定时器。在这我又遇到了定时器的问题,很麻烦,定时器cancel了就不能被再度启动,我们只有为每一个随机的敌人对象开设一个定时器。
       为了回收正确,这里采用匿名的方式,即用完就扔,定时器相互就没有影响了。

// 使用匿名定时器,方便用完就扔
new Timer().schedule(new TimerTask() {public void run() {// 这里的img是我设置的两种子弹攻击方式if (obj.img != powerImg) {if (obj.img == sEnemyImg2) {eBulletList2.add(new Bullet(eBullet04, obj.x + 20, obj.y + 35, 20, 41));eBulletList2.add(new Bullet(eBullet04, obj.x, obj.y + 35, 20, 41));} else {eBulletList2.add(new Bullet(eBullet04, obj.x, obj.y + 20, 20, 41));}// 判断定时器结束if (obj.x < 0 || obj.hp <= 0 || score >= 10 || live == false) {this.cancel();}}}// 定时器执行间隔,毫秒}, 0, 1000);

当然这些方法最后都要在paint中画出来,集合是需要先add进去,再在paint中get出来,这是目前我的解决方法,不知道用数组是否会方便很多,个人对数组实在不熟练= =

java敌人发射子弹相关推荐

  1. Java学习记录:Java飞机大战进阶版(敌人有子弹、有生命、有boss、有声音、还有大招一键清屏)

    Java飞机大战 序言 一.项目需求分析 二.各个对象类的设计 加载图片类Images 抽象类FlyingObject 天空类Sky 小敌机类Airplane 大敌机类BigAirplane 侦察机类 ...

  2. Java使用线程并发库模拟弹夹装弹以及发射子弹的过程

    同样是从网上看到的一个需求,需求描述都在代码中. 不多说了,直接贴代码了.相信大家都能够看得懂的! package cn.yw.bore;import java.util.ArrayList; imp ...

  3. 如何用java让坦克发射子弹_java怎么制作坦克大战

    对于一些小游戏的实现方法是很多小伙伴们都好奇的,也有很多小游戏是由Java而制作的,那么你知道java怎么制作坦克大战吗?接下来的内容中我们就一起去看看吧. 详情请参照注释,这里就不多废话了,实现一下 ...

  4. java怎么连发子弹_JAVA之坦克子弹连发以及敌人坦克死亡

    总结一下几点 1:在hero中修改子弹,并且把原有初始化子弹语句初始化,利用线程安全的集合类  Vector来进行,并在switch中进行加入 Vector ss=new Vector(); show ...

  5. JAVA之坦克大战(四)敌方坦克的移动和发射子弹

    思路:敌方坦克移动和发射子弹肯定需要单独的线程,然后敌方坦克的随机移动需要获取四个随机的方向做到以上几点之后会发现做出来的敌方坦克非常的鬼畜,原因是获取随机的方向太频繁,所以我写了一个for循环控制1 ...

  6. java怎么连发子弹_【Java_项目篇1】--JAVA实现坦克大战游戏--子弹连发+爆炸效果(四)...

    前期相关文章 [Java_项目篇<1>]–JAVA实现坦克大战游戏–画出坦克(一) [Java_项目篇<1>]–JAVA实现坦克大战游戏–坦克移动+添加敌方坦克(二) [Jav ...

  7. unity零基础开始学习做游戏(四)biu~biu~biu发射子弹打飞机

    -------小基原创,转载请给我一个面子 主角都能移动了,那不得做点什么伸张正义,守护世界和平的事嘛,拿起家伙biu~biu~biu~ 首先得做一个好人和一个坏人 老规矩,Canvas下创建两个Im ...

  8. 自动发射子弹c语言,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

  9. Unity中玩家的攻击(发射子弹,挥剑)

    目前来说,我就知道玩家两种攻击方式,1.发射(子弹,弓箭),2.挥剑 1.发射子弹 想要玩家发射子弹,需要制作两个部分(玩家发射动画除外),第一个部分就是控制玩家的脚本,第二部分则是子弹部分,子弹部分 ...

最新文章

  1. java中包的_Java中的包
  2. Xen的network-bridge模式
  3. AWS — AWS VPC 虚拟专用云
  4. 字符集编码ANSI和UNICODE
  5. 笔记-项目进度管理-控制进度
  6. centos7磁盘挂载
  7. C#下实现动态系统托盘图标
  8. 在企业内部使用openssl创建私有CA
  9. 通过Java 8流使用Oracle AQ
  10. 索引原理及项目中如何使用索引实例分析
  11. android 自定义控件viewgroup,Android自定义控件ViewGroup
  12. 【译】NoClassDefFoundError和ClassNotFoundException的不同
  13. sqoop导出数据|Hive|HDFS和脚本编写
  14. 并行算法第二讲:并行算法基础知识
  15. struts框架搭建及validator示例
  16. linux服务器时间不一致,Linux服务器时间不准确
  17. 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
  18. java山海经之轩辕_山海经之情剑轩辕 炼化任务详细攻略
  19. jquery实现回到顶部和回到底部
  20. 解决socket通信时TIME_WAIT的socket过多

热门文章

  1. 小窍门解决大问题(绝对值得收藏)
  2. 【面试专栏】第三篇:Java基础:集合篇-List、Queue
  3. C#从IE浏览器获取Cookie
  4. 处理人际冲突(冲突的本质是什么?发生冲突最要不要采取哪四种行动?建设性处理冲突的技巧是什么?)...
  5. 复旦大学计算机科学与技术,复旦大学计算机科学技术学院
  6. Thermal 芯片工作温度知识总结
  7. 数据模型建设步骤总结
  8. c语言实验作业在dev蜗居的思路,C语言程序设计实验(共5篇)
  9. vscode 扩展 本地_使用众包扩展产品本地化
  10. Android前端判断敏感词汇