




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/ 信息和计算科学专业 工程实训报告题目:经典嬉戏—俄罗斯方块班级:信息和计算科学07-2姓名:XX2010年11月21日摘要这是一款小型嬉戏,多出现在手机,MP4等小型数码展品中。好玩且好玩,是人们在休闲消遣时,消遣和打发时间的不错选择。想要玩好它,你就得有敏捷的手指掌控实力,且须要有缜密、敏捷的头脑思维,以为下一步的下落位置做好预判。具体规则,在以下做步骤详解。此款嬉戏老少皆宜,说了这么多还没说这究竟是怎样的一款嬉戏。“俄罗斯方块”,顾名思义,就是不同形态和规格的块状物下落至指定位置。且不能越界,一旦出界即输。此次嬉戏的设计,我只完成了简洁、大致的嬉戏功能块。如要更加完整,也可增加和完善功能,比如添加更炫的背景和颜色,或设置分数计数器,当块合并消去后,你的分数会相应的增加,当你起先这款嬉戏,。你肯定会爱不释手的,那么现在就起先——让我们一起伸开双手,起先我们的手指健身操吧。关键词:嬉戏俄罗斯方块手指Abstract Itisainminiaturegame.AnditusuallyappearsinthedigitalproductlikemobileandMP4andsoon.Itisamusingandinteresting.Peoplealsocanrecreatethemselveswithit.Ifyouwantplayitwell,youmustcommandwithaflexiblefigureandmeticulousbrain.Thenyoucanprepareitwellforthenextstep.Theconcreteruleswillbeintroduceinthefollowarticle.Thiskindgameisadapttotheorderandyoungster.NowIwilltellyouwhatthegameis?Obviously,itmeansthatmanyblockshouldbeuniteanddisappear.Anditcannotoutoftheborderlineandleavetheboard.Soyouwillbeloseifyoudo.HereImadeitonlyapartofthisgame.Ifyouareinterestinthisgame,youcanfinishandmakeitmoreperfectly.NowLet’splayitwithourfigure.Keywords:gameMuscovitesquarefigure目录摘要 IAbstract I目录 I第1章 绪论 11.1选题背景及影响 11.2主要设计内容 21.3章节内容简介 2第2章需求分析 42.1嬉戏的执行原理 42.2基本功能 42.2.1嬉戏规则 42.2.2嬉戏功能实现的步骤 52.2.3涉及学问内容 5第3章功能模块和流程图 63.1功能模块 63.2JAVA部分流程结构图形 7第4章算法功能描述 10结论 13致谢 14参考文献 15附录1设计系统部分源代码 16正文内容正文内容:除了一、二、三、四级标题外,正文文本为宋体小四号字,20磅行距。中文文本中的括号、标点符号为中文半角状态下的括号、标点符号,英文的括号、标点符号为英文半角状态下的括号、标点符号。图、表的题头为黑体五号字、其中的文本为宋体五号字,图、表所在段落为单倍行距。正文页码:阿拉伯数字,宋体小五号字,页面底端居中(默认格式)。绪论一款小嬉戏不仅可以放松心情,也可以激起人们对生活的乐趣,尤其对于像我这样的学生来说,在学习JAVA等程序设计过程中往往会感到枯燥乏味,而一个小嬉戏不仅可以引起我对爱好也能帮助我对编写程序的理解和加深。面对对象技术被称为是程序设计方法学的一场革命,他已经逐步替代了面对过程的程序设计技术,成为计算机应用开发领域的主流技术。面对对象技术比较符合人们视察世界和处理问题的思维模式,而将数据和处理数据的操作封装在一起的机制也符合现代大规模软件开发的要求,并易于实现软件的复用。嬉戏的初步设计,构思。1.1选题背景及影响从上世纪末起先,网络的应用和普及更加广泛,而由于网络和计算机的交融和拓展,渐渐被人们应用于不同领域,其中也应运而生了很多嬉戏。以致发展到目前网络上流行的大型网游。而这些嬉戏的发展都离不开很多小型嬉戏的开发和普及所带来的影响。可以说探讨小嬉戏的编译在对于初学者来说是对程序的一中感性的相识,也能对今后学习程序的开发等带来不小的促进作用,为今后更广袤的软件开发奠定扎实的基础。 1.2主要设计内容本管理系统以Eclipse为主开发工具,Eclipse是一款集成开发软件工具。Eclipse是一款免费的且应用广泛的软件而Eclipse供应的JAVA集成开发工具也相当的丰富,Eclipse从起初作为服务于软件开发的集成平台,逐步演化为可以宿主任何一桌面为中心的应用程序平台。同时采纳SQLServer2000来创建数据库的连接。本嬉戏可满意玩家的基本操作。1.3章节内容简介第1章为绪论,主要介绍嬉戏的选题背景及其影响,以及主要设计内容。变量声明的各值属性见下表:表1各变量的属性值表字段类型长度备注gesInt5正下落的块shiGesInt5落实的块fangAnInt5造新块jiShuQiInt5计数器jianGetext25间隔以上定义了嬉戏中各个指定值在数据库中的类型和字段等。第2章为需求分析,首先介绍俄罗斯方块嬉戏的执行原理和基本功能,其中包括图像的显示,键盘的左右移动,边界值的设置等功能模块的实现。还有所涉及到相关学问内容。并设置其嬉戏规则,输赢主要由手指掌控操作敏捷度确定。最终是功能实现步骤。第3章为功能模块和流程图,画出了嬉戏各个主要功能的实现模块,以及所运用的语句的JAVA流程结构图,包括主要有消行、出界和被挡。最终显示运行胜利后的运行结果图。第4章为算法描述:各个主要功能实现的具体算法介绍。其中附有部分代码,并运用了二维数组和遍历循环的学问。最终在理论上和具体实施上做出可行性分析。完成全部的功能操作后,先进行调试,找出错误并做修改直至没有错误达到最终结果,然后做出总结归纳。第2章需求分析俄罗斯方块是每个人儿时几乎都玩过的嬉戏,还记得小时候常常用父亲的手机玩这一嬉戏。从最初的不了解到后来的高手,想想都让人回味。虽然是那么的简洁,但却是充溢了无穷的乐趣,对我而言是一段美妙的回忆。2.1嬉戏的执行原理俄罗斯方块是一项简洁,易懂的小嬉戏。是通过不同小方块组成的不同形态的自由下落和背景组成的基本页面。并通过手指操作键盘来实现小人的改变。用上键限制方块的360度方向转变,左右键限制方块的左右移动。为满意玩家的更多要求还可以增加方块的不同颜色的改变以及分数等。2.2基本功能嬉戏规则 方块不能出界,即当方块合并叠加后超出了框架的范围,即为出界。嬉戏结束。因此须要敏捷的手指操作实力。规则相对来说还是很简洁的,只要玩几次就能很好的驾驭,并不难。嬉戏功能实现的步骤 1、图像的显示 2、下落的块和落定的实块 3、块的下出界和下被挡4、确定是否下落5、块的合并6、消去整行7、造一个新块8、块的360度方向改变2.2.3涉及学问内容本嬉戏运用了数组的相关学问,还包括循环、选择、依次等语句的应用。数组是JAVA容器类的一种。是用来存储一组固定的,有依次且不重复的数据的。它是学习JAVA最基础的学问点,熟识了数组对今后的JAVA编程会有很大的帮助。同时像for,ifelse,while等语句也是构成本嬉戏的基本语言。其中数组是完成这一嬉戏设计的最基本的学问点,而循环语句的多次运用也是完成设计的一部分。第3章功能模块和流程图3.1功能模块本图主要介绍了俄罗斯模块所须要实现的各个功能。这是嬉戏设计的动身点和考虑的基本要素。图1嬉戏功能模块图图中右侧分支做有书签字样标记的是基本要实现的功能,而用感叹号做标记的是可加可不加的功能。左侧的分支是拓展空间和留意提示等。尤其是对可能出现的错误要考虑清晰。3.2JAVA部分流程结构图形流程结构图形包括对“方块的消行”,“出界”等的描述:被挡:指方块下落过程中,被实块所档,即无法在下落,也变成实块。其他功能的流程结构图亦类似。这里主要画了这两个主要的流程图。具体算法分析见下介绍。以下只列出了“出界”和“消行”两种状况。出界:方块下落后叠加超出框界限。运用ifelse语句,假如每列19行都!=0那么条件假设出界成立,否则不执行。图2消行:指当下落后的块在某一行值都为1,即方块占满整行,则消去这一行。运用:3个for循环遍历嵌套,一个ifelse推断首先推断计数器内书是否为0或1,假如计数器累计达10则从看行-1到0起先循环,再从0到10循环,并把上一行的值给下一行。从而达到消行的目的。图3最终运行界面如下:图4运行图有:分数、级别、各种颜色的块、起先和暂停键组成。再加上一些个人喜爱的插图以增加嬉戏的趣味性。第4章算法功能描述1、首先要显示背景图:更具所供应的已有图片在绘图的任务指定区编写并变现代码如下:Imagetu=(newImageIcon("俄罗斯图片/2/背景-1.png")).getImage();g.drawImage(tu,0,0,null);留意:在选择图像的地址时只需打开图的属性,复制即可。2、显示落块的图:代码实现如下:ImagetuKuai=(newImageIcon("俄罗斯图片/2/"+ges[h][l]+".png")).getImage();g.drawImage(tuKuai,l*30+30,h*30+5,null);变量h,l也包括颜色的随机改变。其中行h、列l值是变量,即更据所给初始值的形态随机显示。变量要加符号"++"。除此之外,还要对图进行循环遍历。3、显示实块也是如此,不同的是将变量改为常量。4、分别定义落块和实块:正在下落的块:即方块自由定时下落,随固定时间随机是不停地下落,这里运用二维数组创建int[][]ges=newint[20][10];不能再动的块:即落在下面固定不再动的块,这里运用二维数组创建int[][]shiGes=newint[20][10];5、初始化设置:即初始的方块图形:ges[0][3]=1;ges[0][4]=1;ges[0][5]=1;ges[1][3]=1;6、被挡须要推断落块是否有下一个实块。假如下一个落块是固定不动的,即落实的块,则落块无法再在下落,和是被当。用双循环遍历forfor语句。以及选择推断:if语句if(ges[h][l]!=0&&shiGes[h+1][l]!=0) { jiaSheXiaBeiDang=true; }7、键盘的实现:键盘上键主要负责方块的360度方向的改变,以更好的和实块合并从而为消行做最好的解决方案。intxl=zl+zh-h;intxh=zh-zl+l;键盘左右键则是负责方块的左右移动。右移同时也包括推断出界的语句:if(ges[h][9]!=0){ jiaSheYouChuJie=true;} else{ }这里玩家还可以将键盘下键设置为加速方块移动的功能键。则这里我没做设计。8、造新块:定时的随机造出3种方案的方块形态。并按定时时间向下落。这3种方案分别为:ges[0][3]=tu;ges[0][4]=tu;ges[0][5]=tu; ges[1][4]=tu;ges[0][3]=tu;ges[0][4]=tu;ges[1][3]=tu;ges[1][4]=tu;ges[0][3]=tu;ges[0][4]=tu;ges[0][5]=tu;ges[0][6]=tu;随机数可用公式:Math.random()这里用:inttu=(int)(Math.random()*11)+1; intfangAn=(int)(Math.random()*3);9、合并指将落块给实块,也变成实块。同样用双循环语句forfor以及推断选择ifelse语句:if(ges[h][l]!=0){ shiGes[h][l]=ges[h][l]; ges[h][l]=0; } else { }以上这些功能的实现均用到了数组等学问,并有都用到了循环遍历以及推断选择,这是嬉戏的8个主要功能的实现,完成了这些功能的算法,那么可以说这个嬉戏基本已经完成。主要的方法基本都已经实现,如要加大功能也可做进一步的完善和改进。最终所要做的工作是调试及运行看是否满意预期的目标。如不行再接着修改和增删,运行胜利并满意需求后形成报告。结论首先,本嬉戏运用Eclipse集成JAVA开发环境,完成其运行的框架和功能。功能主要分为主程序和调用函数。运用了本软件带有的Game生成程序,创建一新的Game主程序,在以此将分析结果转为代码,从而真正实现嬉戏的操作。最终可以调试,修改以最终完成整个嬉戏的设计。此款嬉戏还有其特有的好处:据英国某一科学家测试验证表明,这一嬉戏有助于缓解遇到特大自然灾难的生还者的心理,缘由是当受害者在操作这一嬉戏时,会占用大脑中大部分资源,以使玩家短暂遗忘灾难的苦痛程度。有助其渐渐复原安静状态。是不是觉得很奇妙啊!通过此次课程设计,对我的综合学问有了很大的促进作用,包括数据库理解,JAVA的运用和驾驭。虽然整个报告并不是特别的完备,还有很多须要修改的地方也请老师多多包含,也感谢老师的指导和建议。致谢在工程实训设计阶段,有幸的投到我的导师赵福军、刘忠艳老师门下,起先我的设计生活。在通过这次工程实训,我仔细的并亲自完成了这份报告,通过此次实践操作,的确增加了自身的实践实力和思维实力,虽然没有在学校里全程跟随老师进行上机练习,不过我在校外也同的完成了课程设计,在对基础理论学问驾驭的基础上,更加深了理论实践结合的实力。并能更好的学以致用。在实践的过程中,我们遇到了很多的问题,但都在老师的耐性指导下,最终形成了这份报告,也学会了很多东西。正是在老师的不辞辛苦,我才能取得了显著地进步,在此我想你们致以最真心的感谢,并祝福你们桃李满天下!参考文献1顾自新,王炳同.物流信息系统开发策略探讨[J].物流科技,2006,(1):10-132蒋宝家,郑荣,董绍华,等.可视化仓库管理系统的设计[J].物流科技,2005,(9):178-1803郝刚.ASP.NET服务器控件开发[M].北京:人民邮电出版社,2003:34-364凯西.施瓦尔贝.IT项目管理[M].王金玉译.北京:机械工业出版社,2003:15-185J.Hamilton,T.Nayak.MicrosoftSQLServerFull-TextSearch.IEEEDataEngineeringBulletin,December,20016郑阿奇,刘启芬,顾韵华.SQLServer实训[M].清华高校出版社,20057王勇,张发勇,周顺平.CMM软件配置管理的理论和实践[J].计算机工程和应用,2004,(23):102-108宋坤,李严,王国辉.数据库开发实例解析[M].机械工业出版社,20069马里杰.SQLServer数据库开发经典案例解析.清华高校出版社,2006.1.10王珊,陈红.数据库系统原理教程[M].北京:清华高校出版社,2004.6.附录1设计系统部分源代码importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassELuoSiFangKuaiCS{ //TODO:变量“声明”在此 /** *正在下落的块 */ int[][]ges=newint[20][10]; /** *落实不能再动的块 */ int[][]shiGes=newint[20][10]; intzh=0; intzl=4; 窗口 ck =null; 定时器 ds1 =null; ELuoSiFangKuaiCS() { //TODO:程序初始化在此 ges[0][3]=1;ges[0][4]=1;ges[0][5]=1; ges[1][3]=1; ck=new窗口(); //窗口宽+2*立体边,高+2*立体边+标题栏 ck.setSize(5*2+600,600+2*5+25); //设定窗口可见性setVisibletrue/false ck.setVisible(true); //延时的毫秒 ds1=new定时器(200); } class窗口extendsJFrame { 菜单 cd =null; 面板 mb =null; 窗口监听器 exit =null; 键盘监听器 jp =null; 窗口() { jp=new键盘监听器(); this.addKeyListener(jp); cd=new菜单(); this.setJMenuBar(cd); mb=new面板(); this.add(mb); exit=new窗口监听器(); this.addWindowListener(exit); this.repaint(); } class菜单extendsJMenuBar { JMenu dan; //菜单 JMenuItem xiang1;//菜单项 菜单监听器 cdjtq; 菜单() { dan=newJMenu("嬉戏");//菜单 xiang1=newJMenuItem("开局");//菜单项 this.add(dan); dan.add(xiang1); cdjtq=new菜单监听器(); xiang1.addActionListener(cdjtq); } class菜单监听器implementsActionListener { publicvoidactionPerformed(ActionEvente) { //TODO:菜单事务处理 if(e.getSource()==xiang1) { } } } } class窗口监听器extendsWindowAdapter { publicvoidwindowClosing(WindowEvente) { ds1.xc.stop(); System.exit(0); } } class键盘监听器implementsKeyListener { //TODO:键盘处理,可加入KeyEvent.VK_XXX publicvoidkeyPressed(KeyEvente) { switch(e.getKeyCode()) { booleanjiaSheZuoChuJie=false; for(inth=0;h<20;h++) { if(ges[h][0]!=0) { jiaSheZuoChuJie=true; } else { } } //假设左被拦住 booleanjiaSheZuoDang=false; for(intl=1;l<10;l++) { for(inth=0;h<20;h++) { if(ges[h][l]!=0&&shiGes[h][l-1]!=0) { jiaSheZuoDang=true; } } } if(jiaSheZuoChuJie==false&&jiaSheZuoDang==false) { //左移 for(intl=1;l<10;l++) { for(inth=0;h<20;h++) { ges[h][l-1]=ges[h][l]; ges[h][l]=0; } } zl--; } else { } break; booleanjiaSheYouChuJie=false; for(inth=0;h<20;h++) { if(ges[h][9]!=0) { jiaSheYouChuJie=true; } else { } } if(jiaSheYouChuJie==false) { //右移 for(intl=8;l>=0;l--) { for(inth=0;h<20;h++) { ges[h][l+1]=ges[h][l]; ges[h][l]=0; } } zl++; } else { } break; int[][]ge2s=newint[20][10]; for(inth=0;h<20;h++) { for(intl=0;l<10;l++) { intxl=zl+zh-h; intxh=zh-zl+l; if(ges[h][l]!=0) { ge2s[xh][xl]=ges[h][l]; } } } ges=ge2s; break; break; } repaint(); } publicvoidkeyReleased(KeyEvente) { } publicvoidkeyTyped(KeyEvente) { } } class面板extendsJPanel { 鼠标监听器 sb =null; 面板() { sb=new鼠标监听器(); this.addMouseListener(sb); this.addMouseMotionListener(sb); } class鼠标监听器extendsMouseAdapterimplementsMouseMotionListener { publicvoidmousePressed(MouseEvente) { } publicvoidmouseDragged(MouseEvente) { } publicvoidmouseMoved(MouseEvente) { } publicvoidmouseReleased(MouseEvente) { } publicvoidmouseClicked(MouseEvente)//鼠标单击 { //mxmy鼠标的位置 intmx=e.getX(); intmy=e.getY(); //鼠标左键 BUTTON1、右键BUTTON3 if(e.getButton()==MouseEvent.BUTTON1) { //TODO:鼠标左键单击 } repaint(); } } publicvoidpaint(Graphicsg) { //g.setColor(Color.BLUE); //设定颜色:REDGREENBLUEORANGEWHITEGRAYBLACKPINK //g.drawRect(左,上,宽,高); //矩形 //g.fillRect(左,上,宽,高); //实心矩形 //g.drawOval(左,上,宽,高); //椭圆 //g.fillOval(左,上,宽,高); //实心椭圆 //Imagetu=(newImageIcon(路径)).getImage(); //路径:图片-右键-属性-路径src/ //g.drawImage(tu,x,y,null); //TODO:绘图在此 Imagetu=(newImageIcon("俄罗斯图片/2/背景-1.png")).getImage(); //路径:图片-右键-属性-路径src/ g.drawImage(tu,0,0,null); for(inth=0;h<20;h++) { for(intl=0;l<10;l++) { if(ges[h][l]!=0) { ImagetuKuai=(newImageIcon("俄罗斯图片/2/"+ges[h][l]+".png")).getImage(); //路径:图片-右键-属性-路径src/ g.drawImage(tuKuai,l*30+30,h*30+5,null); } else { } } } for(inth=0;h<20;h++) { for(intl=0;l<10;l++) { if(shiGes[h][l]!=0) { ImagetuKuai=(newImageIcon("俄罗斯图片/2/"+shiGes[h][l]+".png")).getImage(); //路径:图片-右键-属性-路径src/ g.drawImage(tuKuai,l*30+30,h*30+5,null); } else { } } } } } } class定时器implementsRunnable//实现Runnable接口 { Thread xc =null; long jianGe; 定时器(longjianGe) { this.jianGe=jianGe; xc=newThread(this); xc.start(); } publicvoidrun() { while(true) { try { xc.sleep(jianGe); if(this==ds1) { //TODO:定时处理 //能出界吗 //1假设能 booleanjiaSheXiaChuJie=false; //2验证假设 for(intl=0;l<10;l++) { if(ges[19][l]!=0) { jiaSheXiaChuJie=true; } else { } } //假设被拦住 booleanjiaSheXiaBeiDang=false; //验证被拦住
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国多功能无压生产茶炉行业投资前景及策略咨询研究报告
- 2025至2031年中国全棉雪尼尔沙发垫行业投资前景及策略咨询研究报告
- 2025至2031年中国二次电池手动化成机行业投资前景及策略咨询研究报告
- 2025至2030年中国音频放大器数据监测研究报告
- 2025至2030年中国预制型电力电缆终端接头数据监测研究报告
- 2025至2030年中国隔膜压力表数据监测研究报告
- 2025至2030年中国网络电话系统数据监测研究报告
- 2025至2030年中国紫外荧光油墨数据监测研究报告
- 2025至2030年中国竹编工艺篮子数据监测研究报告
- 2025至2030年中国电刨刀片数据监测研究报告
- 2025年度剧本杀剧本版权授权与收益分成合同
- 2025年春季学期学校工作计划及安排表
- 2025年一种板式过滤膜装置项目投资可行性研究分析报告
- 2024新版《药品管理法》培训课件
- 浙江省杭州市2024年中考英语真题(含答案)
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 2024初中数学课程标准测试题(含答案)精华版
- 2024年陕西延长石油集团矿业公司招聘笔试参考题库含答案解析
- 减数分裂过程图
- “太平官”“老爷官”“懒散官”专项治理自查报告
- 汽轮机超速事故及预防
评论
0/150
提交评论