




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ⅰ毕业设计说明书题目:俄罗斯方块产品设计工艺设计方案设计√类型:学生姓名:______________________学号:_______学院:________软件学院___________专业:_____软件开发与项目管理______班级:____________________学校指导教师:_________企业指导教师:________2016年04月29日摘要游戏,既可以指人的一种娱乐活动,也可以指这种活动过程。游戏的道具可以为玩具。在英语,体育比赛(Game)亦是游戏的一种,而体育运动亦是由游戏演变出来。其中俄罗斯方块是个老幼皆宜的小游戏。此次设计在Windows7系统下,以Java为开发语言,在Myeclipse开发平台上进行游戏的设计与实践。通过计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作。然后程序根据这七种方块堆叠成各种不同的模型。关键词:游戏设计;数组;Java;=Ⅱ目录TOC\o"1-3"\h\u14740引言 图形工厂图形障碍物生产图形下落产生障碍物图形工厂图形障碍物生产图形下落产生障碍物图.2视图层游戏面板游戏面板GamePanel方块的显示障碍物的显示图:.3控制层中央控制器中央控制器Controller类图形工厂生产图形显示面板显示图形和障碍物处理按键图2.3.33.详细设计3.1模型层设计3.1.1产生方块通过图形工厂类ShapeFactory的getShape(ShapeListenerlistener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。77654321随机产生一个数随机数O型 I型T型Z型S型J型L型图.2结构在4x4方阵,用数字来表示每个方格的绘制,由此可以组合出多种图形,如图所示:图3.1.2I图表示:{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0} {0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0} {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0} {0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}O图表示:{1,1,0,0,1,1,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,1,0,0,1,1,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}L图表示:{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0}, {1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0}, {0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0}Z图表示:{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0}, {0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0}, {1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0}, {0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0}方块的翻转是通过移动他的数组对图像进行改变。因为已经绘制了整个游戏圈的图形,所以在翻转图形的过程是由数组int[]states=newState[]进行的,其中有的翻转多而有不用翻转。所有有的图形数组多,有的少。3.1.3移动在Cell类中,保存的是图形的移动信息。用row表示行,用col表示列,对方块的的移动就是改变row和col的值。向下:row++(行加1),向左:col--(列减1)向右:col++(列加1)方块是通过按键的事件来移动向下,向左,向右以及快速下降。因为这个游戏是动态的,他是有周期的,所以要用线程来实现。当一个方块出现时就表示一个线程的出现,也就可以对方块进行移动。3.1.4表示边界或有无格子在一个界面中用相应的二维数组表示下面的以前格子信息。如何判断格子的下面是不是底部或者有格子,代码如下:privatebooleancanDownTetromino(){ Cell[]cells=tetromino.getCells(); for(inti=0;i<cells.length;i++){ if(cells[i].getRow()==ROWS-1 ||wall[cells[i].getRow()+1][cells[i].getCol()]!=null){ returnfalse; } } returntrue; }3.1.5方块的翻转变形格子的变化形态是这个游戏的乐趣所在,它有28种形态,让这个游戏变化十足,它的代码如下:protectedvoidup(){ tetromino.retatelRight(); if(!canRatelTetromino()){ tetromino.retatelLeft(); } }3.1.6判断满行及消行如何判断是满行呢?只需要判断这一行没有空白的格子,就表示这一行是满行,上面的哪一行将向下降。代码如下:privatebooleanfullRow(introw){ for(intcol=0;col<COLS;col++){ if(wall[row][col]==null){ returnfalse; } } returntrue; } privatevoiddeleteRow(introw){ for(inti=row-1;i>=0;i--){ System.arraycopy(wall[i],0,wall[i+1],0,10); } for(intcol=0;col<COLS;col++){ wall[0][col]=null; } lines++; score=lines*5; repaint(); }privatevoiddestoryLines(){ for(introw=0;row<ROWS;row++){ if(fullRow(row)){ deleteRow(row); } } }是是否是否否是是否底行判断当前行是否为空判断当前行是否为满判断是否有满行判断移动行方块是否为空当前行向上推动一行将要移动行所有数据移至当前行将当前行的所有数据初始化统计连续几行为满如果有消行,则开启消行类。图3.1.6利用遍历的方法由下往上进行查询,如果没有空白的格子就表示这行是满格,就将这信息传递个destoryLines()这个类,由它对格子进行消除,然后再传递给fdeleteRow(introw)类,将上面的格子降下来,在传递给fullRow(introw)类进行查询是否还有空格,有空格再对方法进行传递。3.2视图层设计3.2.1方块的显示通过静态块中的background()方法来对方块的绘制,代码如下:static{ try{ background=ImageIO.read(Tetris.class.getResource("tetris.png")); J=ImageIO.read(Tetris.class.getResource("J.png")); Z=ImageIO.read(Tetris.class.getResource("Z.png")); S=ImageIO.read(Tetris.class.getResource("S.png")); L=ImageIO.read(Tetris.class.getResource("L.png")); O=ImageIO.read(Tetris.class.getResource("O.png")); I=ImageIO.read(Tetris.class.getResource("I.png")); T=ImageIO.read(Tetris.class.getResource("T.png")); }catch(IOExceptione){ e.printStackTrace(); } }3.3控制层设计控制层是实现图形生成的同时,通过按键来对图形进行处理,也是对方块的控制,方块自动下落和边界以及已经生成的格子的控制,通过控制层能过对俄罗斯方块游戏的事件的处理以及逻辑的分析。4.实现4.1实现效果图按S键进行开始和暂停 对方块进行左移对方块进行右移下一个方块出现消除行数得分方块到顶端后游戏结束4.2程序使用说明按S键开始游戏或暂停游戏控制方块下落位置进行消行处理当产生的新方块不能再下落时,游戏结束按R键重新开始新的一局过程中可以按Q直接退出游戏结论曾几何时,游戏是海洛因的代名词,让人与玩物丧志联系在一起,一度遭到社会反感和家长的抵制。但是,随着互联网的发展,和游戏的好处的发现,游戏的价值开始逐被社会认可,人们开始接受,认识和了解游戏带来的好处。在游戏参与的过程中会遇到一些问题场景,谜题解答,需要克服的难题,训练关卡,使用物具,合作或竞争完成任务,人物对白,文字交互。这些内容或过程能够祖师(激励)参与者全新的投入,探索,体验,具有运用和获取知识,发展人的认知启发人的思维,拓展人的视野,丰富人的心理,提高解决问题的能力等作用。在这次编写俄罗斯方块的游戏中,感受良多,这是一个庞大的任务,而我是一个人完成的,开始的时候有点失措,不知从那下手,但是在网上查找资料后,我才逐渐的掌握了一点脉络,自己也依照有限的编程水平编写了其中几个小游戏,这个俄罗斯方块就是其中一个。游戏的设计与开发本身是一个十分艰难的工作,在网上也查找了一些文档,发现这个过程是坎坷的,你要迎接玩家的喜好,还要对公司盈利,过程当中说不定又会有其他的种种困难,这对我也是帮助挺大的,因为本身爱玩游戏的原因,所以对计算机这方面比较的热爱,但是玩跟编程时两码事,编程的过程是干燥无味的,当程序跑步起来时,你面对的只是一串串冰冷的英文代码,如果遇到了编译的失败后,对自身的热情是有打击的,而且容易生成一种挫败感。但是当你发现在你手中的代码变成了一幅画面,里面的东西能过随着你的指令而进行变化。这个成就感也是十分的好的。在这个俄罗斯方块的编写中呢,我收获良多。有了以下几点:1.对以前知识的巩固,对新的只是有了深刻的了解,也更一步的学习了Java语言。2.在编写过程中出现的错误信息,我进行了调试,查找,删改,总结。这大大的训练了我的动手能力。3.在写游戏的过程中遇到了一些知识上的难点,疑点,我通过大量的查找文档和资料,这能够对我以后工作上的问题提供帮助。回顾这次对俄罗斯方块的制作过程,学习到了以前在课本上没有的新知识,丰富了自己的知识库,提高了自己的实践能力,体验到了游戏程序员的艰辛。这个俄罗斯方块的游戏还不是很完善,比如说没有一些的菜单栏,没有帮助菜单,界面比较简洁,难以突出自己的特色与个性,这也就是我这个游戏的不足之处吧。参考文献[1]谭浩强,张基温,C语言程序设计教程(第3版)[M].高等教育出版社,1991 年08月[2]陈超,C语言常用函数速查手册[M],化学工业出版社,2010年06月[3]韦东山,嵌入式应用开发完全手册[M],人民邮电出版社[4]黄丽琴,丁林松,Qt4图形设计与嵌入式开发[M],人民邮电出版社,2009年 04月[5]成洁,卢紫毅,Linux窗口设计——Qt4精彩实例设计分析[M],清华大学出版 社,2008.11[6]蔡志明,精通Qt4编程(第2版)[M],电子工业出版社,2011年2月[7]郑莉,董江周
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铝合金门窗工程施工安全保护措施
- 大学生信息咨询岗位实习周记范文
- 幼儿园小班下学期节日庆祝活动范文
- 《语文课程标准》对情感教育的指导心得体会
- 金融服务项目管理流程架构
- 高校学术交流会议纪要
- 2025秋季四年级心理健康教育课程整合计划
- 医院建筑外墙防渗漏技术措施
- 2024年长沙市开福区招聘中小学骨干教师笔试真题
- 浙江工业职业技术学院招聘考试真题2024
- 公路养护管理中的安全风险控制措施
- 中国国际大学生创新大赛(2025)职教赛道重点培育项目申报表
- (高清版)DB11∕T2294-2024装配式混凝土结构检测技术标准
- 2024年海南省普通高中学业水平合格性考试历史试题(原卷版+解析版)
- 2025年先进技术并购协议
- ISO9001:2015、ISO22000、HACCP三合一内审检查表2023版
- 检验与临床沟通的主要内容
- 《律政俏佳人》课件
- 2025年度企业内部员工保密协议(新修订)5篇
- 毽球运动在校园文化中的推广计划
- 《我有友情要出租》
评论
0/150
提交评论