俄罗斯方块单人版游戏.docx

上传人:b****8 文档编号:8927402 上传时间:2023-02-02 格式:DOCX 页数:18 大小:198.64KB
下载 相关 举报
俄罗斯方块单人版游戏.docx_第1页
第1页 / 共18页
俄罗斯方块单人版游戏.docx_第2页
第2页 / 共18页
俄罗斯方块单人版游戏.docx_第3页
第3页 / 共18页
俄罗斯方块单人版游戏.docx_第4页
第4页 / 共18页
俄罗斯方块单人版游戏.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

俄罗斯方块单人版游戏.docx

《俄罗斯方块单人版游戏.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块单人版游戏.docx(18页珍藏版)》请在冰豆网上搜索。

俄罗斯方块单人版游戏.docx

俄罗斯方块单人版游戏

Java程序设计课程设计报告

 

课题:

俄罗斯方块单人版游戏

姓名:

曹夏平

学号:

201117010127

同组姓名:

肖立、邹娟

专业班级:

计科11101班

指导教师:

刘国清

设计时间:

2013/6/23

评阅意见:

 

评定成绩:

指导老师签名:

年月日

 

 

一、课程设计目的

1)运用Java实现小游戏的开发

2)了解Java开发项目的流程

3)掌握规划,设计,开发,测试的能力

二、课程设计题目描述和要求

1)题目:

单人版俄罗斯方块

2)题目描述:

俄罗斯方块是基于JAVA-J2SE平台开发的一款JAVA小游戏。

3)题目要求:

熟悉java的编程环境J2SDK,掌握Application和Applet的程序结构,并能熟练编写和调试两类程序。

熟练使用各种常用类库。

理解JDK的事件处理机制,掌握java.awt、javax.swing,javax.swing.event中的GUI标准组件的用法,学会合理运用布局策略、综合运用各种界面元素,编程构造满足应用需要的图形工作界面。

三、课程设计报告内容

3.1设计方案的论证:

本游戏是根据流行的俄罗斯方块的样式改变而成的,但屏蔽了音乐,背景图片等功能,因为无法掌握深奥的算法。

因此玩法比较单一。

但是优点是开发周期较短。

本游戏的设计采用MVC模式(Model-View-Controller),即把本游戏的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样本游戏的设计被分成三个层—模型层、视图层、控制层。

MVC模型图如下所示:

3.3各个功能模块图设计

具体模块划分算法:

1,主面板设计,主面板为container其面积为300*400,其下添加子面板canvas,controlPanel,并采用BorderLayout的布局方式(如图片1)

2.Canvas面板中包含20行12列的小方块,用于显示游戏内容(如图片2)

3.controlPanel面板中包含tipPanel,InfoPanel,buttonPanel子面板,分别为图形界面面板,信息面板,按钮面板(如图片3)

图片3

4.图形显示面板设计为BorderLayout布局样式.其中添加tipPanel面板居中(以显示下一个俄罗斯方块样式),标签居上的样式(图片4)

图片4

信息面板设计为4行1列式的GridLayout网格状布局,并且添加当前等级,显示当前等级文本域,当前分数,显示当前分数文本域(图片5)

图片5

按钮面板设计为3行1列式的GridLayout网格状布局,并且添加开始,暂停,停止三个按钮(图片6)

图片6

5.Bar栏中添加3个菜单按钮,分别为gameMenu(游戏菜单),windowStyleMenu(窗口样式),informationMenu(信息菜单)

6.游戏菜单里有新游戏,退出两个选项卡,窗口样式菜单里有windows,motif,mentel这3种样式选项卡,信息菜单里面有作者,帮助两个选项卡

 

流程图:

1)视图层功能模块图设计:

2)控制层功能模块图设计:

 

3.4详细设计

3.4.1模型层设计

1)图形的产生

通过图形工厂类ShapeFactory的getShape(ShapeListenerlistener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:

你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。

2)图形数据结购

