当前位置:   article > 正文

java坦克大战思路总结

java坦克大战思路总结

第一步,设置游戏的窗体,

     创建一个窗体类,继承Frame,(也可以不继承使用JFrame),然后在该类的构造函数中,使用Frame中的方法,设置窗体的标题,大小,位置,可显,可改变窗体大小,(注意:可以使用Toolkit方法获取屏幕的高宽;setVisible方法的位置);然后添加事件监听,在WindowListener中重写,以实现窗口关闭,(还有一个代码简单的,不过忘了咋写的了),然后创建一个类,做主线程,在main方法里将该窗体类实例化,然后就实现了一个游戏窗体。

第二步,将人物画上去

先在窗体类中重写paint方法,这个重写的paint方法会自动调用,在重写paint方法里,可以把人物画出来,关于图片的添加,在该项目里新建一个包用了存图片,图片的使用,我使用的是一个工具类,别人写好的,我所知道的有一个方法把图片对象化的,别的不太了解。

第三步,人物的移动

创建人物类,定义初始位置,和方向,速度,写一个构造器,这样就可以实例化的时候赋初始值了,写一个画笔的成员方法,在从窗体类中的重写paint方法里传过来画笔,这样这个成员方法也相当于重写paint方法了,再写移动方法,通过判断方法来控制移动,然后在paint方法中调用,现在剩下的问题就是获取方向了,在窗体类中添加按键监听,通过监听获取四个布尔值,四个布尔值对应着四个方向,(四个方向可以用枚举来表示),在写一个成员方法将四个布尔值转变为方向,在人物类中写一个含参数的方法,用来获取方向。

第四步,填加静止状态

在人物类中定义一个布尔值,然后在paint方法中判断就行了

第五步,闪烁问题

解决方法大概有两种

加一个双缓冲或者加一个画布

第六步,子弹发射,连发,消除

这个问题,要找到触发的源头,我像按空格发射子弹,那么源头就是监听空格,我在人物类中写一个开火方法,在监听中调用,而开火方法是用来获取此时人物的位置信息的,这样我们获取了子弹的初始坐标和方向,创建一个子弹类,定义的信息和人物类差不多,创建一个子弹容器,在这里写一个方法获取子弹的初始的位置和方向,这样就可以实现按一次空格,就会往子弹容器里添加一个子弹了,关于内存溢出,在子弹类中写一个方法,通过判断位置来去除这颗子弹,(容器中的子弹用getset方法来获取),然后将该方法在paint方法中调用,这子弹的数量我并没有限制。

第七步,怪物的产生和移动

这里我是开了一个线程,创建一个怪物类,new一个线程,写在该类的构造方法里,这样只要被实例化,线程就开启了,怪物的位置,移动我是通过获取四个随机数来随机生成的,怪物的数量多少和子弹相似,用容器的存储,这时候就要明确怪物的数量了,其他的和人物类相似。

第八步,碰撞,死亡

碰撞我是在窗体类中的重写paint方法中判断的,判断方法我所了解的有两种,判断两个矩形是否相交和判断两图片中心的距离是否超出,既然碰撞了,就会伤害,这时定义怪物和人物的血量和攻击,发生碰撞时判断其血量状态,进行扣血,怪物死亡了就去除这个对象,增加游戏积分,人物死亡就游戏结束

第九步,死亡界面,开始界面添加

在窗体类中定义一个开始的布尔值,在窗体类中添加鼠标监听,监听中改变布尔值,在重写paint方法类判断,该画那个图片。在窗体类中定义死亡的布尔值,人物死亡的时候改变布尔值,这和开始界面相似

第十,暂停界面

这时候,就要说一下刷新了,在主线程里,使用repaint方法,才会让窗体不断的刷新,画面才会动起来,暂停就可以提供一个布尔值来判断是否使用repaint方法。

大概就这些吧,很多都是思路,算是一个小总结,如有不足之处,请指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/326317
推荐阅读
相关标签
  

闽ICP备14008679号