韩顺平java坦克大战思路分析
又见明月清风
珍惜眼前人。
展开
-
防止敌人坦克重叠思路[java坦克大战]
第一种: 当我方坦克方向向上(宽40,高60),敌人坦克方向向上或向下时。第二种: 当我方坦克方向向上(宽40,高60),敌人坦克方向向左或向右时。第四种:当我方坦克方向向右(宽60,高40),敌人坦克方向向左或向右时。第五种:当我方坦克方向向下(宽40,高60),敌人坦克方向向上或向下时。第六种:当我方坦克方向向下(宽40,高60),敌人坦克方向向左或向右时。第七种:当我方坦克方向向左(宽60,高40),敌人坦克方向向上或向下时。第八种:当我方坦克方向向左(宽60,高40),敌人坦克方向向左或向右时。原创 2023-11-28 22:35:32 · 173 阅读 · 0 评论 -
当敌人的坦克击中我方坦克时,我方坦克消失,并出现爆炸效果[java坦克大战]
1.编写方法,判断敌人坦克是否击中我的坦克。循环敌人每辆坦克的每颗子弹传进判断子弹是否击中坦克方法,这里接收坦克的类型为我方坦克和敌人坦克的父类Tank.4.画我方坦克的时候,先判断我的坦克是否为空并且我的坦克的isLive是否为真。3.将我是否击中敌人坦克也封装到方法里,在run方法直接调用这个方法。2.在面板run方法调用这个方法。原创 2023-11-28 22:30:35 · 85 阅读 · 0 评论 -
敌方移动发射[java坦克大战]
1.首先要确保判断如果敌人坦克存活并且敌人子弹集合等于0了,就根据坦克方向创建一颗子弹,放入到shots集合,并启动。(逻辑:发射子弹后,敌人坦克向前移动一段距离后转向,敌人坦克仍然存活并且刚发射的子弹消亡了就再创建一颗子弹打出。换句话说就是子弹消亡了,坦克还存活的话就会发射子弹并且向前移动一段距离,绝不会发射子弹完立即转向)2.让敌人坦克多打几颗子弹,就在准备创建敌人子弹时先判断敌人子弹集合元素个数是否小于某个数。原创 2023-11-28 22:29:56 · 64 阅读 · 0 评论 -
连续发射多颗子弹时后面的子弹代码失效思路[java坦克大战]
写完这个方法后直接再面板类的run方法里调用即可。原因就是用的是单颗子弹去判断是否击中坦克。原创 2023-11-28 22:29:26 · 53 阅读 · 0 评论 -
坦克发射多颗子弹思路[java坦克大战]
问题原因:在Hero类中,只有一个属性Shot shot = null;即只有一颗子弹。按下J键创建一颗新的子弹,那么原先的子弹就变成一个垃圾。,绘制的时候也绘制的是新的子弹。原创 2023-11-28 22:28:32 · 172 阅读 · 0 评论 -
控制我方的坦克和敌人的坦克在规定的范围移动思路[java坦克大战]
1.要由坦克的左上角的坐标来判断是否在规定范围内,所以需要根据四个方向的情况来进行判断。当敌人坦克向右移动时,当坦克的x + 60坐标小于1000时就可以继续移动,否则不能。当敌人坦克向下移动时,当坦克的y + 60坐标小于750时就可以继续移动,否则不能。当敌人坦克向上移动时,当坦克的y坐标大于0时就可以继续移动,否则不能。当敌人坦克向左移动时,当坦克的x坐标大于0时就可以继续移动,否则不能。3.我方坦克如何在范围内移动同理。原创 2023-11-28 22:11:38 · 126 阅读 · 0 评论 -
敌人坦克自由移动思路[java坦克大战]
2.在run方法里先 根据坦克方向每隔50ms来向前移动一段距离,再随机生成0-3改变敌人坦克方向,最后坦克被击中时退出线程(写并发程序,一定要考虑清楚该线程什么时候结束),原因是坦克移动的距离太短了,移动了一点就退出了switch休眠50ms后随机方向,然后再移动一点再变方向。3.创建敌人坦克对象时,启动线程,创建一个敌人坦克对象并设置好初始方向后立马启动坦克线程。解决办法:坦克随机方向后,循环移动多次,每次移动后休眠50ms。6.启动程序后,发现敌人坦克疯狂转向。1.将敌人坦克类做成一个线程。原创 2023-11-28 22:11:06 · 181 阅读 · 0 评论 -
坦克爆炸效果思路[java坦克大战]
7.取出炸弹后根据当前炸弹bomb对象的life值去画出对应的图片,画一张图片调用一次减少炸弹生命值的方法。如果bomb的life为0后就从炸弹集合删除。2.在面板定义集合用于存放炸弹图片。因为图片出现爆炸效果是在面板,(即爆炸不属于敌人坦克也不属于我们坦克,属于面板)当子弹击中坦克时,创建炸弹对象(根据坦克的位置,不能根据子弹的位置),加入到炸弹集合。3.在面板定义定义三张炸弹图片,用于显示爆炸效果。4.在面板的构造器初始化图片对象,即加载三张图片。6.如果集合中有对象,就要去画,有多少取多少。原创 2023-11-28 22:10:35 · 117 阅读 · 0 评论 -
击中敌人坦克时敌人坦克消失思路[java坦克大战]
坦克被击中的情况就是子弹的x,y进入了坦克的x,y,即子弹的x,y坐标在坦克的x,y坐标范围内表示坦克被子弹击中。坦克的上与下,左与右方向x,y坐标范围分别一样,所以可以将坦克被击中的情况细分为两种:1.坦克上、下方向时,子弹的x坐标大于坦克左上角的x坐标小于坦克左上角的x坐标加40并且子弹的y坐标大于坦克左上角的y坐标小于坦克左上角的y坐标加60,即坦克x原创 2023-11-28 22:10:03 · 85 阅读 · 0 评论 -
敌方坦克发射思路[java坦克大战]
1.在敌人坦克类,创建Vector用于保存Shot对象2.当每创建一个敌人坦克对象,就给该敌人坦克对象初始化一个Shot对象(注意子弹初始位置以及必须在设置完敌人坦克初始方向),将该对象加入Vector后,立即启动shot发射子弹。3.遍历画出敌人坦克的时候,内循环画出当前敌人坦克的所有子弹。绘制敌人坦克需要先从敌人坦克的集合中取出敌人坦克对象再绘制,绘制敌人坦克子弹先取出当下坦克对象的所有子弹对象再绘制,绘制完后,外循环取出下一个敌人坦克并绘制,然后再次绘制完毕该坦克的所有子弹。。。原创 2023-11-28 22:08:53 · 60 阅读 · 0 评论 -
我方坦克子弹发射思路[java坦克大战]
就应该在创建MyPanel的地方(HspTankGame03的构造器中)启动MyPanel这个线程,调用run方法不停的绘制面板(因为创建MyPanel了就可以直接将对象引用放进new Thread(mp),从而可以调用start方法启动MyPanel线程)创建子弹的位置是和自己坦克的炮口位置及方向有关系,所以在方法里switch判断当前的坦克方向,将此时我的坦克的炮口位置以及坦克的方向传入shot对象的参数,创建shot对象。此时画板并未显示子弹是因为还未绘制子弹,接下来绘制子弹。原创 2023-11-27 17:19:38 · 99 阅读 · 0 评论