小游戏雷电总结

最近两天仿雷电写了一个小游戏,实现了基本的上下左右移动和发射子弹功能。现在在这里介绍一下做这个游戏的几个技术要点:
1.多线程
2.键盘监听器
3.双缓冲

多线程:线程是一个程序内的小模块,java中常把一个线程写成一个类,多线程顾名思义就是多个线程了。多线程是这个游戏很重要的一个方法,因为雷电中有各种飞机,各种飞机又有它们不同的子弹,这就要求我得为这些不同的飞机和子弹设立线程,在它们各自的线程中实现它们各自的方法,比如玩家的飞机线程中就得有绘制玩家飞机的方法,这样在启动这个线程时能看到屏幕上有一架属于玩家的飞机。这些线程之间往往会有数据的相互调用,比如玩家飞机的子弹有没有打中敌机,就得调用敌机线程中的数据,判断敌机当前的位置区域是否和子弹的相交了,但是由于敌机的不断出现和消失,它们对应的线程也是不断调用和终止,这样判断起来就比较混乱了,我们通常采用添加一个监听线程的方法,即在所有线程之前设置一个线程专门用来监听,把需要用到的线程之中的数据先保存起来,再在监听线程之中集中处理,比如玩家的子弹位置和敌机的位置我们都可以用队列保存起来,在监听线程中对两个队列分别遍历,判断它们的位置区域是否交集,再进一步处理。


键盘监听器:雷电游戏中玩家是通过键盘来控制飞机的,所有有必要用到一个键盘监听器,通过键盘事件的触发来对飞机进行控制,键盘监听器的使用跟鼠标监听器差不了多少,先把监听器加到一个组件上,再根据所按下的键
调用设定的方法。但是键盘监听器有一个注意点,那就是关于焦点的设置,组件的焦点默认都是true,如果你想要监听的组件前面还有组件的话,那你就得把前面的组件的焦点设为false,不然前面的组件就会挡住监听器对后面组件的监听。


双缓冲:双缓冲是解决屏幕不断闪烁的一种方法,屏幕闪烁的原因就是不断遮盖引起的,做雷电时我采用了不断刷新作为一个游戏区域的JPanel方法来显现飞机的移动效果,即在很短的时间内重绘JPanel,紧接着把所有飞机和子弹的位置从队列中读出来,绘制。这样就出现了一个问题,那就是重绘JPanel的时间很短,飞机和子弹刚刚被绘制出来就被另一张重绘出来的JPanel遮盖住了,给我们视觉的效果就是不断的闪烁。而双缓冲就是从原理上解决了这个问题,双缓冲的基本思路就是先在内存中创建一个与游戏界面一样大的不可见的界面,在这个界面中把要绘制的飞机和子弹画出来,再一次性的将这张界显现出来,这样就不存在JPanel遮盖飞机的问题了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值