在他写的paint方法里面,有一个if的判断,如果shot.isLive=true 就执行画子弹,如果是false就把子弹从Vector里面拿走。我的想法是如果子弹要被拿除,应该是子弹接触到坦克的时候,执行这段代码,所以我就跳转到hitTank方法里面,方法中写有如果击中坦克,那么执行s.islive=false。我的疑惑是,这里的s.islive和最上面的shot.islive不是一个东西啊,那程序是怎么执行paint方法里面的if判断的呢?
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
关于韩顺平java坦克大战的子弹消除问题
- ¥15
- java
收起
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
当前问题酬金
¥ 15 (您已提供 ¥ 20, 还可追加 ¥ 485)
支付方式
扫码支付
14条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
疯狂小赤兔 2023-09-18 21:00关注获得7.50元问题酬金 引用 皆我百晓生 小程序回复内容作答:
程序执行paint方法里面的if判断是根据每个子弹对象的isLive
属性来确定是否执行画子弹的操作。在hitTank
方法中,当子弹击中坦克时,会将shot
对象的isLive
属性设置为false
,之后在循环中遍历enemyTank
的shots
列表,如果子弹的isLive
属性为true
,则执行画子弹的操作,否则移除该子弹。所以,虽然
s.isLive
和shot.isLive
不是同一个变量,但通过在hitTank
方法中修改s.isLive
的值,可以影响到paint
方法中的if判断,从而决定是否画出子弹。顺便吐槽下两个细节问题:
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用举报 编辑记录微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
小明说Java 2023-09-18 20:58关注应该是的islive,都是从列表中获取的,但是paint方没看到 啊
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
高大人在上 2023-09-18 21:01关注paint应该是每一帧都会执行的,因为子弹过一会儿就会移动一下,子弹被拿除有2个点,1是碰到坦克,1是超出距离或者超出屏幕。s和shot是一个东西,只是你下面这张图的子弹为什么挂在空坦克上,我看不明白。具体得看看这个数据存的方式
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
Leodong. 2023-09-18 21:08关注该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的截图,我们可以看到paint方法中的if判断语句是通过访问名为"shot"的变量来确定是否要画子弹或移除子弹。而在hitTank方法中,当子弹击中坦克时,设置了变量"s.isLive"为false。根据您的描述,"shot.isLive"和"s.isLive"不是同一个变量,这可能是由于在代码其他部分定义了多个相关的变量。为了确定具体情况,建议您检查代码的其他部分,特别是在paint方法之外的地方,查找是否存在名为"shot"的变量。
如果"shot"变量确实在其他地方定义,并且与"s.isLive"变量没有关联,那么在hitTank方法中修改"s.isLive"的值不会直接影响到paint方法中的if判断。在这种情况下,您可能需要进一步修改代码,以确保在子弹击中坦克时正确地设置"shot.isLive"的值,以便在paint方法中进行适当的判断和处理。
请注意,由于我无法直接查看完整的代码,以上只是根据您提供的信息给出的一般建议。如需更准确的帮助,请提供更多相关代码或详细说明。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
数据大魔王 2023-09-19 10:42关注存在两个不同的变量 s.isLive 和 shot.isLive,它们分别用于表示子弹的生存状态。程序中的 paint 方法中的 if 判断使用的是 shot.isLive,而 hitTank 方法中的 s.isLive 用于表示坦克的生存状态。
这两个变量是不同的,因为它们分别用于不同的对象:shot 表示子弹对象,s 表示坦克对象。在游戏中,通常会有多个子弹和多辆坦克,每个子弹和坦克都有自己的生存状态。
在 paint 方法中的 if 判断,用于检查是否要绘制子弹,是基于 shot.isLive 的值来做出的决定。如果 shot.isLive 为 true,则会执行绘制子弹的代码;如果 shot.isLive 为 false,则会将子弹从向量中移除,因此 paint 方法中的 if 与子弹的生存状态相关。
在 hitTank 方法中,s.isLive 用于表示被击中的坦克的生存状态。当坦克被击中时,将 s.isLive 设置为 false,表示该坦克已经被摧毁。这是坦克的状态,与子弹的生存状态是不同的。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
全栈项目讲解 2023-09-19 12:54关注跟踪代码走一遍,要有全局的审视代码各个变量
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
coder_small_bell 2023-09-19 21:37关注从列表获取的把
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
yy64ll826 2023-09-20 17:54关注非零基础自学Java (老师:韩顺平) 第18章 坦克大战【2】 18.2 坦克大战 0.4
可以参考下非零基础自学Java (老师:韩顺平) 第18章 坦克大战【2】 18.2 坦克大战 0.4_Ding Jiaxiong的博客-CSDN博客 非零基础自学Java (老师:韩顺平) 第18章 坦克大战【2】 18.2 坦克大战 0.4https://blog.csdn.net/weixin_44226181/article/details/127003461
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
心梓知识 2023-09-21 01:40关注结合GPT给出回答如下请题主参考
在韩顺平java坦克大战的代码中,可以在 Bullet 类中添加一个hitTank(Tank tank)
方法来检查子弹是否击中坦克,然后在 GameClient 的repaint()
方法中调用该方法来判断子弹是否击中。具体的代码实现如下:
首先在 Bullet 类中添加一个
hitTank()
方法,其中传入的参数为要判断的坦克对象:public boolean hitTank(Tank tank) { if (this.isLive && this.getRect().intersects(tank.getRect()) && tank.isLive()) { this.isLive = false; // 子弹消失 tank.setLive(false); // 坦克消失 return true; } return false; }
然后在 GameClient 的
repaint()
方法中添加以下代码:for (int i = 0; i < bullets.size(); i++) { Bullet b = bullets.get(i); if (!b.isLive()) { bullets.remove(b); } else { b.draw(g); // 画子弹 // 遍历所有坦克,检查子弹是否击中坦克 for (int j = 0; j < tanks.size(); j++) { Tank t = tanks.get(j); if (b.hitTank(t)) { // 判断子弹是否击中坦克 // 如果击中,从 Vector 中移除坦克和子弹 tanks.remove(t); bullets.remove(b); break; } } } }
其中
b.hitTank(t)
调用了 Bullet 类中的hitTank()
方法来检查子弹是否击中坦克,如果击中,则从 Vector 中移除坦克和子弹。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
关注
该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。
其实,这两个都是同一个变量。在韩顺平老师的代码中,子弹的属性和状态是由Shot类来维护的,而在hitTank方法中,传入的参数s就是Shot类的一个实例,s.isLive=false 就是改变了这个实例的属性值,也就是说,通过hitTank方法改变了Shot实例的状态,从而影响了paint方法中对应的画图操作。因此,paint中的if判断仍然可以正常执行。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
代码调试大神 2023-09-25 15:00关注需要进一步修改代码,以确保在子弹击中坦克时正确地设置"shot.isLive"的值
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
Minuw 2023-09-25 17:34关注参考gpt
在韩顺平老师的代码中,
shot
是子弹对象,isLive
是子弹的状态属性。当isLive
为true
时,表示子弹仍然存在,需要绘制;当isLive
为false
时,表示子弹已经击中了坦克或者超出了边界,需要将其从Vector
中移除。在
paint
方法中,通过遍历Vector
中的子弹对象,根据isLive
的状态来决定是否绘制子弹。如果isLive
为true
,则绘制子弹;如果isLive
为false
,则将子弹从Vector
中移除。而在
hitTank
方法中,当子弹击中坦克时,会将isLive
设置为false
,表示子弹已经消失。这样,在下一次paint
方法执行时,就会根据子弹的isLive
状态来判断是否绘制子弹。所以,
s.isLive
和shot.isLive
是同一个东西,都表示子弹的状态属性。当子弹击中坦克时,通过修改isLive
的值,来控制子弹是否绘制和移除。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
会跑的小鹿 2023-09-25 19:36关注通过变量来存储判断子弹的状态
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
GIS工具开发 2023-09-25 21:23关注在子弹击中坦克时,修改变量状态
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
- 2015-11-26 09:54回答 6 已采纳 for(int i=0;i<v.size();i++)//画敌人 { if(v.get(i).islive) drawtank(v.g
- 2023-04-04 17:15回答 2 已采纳 你这里有三个问题: ConnectToServer 类 44行,为啥还要去在输出一次msg,就是这个导致了 invalid header ,注释之后这个异常就没了。ActListener 类 47 行
- 2023-03-28 15:38回答 4 已采纳 如果你刚刚学完javaweb,那么建议先从学习spring5开始。因为spring6是一个相对较新的版本,很多公司和项目还没有迁移到spring6上,因此在实习和工作中,使用spring5的可能性更大
- 2022-05-10 10:17闲言博客的博客 韩顺平坦克大战
- 2022-04-25 23:40回答 2 已采纳 编码格式错了,你目前是GBK,改一下编程常用的就可以了。
- 2021-10-21 23:22回答 1 已采纳 35-37,执行一次index[ i ] =index[ i +1 ]后不会立刻跳出循环,而是继续运行循环运算。也就是说会一直重复将i+1往前挪一位,知道最后一个元素,最后一个元素也就没用了。还有,这
- 2022-06-15 16:10回答 3 已采纳 1.输出一个javac指令检查环境变量是否配置正确。2.环境配置正确,再看一下执行的java文件所在路径是否正确。3.看看Java文件扩展名是否为.java,如果你的系统文件夹选项隐藏了扩展名txt,
- 2022-10-23 12:59心向阳光的天域的博客 TankBigWar,坦克大战,跟着韩顺平老师的30天Java基础课程一点一点自己敲的,完成后很有成就感项目源码放到了码云上,需要的可以自取 坦克大战项目整体展示了设计布局 右侧玩家信息栏,如下图所示: 软件架构说明:...
- 2022-07-20 12:57回答 5 已采纳 就业的话java可能会好找一点,后期也可以转大数据,可以接着看尚硅谷的课程,顺便跟着敲几个项目包装一下自己的简历,Linux也要学一下这样
- 2021-11-29 21:07回答 1 已采纳 f:\temp-author-version 这是你填写的要创建的文件路径,如果想建二级目录的话可以参考 temp.authorF:\text>javadoc -d f:\temp c
- 2022-08-15 08:51回答 4 已采纳 检查一下 是不是数据库名打错了 mhl
- 2022-12-09 11:17cainiaolaoliu的博客 1.首先想到,子弹应该是一个单独的线程,因为发射后就和坦克的移动无关了,自己会一直朝前走。2.子弹程序内部:(1)子弹要朝前走,所以他应该是一个循环一直改变位置的值,应该有发射方向,初始位置,发射速度这三...
- 2015-12-23 10:35回答 4 已采纳 测试了你的代码,很好理解,当你点击取消是,你的选择文件返回的对象是空,所以跑异常了。就是下面这行代码在取消时为true. ``` System.out.println(jfc.getSele
- 2023-02-01 14:06我是小木鱼的博客 坦克大战,所有坦克、砖墙等效果都是用Java自己画的,当然各种图片素材也包含在里面,但没用。
- 2023-02-18 11:26️楠小弟的博客 java基础学习笔记,mysql基础笔记
- 没有解决我的问题, 去提问
问题事件
悬赏问题
- ¥15 vue引入sdk后的回调问题
- ¥15 求一个智能家居控制的代码
- ¥15 ad软件 pcb布线pcb规则约束编辑器where the object matpcb布线pcb规则约束编辑器where the object matchs怎么没有+15v只有no net
- ¥15 虚拟机vmnet8 nat模式可以ping通主机,主机也能ping通虚拟机,但是vmnet8一直未识别怎么解决,其次诊断结果就是默认网关不可用
- ¥20 求各位能用我能理解的话回答超级简单的一些问题
- ¥15 yolov5双目识别输出坐标代码报错
- ¥15 这个代码有什么语法错误
- ¥15 给予STM32按键中断与串口通信
- ¥15 使用QT实现can通信
- ¥15 关于sp验证的一些东西,求告知如何解决,