ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:198.64KB ,
资源ID:8927402      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8927402.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块单人版游戏.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、俄罗斯方块单人版游戏 Java程序设计 课程设计报告课 题: 俄罗斯方块单人版游戏 姓 名: 曹夏平 学 号: 201117010127 同组姓名: 肖立 、邹娟 专业班级: 计科11101班 指导教师: 刘国清 设计时间: 2013/6/23 评阅意见:评定成绩: 指导老师签名: 年 月 日一、课程设计目的1) 运用Java实现小游戏的开发2) 了解Java开发项目的流程3) 掌握规划,设计,开发,测试的能力二、课程设计题目描述和要求1) 题目: 单人版俄罗斯方块2) 题目描述:俄罗斯方块 是基于JAVA-J2SE平台开发的一款JAVA小游戏。3) 题目要求:熟悉java的编程环境J2SDK

2、,掌握Application 和Applet的程序结构,并能熟练编写和调试两类程序。熟练使用各种常用类库。理解JDK的事件处理机制,掌握java.awt 、javax.swing,javax.swing.event中的GUI标准组件的用法,学会合理运用布局策略、综合运用各种界面元素,编程构造满足应用需要的图形工作界面。三、课程设计报告内容3.1设计方案的论证:本游戏是根据流行的俄罗斯方块的样式改变而成的,但屏蔽了音乐,背景图片等功能,因为无法掌握深奥的算法。因此玩法比较单一。但是优点是开发周期较短。本游戏的设计采用MVC模式(Model -View -Controller),即把本游戏的输入、

3、处理、输出流程按照Model、View、Controller的方式进行分离,这样本游戏的设计被分成三个层模型层、视图层、控制层。MVC模型图如下所示:3.3各个功能模块图设计具体模块划分算法:1,主面板设计,主面板为container其面积为300*400 ,其下添加子面板canvas,controlPanel,并采用BorderLayout的布局方式(如图片1)2Canvas面板中包含20行12列的小方块,用于显示游戏内容(如图片2)3controlPanel面板中包含tipPanel, InfoPanel, buttonPanel子面板,分别为图形界面面板,信息面板,按钮面板(如图片3)图

4、片34.图形显示面板设计为BorderLayout布局样式.其中添加tipPanel面板居中(以显示下一个俄罗斯方块样式),标签居上的样式(图片4)图片4信息面板设计为4行1列式的GridLayout网格状布局,并且添加当前等级,显示当前等级文本域,当前分数,显示当前分数文本域(图片5)图片5按钮面板设计为3行1列式的GridLayout网格状布局 ,并且添加开始, 暂停,停止三个按钮(图片6)图片65.Bar栏中添加3个菜单按钮,分别为gameMenu(游戏菜单),windowStyleMenu(窗口样式),informationMenu(信息菜单)6.游戏菜单里有新游戏,退出两个选项卡,窗

5、口样式菜单里有windows,motif,mentel这3种样式选项卡,信息菜单里面有作者,帮助两个选项卡流程图:1) 视图层功能模块图设计:2) 控制层功能模块图设计:3.4详细设计3.4.1模型层设计1) 图形的产生通过图形工厂类ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产

6、品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。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个方向的方块,在不同旋转角度显示不同方

7、向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。本游戏是用一个三维数组int shapes = new int;作为存储方块的数据结构来保存方块的28种状态的。代码如下:public final static int STYLES = / 共28种状态 0x0f00, 0x4444, 0x0f00, 0x4444 , / 长条形的4种状态 0x04e0, 0x0464, 0x00e4, 0x04c4 , / T 0x4620, 0x6c00, 0x4620, 0x6c00 , / 反Z 0x2640, 0xc600, 0x2640, 0xc600 , / Z 0x6

8、220, 0x1700, 0x2230, 0x0740 , / 7 0x6440, 0x0e20, 0x44c0, 0x8e00 , / 反7 0x0660, 0x0660, 0x0660, 0x0660 , / 方块 ; private GameCanvas canvas;/该方块所在的画布 private ErsBox boxes = new ErsBoxBOXES_ROWSBOXES_COLS;/ 16个方格 private int style = 0, y = 0, x = 0, level = 0; private boolean pausing = false, moving =

9、true; / 构造方法,产生一个特定的块。 /*param style 方块的样式,对应STYLES的28个值中的一个 * param y 起始位置,左上角在canvas中的坐标行 * param x 起始位置,左上角在canvas中的坐标列 * param level游戏等级,控制块的下落速度 * param canvas画布,即游戏窗口。 */ public ErsBlock(int style, int y, int x, int level, GameCanvas canvas) this.style = style; this.y = y; this.x = x; this.lev

