基于java的吃豆子小游戏开发-毕设论文 联系客服

发布时间 : 星期日 文章基于java的吃豆子小游戏开发-毕设论文更新完毕开始阅读

常州大学本科生毕业设计(论文)

if(direction == 2 && xPos < 0) xPos = 420;

if(direction == 3 && xPos > 420) xPos = 0;

Fruit = new Rectangle(xPos - 6, yPos - 6, 13, 13); int a = (xPos - 10)/21; int b = (xPos - 10)!; if(b < 6) b = 0; if(b > 16) b = 21;

if(b < 17 && b > 5) b = 11;

xVPos = a*21 + b + 10; int c = (yPos - 10)/21; int d = (yPos - 10)!; if(d < 6) d = 0; if(d > 16) d = 21;

if(d < 17 && d > 5) d = 11;

yVPos = c*21 + d + 10;

}

public void draw(Graphics g){

double y = yPos + + 3*(Math.sin(6*appearTime)); g.setColor (new Color (254, 184, 4)); g.fillOval(xPos - 5, (int)(y - 5), 11, 11); g.setColor (new Color (28, 232, 4)); g.fillRect(xPos - 5, (int)(y - 5), 3, 3);

g.fillRect(xPos - 7, (int)(y - 7), 3, 3);//水果的绘制和出现时间的设计第 32 页 共41页

32

常州大学本科生毕业设计(论文)

}

6.2.7 HTML文件引用模块设计

Pac-man.html文件是引用HTML文件,其代码如下:

6.3音乐播放和墙体图片设计 6.3.1音乐播放设计

音频文件的播放涉及到IO[20]操作,不管是何种系统,对于IO操作,都是比较慢的,如果当程序运行到需要播放音效时,再从文件中取得音频数据,然后播放,很可能会造成一种“卡”的感觉,影响用户体验。基于此,经过反复论证,本游戏决定采用以剪辑的方式来播放音频文件。

Java语言中的剪辑Clip,是一种在播放之前就提前加载于内存中的特殊的音频数据流,当需要用时,只需直接从内存中调出即可,省去了IO读取所需的大量时间,而且剪辑播放完毕后,仍旧存储在内存中,对于游戏的背景音乐及音效这类需要反复多次播放的音频,这种方式是非常有用的。

单单采用剪辑还是不够的,音频文件的播放,应当另外开启线程来控制,这样既可以更方便地控制音频的播放、暂停等操作,也不会程序执行其它的操作。

①音效播放

在游戏开始、暂停,方块落下及消行时添加相应的音效既可以提醒用户发生某种变化,又能增强程序的表现效果。音效,相对来说是比较小的音频文件,对于音效,可选取wav格式的音频文件,不但音频质量好,在系统支持、存储性方面也占有优势。

根据多线程及剪辑的思想,首先在程序初始化时应该把音效载入内存,游戏开始后开启一个线程,当满足音效播放的条件时,即播放音效,音效播放完毕后,应当将相应的音频文件的剪辑位置重新置为开始处。

②背景音乐播放

同音效的播放,背景音乐的播放也应当采用剪辑的形式,以方便音乐的循环多次播放,同样,背景音乐播放可能是贯穿于整个游戏过程,背景音乐的播放必须采用单独的线程控

第 33 页 共41页

33

常州大学本科生毕业设计(论文)

制,以不影响程序执行其它操作。

因为背景音乐采用单独线程播放,这里面会出现一个问题,当用户选择暂停背景音乐播放时,背景音乐播放线程是进入wait状态还是以另一种方式实现暂停?如果背景音乐进入wait状态,则当用户取消暂停播放时,必须再创建一个线程去唤醒它,新建一个线程只是控制背景音乐播放,不免浪费资源,而且也增加程序编写难度。

考虑到背景音乐极可能在玩家的整个游戏过程中都处在播放状态,当暂停时,玩家也随时会取消暂停,故而在游戏结束之前,本程序会将背景音乐播放线程一直处在执行状态,如果玩家暂停音乐播放,则让线程转去处理检测玩家是否取消暂停,当检测到暂停取消后,继续播放音乐。 6.3.2游戏地图设计

游戏地图的绘制是用一个二维数组来存放地图信息,本设计使用6个不同的数,他们分别代表了地图中的各类元素,通过一个双循环来判断出在屏幕的哪些位置上应该绘制哪些元素,为了使游戏界面简约朴素,视觉舒适,本设计中使用更加立体的砖块墙体,配合黑色的背景色,看起来非常好看。

根据游戏设计,需要考虑到本游戏嵌入了吃豆者越界自动纠正功能,而吃豆者越界,实际上就是游戏地图数组越界。当发生翻转时,吃豆者可能移动至游戏地图外,在这种情况下,就发生了游戏地图数组越界,Java异常处理系统会抛出,为避免这种情况的发生,游戏地图数组应当适当增大,故本游戏将地图数组长度和宽度各扩大了三个单位。本游戏的墙体图片是根据对于接收端接收到的数据包,可以先从数据包中提取出图像,然后将图像画到游戏画布中。 6.4游戏界面截图

图6-6游戏开发类图 第 34 页 共41页

34

常州大学本科生毕业设计(论文)

图6-7 游戏开始界面

图6-8 游戏运行界面

图6-8 游戏结束界面

第 35 页 共41页

35