基于Java的射击游戏的开发与设计

2014-04-29 00:44:03曾令思余婷席一
电脑迷 2014年15期

曾令思 余婷 席一

摘 要 随着计算机时代的到来,游戏受到人们越来越多的青睐。以单机游戏为背景,探讨了射击类游戏的诸多设计要点,包括体系结构,系统安全等。本游戏是一款休闲益智的射击游戏。在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.