定义一个4x4方阵,共16个小格。

用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示:

其中图一表示为{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}

其中图二表示为{0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0}

其中图三表示为{0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}

其中图四表示为{0,0,0,0,0,1,0,1,0,1,1,0,0,0,1,0}

方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。

所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。

本游戏是用一个三维数组int[][][]shapes=newint[][][];作为存储方块的数据结构来保存方块的28种状态的。

代码如下:

publicfinalstaticint[][]STYLES=//共28种状态

{

{0x0f00,0x4444,0x0f00,0x4444},//长条形的4种状态

{0x04e0,0x0464,0x00e4,0x04c4},//‘T’

{0x4620,0x6c00,0x4620,0x6c00},//反‘Z’

{0x2640,0xc600,0x2640,0xc600},//‘Z’

{0x6220,0x1700,0x2230,0x0740},//'7'

{0x6440,0x0e20,0x44c0,0x8e00},//反‘7’

{0x0660,0x0660,0x0660,0x0660},//方块

};

privateGameCanvascanvas;//该方块所在的画布

privateErsBox[][]boxes=newErsBox[BOXES_ROWS][BOXES_COLS];//16个方格

privateintstyle=0,y=0,x=0,level=0;

privatebooleanpausing=false,moving=true;

//构造方法,产生一个特定的块。

/**@paramstyle方块的样式,对应STYLES的28个值中的一个

*@paramy起始位置,左上角在canvas中的坐标行

*@paramx起始位置,左上角在canvas中的坐标列

*@paramlevel游戏等级,控制块的下落速度

*@paramcanvas画布,即游戏窗口。

*/

publicErsBlock(intstyle,inty,intx,intlevel,GameCanvascanvas)

