敌军坦克横空出世14(碰撞检测)

敌军的坦克是多个:
创建敌军坦克的集合在TankFrame类
List tanks = new ArrayList<>();

Starter类中初始化敌军,先初始化5个;
for (int i = 0; i < 5; i++) {
tankFrame.tanks.add(new Tank(200+i*60,200,Dir.DOWN,tankFrame));
}

别忘记画出坦克:
for (int i=0;i<tanks.size();i++){
tanks.get(i).paint(graphics);
}
搞定,敌军的坦克出来了,还不能移动 被子弹打中也不小时,接下来就该处理了:
敌军被消灭,子弹消失,是要做一个碰撞检测,看子弹和敌军的坐标是否重合;看代码:
在绘画的时候就要判断是否相撞

在绘画的时候就要判断是否碰撞:
for(int i=0;i<bulletList.size();i++){
for(int j=0;j<tanks.size();j++){
bulletList.get(i).collidewith(tanks.get(j));
}
}
//使用坦克和子弹的位置以及坐标绘制的矩形,如果相交表示碰撞了,
public void collidewith(Tank tank) {
Rectangle rect1 = new Rectangle(this.x, this.y, WIDTH, HEIGHT);
Rectangle rect2 = new Rectangle(tank.getX(), tank.getY(), Tank.WIDTH, Tank.HEIGHT);
if (rect1.intersects(rect2)) {
tank.die();
this.die();
}
}

private void die(){
    this.living = false;
}

}

//绘制子弹的时候 如果子弹没有了 就从集合中移除
public void paint(Graphics graphics) {
if (!living) {
tankFrame.bulletList.remove(this);
}
}
坦克同理。
private boolean living = true;

