俄罗斯方块设计思想

南京邮电大学通达学院算法与数据结构设计报告(2016/2017学年第二学期)专业软件工程嵌入式学号姓名学号姓名学号姓名学号姓名指导教师陈兴国指导单位计算机学院计算机科学与技术系日期2017-5-26评分细则项分评优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性报告书写认真程度内容详实程度验收答辩情况评分等级姓名(组长)姓名(组员1)姓名(组员2)姓名(组员3)简短评语指导教师签名日期2017-5-27备注分评等级有五种:优秀、良好、中等、及格、不及格俄罗斯方块一、课题内容实现俄罗斯方块游戏。主要功能为游戏界面显示、上下左右键响应以及当前得分统计。通过该课题全面熟悉数组、字符串等的使用。掌握设计的基本方法及友好界面的设计。课题要求:1、游戏界面显示:下落方块和方块堆、左右移动、旋转、删除行等特效以及得分。2、动作选择:上下左右键对应于旋转、加速、左右移动的功能。3、得分统计判断:判定能否消除行、并统计得分总数等。扩展要求:1、用户数据管理。二、算法设计与分析I、俄罗斯方块游戏需要解决的问题包括(1)、随机产生方块并自动下移(2)、用键变体(3)、用键和键左右移动方块,按Q退出,按space暂停II、俄罗斯方块游戏需要设计的功能函数包括(1)、声明俄罗斯方块的结构体(2)、函数原型声明(3)、制作游戏窗口(4)、制作俄罗斯方块(5)、判断是否可动(6)、随机产生俄罗斯方块类型序号(7)、判断是否满行并删除满行的俄罗斯方块(8)暂停,继续功能(9)新游戏创建(10)用户的创建,分数用户名的保存,查看分数Tetris类(主要类)该类包含main方法,应为应用程序的主类。该类用来创建游戏的用户界面,事件处理功能和menu餐单,用户信息的存储。整个程序从该类的main方法开始执行。成员变量:StringuserName;构造方法:Tetris内部类:Members,TetrisblockTetrisblok类:用来设计游戏界面。游戏界面显示在由Tetrisblok类创建的整个用户界面的中(Center)区,游戏的即时分数、方块的效果图及方的预览功能都在整个类里面实现。用来封装俄罗斯小方块。一个方块的属性是由方块1位置即x和y的坐标、颜色决定的。成员变量privateintblockType;Timertimer=null;privateintturnState;privateintx;privateinty;privateinti=0;intj=0;staticintscore=0;intflag=0;intdelay=1000;//定义已经放下的方块x=0-12,y=0-22;int[][]map=newint[14][24];//方块的形状第一组代表方块类型有S、Z、L、J、I、O、T7种第二组代表旋转几次第三四组为方块矩阵privatefinalintshapes[][][]成员方法:publicvoidnewblock()publicvoiddrawwall()publicvoidnewmap()publicvoidnewgame()publicvoidturn();publicvoidleft();publicvoidright();publicvoiddown();publicintblow(intx,inty,intblockType,intturnState);publicvoiddelline();publicintgameover(intx,inty);publicvoidadd(intx,inty,intblockType,intturnState);publicvoidpaintComponent(Graphicsg);publicvoidkeyPressed(KeyEvente);publicvoidkeyTyped(KeyEvente)Members类:用来创建io流,在D盘中查找username.txt文件,如果没有就创建。并且在username和score中间用:隔开,方便以后用split对其进行分割。成员变量privateFileWriterfw=null;privateBufferedWriterbw=null;privateFileReaderfr=null;privateBufferedReaderbr=null;Tetristt=null;booleanvip=true;//如果有usernametxt这个文件的话就返回true并且允许查看分数判断是否有用户已经创建了ArrayList<NameScore>al=newArrayList<NameScore>();成员方法getMembers()saveMembers()getpaint()GetMembers()方法NameScore类:每一个用户的分数和姓名存到一个对象NameScore类。ScorePanel类;这个是用来接收Tetris类中传递过来的储存NameScore对象的ArrayList集合,然后把用迭代器将集合中的每一个对象的username和score取出来然后放到Vector中。然后添加到JTable中三、算法实现算法实现(伪代码)四、测试数据及结果分析游戏运行新游戏开始超过边界游戏结束新游戏加速减速实现继续功能实现暂停功能得到成...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?