10、el = level; this.canvas = canvas; int key = 0x8000; for( int i = 0; i boxes.length; i+ ) for( int j = 0; j = 1; display(); 以下这段代码是3个子模块的代码,通过实例化按钮,标签,文本域,图形面板等,用add方法进行添加等,具体解释在代码中有体现 public ControlPanel(final ErsBlockGame game) / 整个控制面板有三个子面板,摆放在1列, 每行的间距是4 setLayout(new GridLayout(3, 1, 0, 4); thi

11、s.game = game; / 预提示面板的两个构件及边界 plTip.add(new JLabel(下一个方块), BorderLayout.NORTH); plTip.add(plTipBlock); plTip.setBorder(border); / 游戏信息显示面板的两个标签和两个文本域及边界 plInfo.add(new JLabel(难度级别); plInfo.add(tfLevel); plInfo.add(new JLabel(得分); plInfo.add(tfScore); plInfo.setBorder(border); /两个文本域都是不可编辑的,只用于显示信息!

12、 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图73.4.2.2游戏设置控制菜单,如图

13、8图83.4.2.3游戏开始、继续、暂停、退出控制菜单,如图9图93.4.2.4 游戏窗口风格控制界面图103.4.2.5 游戏帮助界面图113.5系统测试3.5.2右侧快捷按钮测试1.点击“开始” 按钮效果:游戏开始结果:正常2.点击“暂停” 按钮效果:游戏暂停结果:正常3.点击“停止” 按钮效果:游戏重置结果:正常4.点击“增加难度”按钮效果:难度系数增加结果:正常5.点击“降低难度”按钮效果:难度系数降低结果:正常3.5.3界面菜单选项的功能测试1.“游戏”菜单的测试(1)点击“游戏” “新游戏”效果:游戏正常开始结果:正常(2)点击“游戏” “设置方块颜色”效果:可以自定义设置各种颜色

14、结果:正常 (3)点击“游戏” “设置背景颜色”效果:可以自定义设置各种颜色结果:正常(4)点击“增加难度”按钮效果:难度系数增加结果:正常(5)点击“降低难度”按钮效果:难度系数降低结果:正常 2.“控制”菜单测试(1)点击“开始” 按钮效果:游戏开始结果:正常(2)点击“暂停” 按钮效果:游戏暂停结果:正常(3)点击“继续”按钮效果:游戏继续结果:正常(4)点击“停止” 按钮效果:游戏重置结果:正常3. “窗口风格”菜单测试(1)点击“窗口样式” “Windows”效果:切换为Wingdows模式结果:正常(2)点击“窗口样式” “Motif”效果:切换为Motif样式结果:正常(3) 点

15、击“窗口样式” “Mentel”效果:切换为Mentel模式结果:正常4.“帮助”菜单测试点击“帮助”效果:显示作者及版本结果:正常 3.5.4 按键事件的功能测试 (1) 方块移动测试 游戏过程中,点击“左、右、下”方向键输出:方块正常移动,不会移出边界结果:正常 (2) 方块反转测试 游戏过程中,点击向上方向键输出:方块无边界和障碍物阻挡的情况下可反转结果:正常3.5.5方块堆砌与消行测试(1) 当方块下落到最底面或与障碍物接触时输出:方块成功堆砌在底部结果:正常 (2) 当出现满行现象时输出:所有满行被消除,方块依次下移结果:正常3.5.6 测试结果分析 经过测试,本游戏实现了基本的功能

16、,不过整体功能还不是很强大,作为开发的第一个版本,游戏在很多方面还需要进一步完善。四、结论1、问题: 写程序的时候,由于对有些Java知识不懂,所以有些想要表达的意思无法用Java代码准确的表达出来,老是出错或者无法写下去; 一开始,自己准备的参考资料不足,无法在遇到问题时有效的利用参考资料解决,遇到不懂的问题和不会用程序语言表达的问题时,只能留在那里,无法解决,结果问题最后越积越多,导致我无法再把程序写下去; 一开始,对于老师布置的作业题目,我不太懂,无法进行有效而且清晰的分析,自然也无法继续下去写程序了,耽误了较多的时间; 对于要写流程图,一开始我并不懂是什么意思,也不知道怎么去写。2、解

17、决方法: 对于那些不懂的Java知识和不会写的程序,我通过向同学寻求帮助和利用参考资料书,最终都解决了; 对于自己参考资料不足的缺点,我在下课后,去了图书馆借阅有关方面的Java参考资料书,并且向同学借阅了他们所拥有的资料书,然后又利用自己的电脑上网查找了一些有关方面的参考知识,终于在最后解决了资料不足的缺点; 对于不懂的题目,我也通过向多个同学进行询问,最终弄懂了老师布置的题目所要求的内容; 至于流程图,在我向同学询问过,并且上网进行了一番查找和咨询后,也总算弄懂了流程图的含义,并努力写了出来。五、结束语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环

18、节,是对学生实际工作能力的具体训练和考察过程. 回顾起课程设计,至今我仍感慨颇多,的确,在这一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过课程设计之后,把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的指导下,终于迎刃而解。在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢六、参考书目:1 美克罗夫特著,彭晖译. Java游戏高级编程. 清华大学出版社.2005.2 李尊朝,苏军. Java语言课程设计.中国铁道出版社.2007

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

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