public void paint(Graphics graphics) {
    if (!living){
        tankFrame.tanks.remove(this);
    }

public void die(){
    this.living = false;
}    

热门文章

编程学习 ·

GPS卫星位置计算(卫星位置计算小程序)

目录一、准备以及结果图二、数据三、计算四、全部代码附:一、准备以及结果图软件:eclipse(2020-6版本)带有WindowBuilder插件编程语言:Java结果图:二、数据t0e星历的基准时间单位:秒a_sqrt轨道半长轴的平方根单位:米e1轨道离心率单位:无量纲i0倾角(在 t0e时)单位:r…
编程学习 ·

Eslint配置问题

Eslint配置问题rule规则配置解释Eslint问题解决方案 rule规则配置解释 "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 "no-bitwise": 0,//禁止使用按位运算符 "no-caller": 1,//禁止…
编程学习 ·

Unity的学习(二):打砖块

一、新建项目创建成功后,进入了如下界面。二、场景的设计 在Hierarchy中鼠标右键创建Plane(地面)游戏物体,将其Transform组件重置,并将游戏物体重命名为Ground,如下图所示。调整地面的大小。在Assets下创建文件夹Materials,并在其中创建Ground的Material(材质)并在Gro…
编程学习 ·

COMP暴涨 风险暗藏

作者|JX kin编辑|文刀6月29日,在以太坊上构建的DeFi借贷协议Compound,因资金规模首超10亿美元引起市场关注,更受关注的是该协议的治理代币COMP近期的暴涨暴跌。从几十美元到400多美元再到如今的200多美元,COMP这趟过山车仅仅开了不到半个月。6月16日,自Compound以“流动性…
编程学习 ·

最流行的两种vue打包成apk框架,简述

最流行的两种vue打包成apk框架 1、使用Dcloud-HbuilderX打包app基础打包(可忽略)配置manifest.json文件 在HbuilderX中找到:发行—>原生app打包(云打包) 注意HbulderX一个账号只打包5次。 等待一段时间打包成功,查询打包状态,返回一个网站,打开下载即可。Vue项目打包ap…
编程学习 ·

git命令大全

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git官方网站:https://git-scm.com/ 原理图Workspace:工作区 Index / Stage:暂存区 Repository:仓库…
编程学习 ·

【浅拷贝】Object.create()、Object.assign()、扩展运算符

文章目录【ES5】Object.create() 方法【ES6】Object.assign() 方法【ES6】对象展开运算符 "..."【ES5】Object.create() 方法第一层嵌套层原对象未被修改,而第二层开始,原对象被影响(计数器例子只有一层)【ES6】Object.assign() 方法第一层嵌套层原对象未被修改,…
编程学习 ·

01 HTML知识笔记(标签—布局)

本人使用的是sublime text3编辑器,这款软件的汉化破解版会随资料一起上传的😀然后找到的一些比较好的博文同大家一起share!!!Sublime text 3 汉化 破解版 分享Sublime Text3快捷键大全用sublime text3编写的html网页用浏览器打开出现中文乱码的原理及解决方法目录一、htm…
编程学习 ·

实施java 的web项目需要掌握的技术

实施java 的web项目需要掌握的技术如下:1.java语言:JSP、Servlet、JDBC、javaBean(Application)从这四部分开始创建web项目。(一)java Database Connectivity(JBDC)技术它是一种执行SQL语句的java API,由一组用java编程语言编写的类与接口组成,为开发人员提供了一个标准…
编程学习 ·

『互联网架构』软件架构-mysql主从(二)

通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。源码:https://…
编程学习 ·

企业实战--kubernetes(九)---存储(Secret)

一、Secret简介 Secret对象类型用来保存敏感信息,例如密码、OAuth令牌和ssh key。 敏感信息放在Secret中比放在Pod的定义或者容器镜像中来说更加安全和灵活。 Pod可以用两种方式来使用Secret: 作为volume中的文件被挂载到pod中的一个或多个容器中。 当kubelet为pod拉取镜像时…
编程学习 ·

大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域

近日,“2020大数据独角兽企业排行榜”重磅发布,国内厂商永洪科技和国际厂商Tableau双双入选TOP10,领跑BI &数据分析领域。在行业内,一直有着“内永洪,外Tableau”的说法。用一句话概括就是,Tableau是国际领头羊,永洪科技是国内领导者。 1、主办方是如何看待数据分析…
编程学习 ·

Filecoin主网预产 催生「无币有市」泡沫

作者|凯尔编辑|文刀Filecoin测试网的第二阶段已进行12天,屡次跳票的Filecoin主网进入 “预产期”,官方给出的最新时间为8月份。测试期间,Filecoin发布了矿工激励计划,参与测试的矿工可比拼真实数据、打包交易量等,来瓜分共计400万枚Filecoin代币FIL。官方期待以此方式充分…
编程学习 ·

javaWeb知识点总结[云图智联]

javaWeb知识点JSP概念JSP全称Java Server Page(Java服务端页面),通俗上来讲就是可以编写Java代码的HTML页面。在最早期是没有JSP的,那么后端开发人员想要展示一个网页,就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一门新的技术,他的本质上还是Servlet, 意思是服务…
编程学习 ·

SpringBooy集成shiro+cas单点登录

1、引入需要的依赖<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-cas</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.shiro</groupId><arti…
编程学习 ·

Redis cluster 集群节点维护

Redis cluster 集群节点维护 一 Redis cluster 集群节点维护 集群运行时间长久之后,难免由于硬件故障、网络规划、 业务增长等原因对已有集群进行相应的调整, 比如增加 Redis node 节点、 减少节点、 节点迁移、更换服务器等。 增加节点和删除节点会涉及到已有的槽位重新分配…
编程学习 ·

SSM整合(crud)

这是一个基于员工部门的bootstrap+ssm+maven的整合demo 部分图片如下所示:1.MyBatis逆向工程(MBG)自动生成代码 2.PageHelper分页插件 3.基于Maven的Spring+SpringMVC+MyBatis整合 4.使用BootStrap搭建前端页面,result风格,ajax异步请求(前端校验+后端校验JSR303+数据库约束,保…