曾令思 余婷 席一
摘 要 随着计算机时代的到来,游戏受到人们越来越多的青睐。以单机游戏为背景,探讨了射击类游戏的诸多设计要点,包括体系结构,系统安全等。本游戏是一款休闲益智的射击游戏。在JAVA的基础上,极大的优化了代码,减少了代码冗余,而且易于查看游戏的运行界面。
关键词 射击游戏 代码实现 JAVA游戏系统
中图分类号:TP311.52 文献标识码:A
1系统架构
系统构架主要有两方面组成,一个是开始界面,另一个是主函数。开始界面主要功能是实现跳转,在开始界面中也应当具有背景,音乐等。在主函数中,主要调用我方子弹,桃心,我方灭火器,敌方蜜蜂,背景类,音乐类等功能模块。
(1)在用户点击开始界面的“PLAY”按钮后,可自动跳转到主游戏界面。这是通过ActionListener实现监听键盘动作的。在GameButton中主要是通过如下方式监听键盘点击的:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand( ).equals("btn")){
close_MainWindows( );
new GameButtonStart( ).showGame( );
return;
(2)实现方在窗体显示方法中添加关闭监听:
this.addWindowListener(new closeWindow()); this.setVisible(true);
再在窗体显示方法外建立关闭窗口方法:
public void close_MainWindows( ) {
this.setVisible(false);}
(3)在游戏中可调用音乐类,实现播放音乐的功能。其主要实现方法是在类外部定义一个Music类,新建一个有音乐的music文件夹,再在主类中调用Music类。
2游戏设计中需要解决的主要问题分析
(1)背景图层的循环显示和闪烁。由于背景图层只有一张图片,若想让游戏有移动的真实感,则应当让图片一直不停的移动。以图片为参照物,就会感觉蜜蜂,灭火器的移动更加逼真。另外,图片初始时会 出现闪烁问题,这时应当调用update()方法消除闪烁。
(2)蜜蜂和灭火器的碰撞。这时,可在我方灭火器的子弹类中,和蜜蜂类中获取蜜蜂的矩形:
//获取蜜蜂的矩形
public Rectangle getRectangle(){
return new Rectangle(planeBulletX, planeBulletY, planeBulletWidth, planeBulletHeight);}
3关键技术
(1)背景的实现:滚动背景主要通过move()来实现。在主程序调用BackGround类中的draMe(Graphics)时,就会自动的调用move()函数,实现屏幕的滚动播放。
(2)内存的优:很多程序由于没有采用正确的方法分配和使用内存,不仅占用内存较多,而且运行效率不高。
4游戏的实现
本游戏的开发是在Microsoft Windows 2007操作系统下,使用JAVA语言开发的。
(1)开始界面的实现:用户进入游戏系统后,首先出现的是开始界。在开始界面中,用户点击“PLAY”按钮,在侦听到点击了“PLAY”按钮后,跳转到游戏进行界面。
(2)滚动屏幕的实现:在游戏界面中,会出现背景图片。BackGround的实例化bg的初始化是在GameStart中,并且把GameStart的当前值传给bg对象,以便于在程序退出时,能够用主类调用它的退出方法closeWindow。在BackGround类中,设置一个bgwidth 和一个bgHeight分别设置背景图片的宽和高。再设置一个bgY1 和一个bgY2 用来控制图片的移动。在BackGround中,写一个movie()方法,随着时间的改变而改变。这时,就会出现滚动的屏幕。
(3)主程序的实现:当玩家按下W,A,S,D分别对应的上,左,下,右时,函数Plane类中的move()方法的变量y,x加5或减5。相对应的,灭火器的位置会向上,左,下,右飞行一定距离。当键盘松开时,灭火器会停止不动。在moie()方法中,会调用方法location()。
public void location() {
if (bU && !bD && !bL && !bR) {
planeDir = Direction.U;
}
if (!bU && bD && !bL && !bR) {
planeDir = Direction.D;
}
if (!bU && !bD && bL && !bR) {
planeDir = Direction.L;
}
if (!bU && !bD && !bL && bR) {
planeDir = Direction.R;
}
if (!bU && !bD && !bL && !bR) {
planeDir = Direction.STOP;
参考文献
[1] Bruce Eckel,陈昊鹏.Java编程思想[M].北京:机械工业出版社,2002.
[2] Adam Drozdex,数据结构与算法(Java语言版)[M].北京:机械工业出版社,2003.
[3] Curtis D.Java,RM I and Corba[M].white paper of Object Management Group,1996.