{

this.style=style;

this.y=y;

this.x=x;

this.level=level;

this.canvas=canvas;

intkey=0x8000;

for(inti=0;i

for(intj=0;j

{

booleanisColor=((style&key)!

=0);

boxes[i][j]=newErsBox(isColor);

key>>=1;

}

display();

}

以下这段代码是3个子模块的代码,通过实例化按钮,标签,文本域,图形面板等,用add方法进行添加等,具体解释在代码中有体现

publicControlPanel(finalErsBlockGamegame)

{

//整个控制面板有三个子面板,摆放在1列,每行的间距是4

setLayout(newGridLayout(3,1,0,4));

this.game=game;

//预提示面板的两个构件及边界

plTip.add(newJLabel("下一个方块"),BorderLayout.NORTH);

plTip.add(plTipBlock);

plTip.setBorder(border);

//游戏信息显示面板的两个标签和两个文本域及边界

plInfo.add(newJLabel("难度级别"));

plInfo.add(tfLevel);

plInfo.add(newJLabel("得分"));

plInfo.add(tfScore);

plInfo.setBorder(border);

//两个文本域都是不可编辑的,只用于显示信息!

!

!

tfLevel.setEditable(false);

tfScore.setEditable(false);

//按钮面板的5个按钮及边界

plButton.add(btPlay);

plButton.add(btPause);

plButton.add(btStop);

plButton.add(btTurnLevelUp);

plButton.add(btTurnLevelDown);

//将三个合成面板加入到主面板中

add(plTip);

add(plInfo);

add(plButton);

 

3.4.2游戏演示

3.4.2.1游戏界面演示,如7

图7

3.4.2.2游戏设置控制菜单,如图8

图8

3.4.2.3游戏开始、继续、暂停、退出控制菜单,如图9

图9

3.4.2.4游戏窗口风格控制界面

图10

3.4.2.5游戏帮助界面

图11

3.5系统测试

3.5.2右侧快捷按钮测试

1.点击“开始”按钮

效果:

游戏开始

结果:

正常

2.点击“暂停”按钮

效果:

游戏暂停

结果:

正常

3.点击“停止”按钮

效果:

游戏重置

结果:

正常

4.点击“增加难度”按钮

效果:

难度系数增加

结果:

正常

5.点击“降低难度”按钮

效果:

难度系数降低

结果:

正常

3.5.3界面菜单选项的功能测试

1.“游戏”菜单的测试

(1)点击“游戏”“新游戏”

效果:

游戏正常开始

结果:

正常

(2)点击“游戏”“设置方块颜色”

效果:

可以自定义设置各种颜色

结果:

正常

(3)点击“游戏”“设置背景颜色”

效果:

可以自定义设置各种颜色

结果:

正常

(4)点击“增加难度”按钮

效果:

难度系数增加

结果:

正常

(5)点击“降低难度”按钮

效果:

难度系数降低

结果:

正常

2.“控制”菜单测试

(1)点击“开始”按钮

效果:

游戏开始

结果:

正常

(2)点击“暂停”按钮

效果:

游戏暂停

结果:

正常

(3)点击“继续”按钮

效果:

游戏继续

结果:

正常

(4)点击“停止”按钮

效果:

游戏重置

结果:

正常

3.“窗口风格”菜单测试

(1)点击“窗口样式”“Windows”

效果:

切换为Wingdows模式

结果:

正常

(2)点击“窗口样式”“Motif”

效果:

切换为Motif样式

结果:

正常

(3)点击“窗口样式”“Mentel”

效果:

切换为Mentel模式

结果:

正常

4.“帮助”菜单测试

点击“帮助”

效果:

显示作者及版本

结果:

正常

3.5.4按键事件的功能测试

(1)方块移动测试

游戏过程中,点击“左、右、下”方向键

输出:

方块正常移动,不会移出边界

结果:

正常

(2)方块反转测试

游戏过程中,点击向上方向键

输出:

方块无边界和障碍物阻挡的情况下可反转

结果:

正常

3.5.5方块堆砌与消行测试

(1)当方块下落到最底面或与障碍物接触时

输出:

方块成功堆砌在底部

结果:

正常

(2)当出现满行现象时

输出:

所有满行被消除,方块依次下移

结果:

正常

3.5.6测试结果分析

经过测试,本游戏实现了基本的功能,不过整体功能还不是很强大,作为开发的第一个版本,游戏在很多方面还需要进一步完善。

 

四、结论

1、问题:

写程序的时候,由于对有些Java知识不懂,所以有些想要表达的意思无法用Java代码准确的表达出来,老是出错或者无法写下去;

一开始,自己准备的参考资料不足,无法在遇到问题时有效的利用参考资料解决,遇到不懂的问题和不会用程序语言表达的问题时,只能留在那里,无法解决,结果问题最后越积越多,导致我无法再把程序写下去;

一开始,对于老师布置的作业题目,我不太懂,无法进行有效而且清晰的分析,自然也无法继续下去写程序了,耽误了较多的时间;

对于要写流程图,一开始我并不懂是什么意思,也不知道怎么去写。

2、解决方法:

对于那些不懂的Java知识和不会写的程序,我通过向同学寻求帮助和利用参考资料书,最终都解决了;

对于自己参考资料不足的缺点,我在下课后,去了图书馆借阅有关方面的Java参考资料书,并且向同学借阅了他们所拥有的资料书,然后又利用自己的电脑上网查找了一些有关方面的参考知识,终于在最后解决了资料不足的缺点;

对于不懂的题目,我也通过向多个同学进行询问,最终弄懂了老师布置的题目所要求的内容;

至于流程图,在我向同学询问过,并且上网进行了一番查找和咨询后,也总算弄懂了流程图的含义,并努力写了出来。

五、结束语

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.

回顾起课程设计,至今我仍感慨颇多,的确,在这一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

通过课程设计之后,把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于迎刃而解。

在此我表示感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢

六、参考书目:

[1][美]克罗夫特著,彭晖译.Java游戏高级编程.清华大学出版社.2005.

[2]李尊朝,苏军.Java语言课程设计.中国铁道出版社.2007

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1