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

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

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

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

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

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<

boxes.length;

i++)

for(intj=0;

j<

boxes[i].length;

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(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