




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京邮电大学通达学院算法与数据结构设计报告( 2016/ 2017学年 第 二 学期)专 业软件工程嵌入式学 号 姓 名学 号 姓 名学 号 姓 名学 号 姓 名指 导 教 师陈兴国指 导 单 位计算机学院计算机科学与技术系日 期2017-5-26评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性报告书写认真程度内容详实程度验收答辩情况评分等级姓名(组长)姓名(组员1)姓名(组员2)姓名(组员3)简 短 评 语指导教师签名日期2017-5-27备注评分等级有五种:优秀、良好、中等、及格、不及格-俄罗斯方块1、 课题内容实现俄罗斯方块游戏。主要功能为游戏界面显示、上下左右键响应以及当前得分统计。通过该课题全面熟悉数组、字符串等的使用。掌握设计的基本方法及友好界面的设计。课题要求:1、 游戏界面显示:下落方块和方块堆、左右移动、旋转、删除行等特效以及得分。2、 动作选择:上下左右键对应于旋转、加速、左右移动的功能。3、 得分统计判断:判定能否消除行、并统计得分总数等。扩展要求:1、 用户数据管理。2、 算法设计与分析I、俄罗斯方块游戏需要解决的问题包括(1)、随机产生方块并自动下移(2)、用 键变体(3)、用 键和 键左右移动方块,按Q退出,按space暂停II、俄罗斯方块游戏需要设计的功能函数包括(1)、声明俄罗斯方块的结构体(2)、函数原型声明(3)、制作游戏窗口(4)、制作俄罗斯方块(5)、判断是否可动(6) 、随机产生俄罗斯方块类型序号(7) 、判断是否满行并删除满行的俄罗斯方块(8)暂停,继续功能(9)新游戏创建(10)用户的创建,分数用户名的保存,查看分数Tetris类(主要类)该类包含main方法,应为应用程序的主类。该类用来创建游戏的用户界面,事件处理功能和menu餐单,用户信息的存储。整个程序从该类的main方法开始执行。成员变量:String userName;构造方法:Tetris内部类:Members,TetrisblockTetrisblok类:用来设计游戏界面。游戏界面显示在由Tetrisblok类创建的整个用户界面的中(Center)区,游戏的即时分数、方块的效果图及方的预览功能都在整个类里面实现。用来封装俄罗斯小方块。一个方块的属性是由方块1位置即x和y的坐标、颜色决定的。成员变量private int blockType; Timer timer=null; private int turnState; private int x; private int y; private int i = 0; int j = 0; static int score = 0; int flag = 0; int delay=1000; / 定义已经放下的方块x=0-12,y=0-22; int map = new int1424; / 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵 private final int shapes成员方法: public void newblock()public void drawwall()public void newmap()public void newgame()public void turn();public void left(); public void right(); public void down() ; public int blow(int x, int y, int blockType, int turnState); public void delline() ; public int gameover(int x, int y); public void add(int x, int y, int blockType, int turnState); public void paintComponent(Graphics g); public void keyPressed(KeyEvent e); public void keyTyped(KeyEvent e)Members类:用来创建io流,在D盘中查找username.txt文件,如果没有就创建。并且在username和score中间用:隔开,方便以后用split对其进行分割。成员变量private FileWriter fw=null;private BufferedWriter bw=null;private FileReader fr=null;private BufferedReader br=null;Tetris tt=null; boolean vip=true;/如果有usernametxt这个文件的话 就返回true并且允许查看分数 判断是否有用户已经创建了ArrayList al=new ArrayList();成员方法getMembers()saveMembers()getpaint()GetMembers()方法NameScore类:每一个用户的分数和姓名存到一个对象NameScore类。ScorePanel类;这个是用来接收Tetris类中传递过来的储存NameScore对象的ArrayList集合,然后把用迭代器将集合中的每一个对象的username和score取出来然后放到Vector中。然后添加到JTable中三、算法实现算法实现(伪代码)4、 测试数据及结果分析游戏运行 新游戏开始超过边界游戏结束 新游戏 加速减速实现继续功能 实现暂停功能得到成员的姓名和分数经过调试和修改,程序完全实现设计要求,成功模拟了俄罗斯方块的运行过程和游戏效果,只是界面略微简陋,但已从程序层面上实现了游戏,达到了这次实训的要求和目的。程序正常生成方块,根据速度值每隔一定时间自动下落,如有操作按键按下,根据按键实现位移和变形。当方块满一行后,可以消除该行,同时记录分数和等级。五、调试过程中的问题1.刚开始的时候在障碍物的问题上总是出现数组越界错误2.俄罗斯方块的变形问题,不是顺时针变形,原来是方块数组的排序出现错误2.在添加事件的时候点击新游戏分数不刷新,后来在tetris类中的newgame中添加了score=0之后解决了问题4.在实现加速和减速的问题上,一开始speed控制的是在时间间隔不变的情况下,变化方块每次跳动的距离,发现比较麻烦后来改用在每次跳动距离不变的情况下,改变事件发生的间隔,间隔越短就越快,但是只能大于0并且小于15005.在点击暂停按钮之后然后点击新游戏会出现错误6.在内部类调用外部类的变量的时候出现错误;7.在程序刚开始运行的时候,弹出来的Input框,如果我没有进行任何处理的话,会报空指针异常虽然我在下面加上了如果username=null但是并没有运行,后来知道原来在if选项中我的username.equal(“”)|username=null写颠倒过来了导致。8.在实现用户信息管理的时候用的是io流储存,将每次输入的用户名存在username的txt文件下面,如果没有这个文件的话要先创建。9.在对txt文本中的内容进行分割处理的时候,spilt写了但没作用到网上一查,我当时用的是:进行分割,所以split应该写成split(“/:”)而且返回的是一个数组;第一个数temp0,第二个数temp1;10.在实现将用户信息返回到新的jpanel上面的时候,ScorePanel总是得不到从Tetris传过来的值,显示一个异常,根据断点找到是在迭代器中it.next返回的是一个对象,而且最好的实在实例化一个迭代器的时候对其进行泛型。在将迭代器改成泛型之后顺利解决6、 总结15240223 沙伏全:通过课程的设计,从设计到到完成完整的开发过程,同时对所涉及的学科有了更深入的了解。增加了实践经验,为今后其他平台的开发打下了坚实的基础。在设计程序中主要是局限于读课本的知识和概念,但很少自己亲自动手去编写代码,总是眼高手低,当真正的去编写这个俄罗斯游戏的时候就体会到编写代码真的好难,尤其是刚开始的想的时候,根本不知道如何下手。后来通过上网查询和请教一些编程比较好的同学后才有了三个基本的思路,自己又重新翻阅了一下课本,将课本上的知识又重新细致的复习了一遍,最终借助于网络和同学的帮助完成了这个实验。通过这个实验发现自己在编程方面还有很大的欠缺,不过通过这个实验带给我最大的收获,必须要亲自动手多写,多看代码才能真正的做好15240227 魏源杞:在这两个星期里,我们专业的学生在专业老师的带领下进行了程序实习学习。在这之前,我们已经对c语言、java、数据结构。对这些学科有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到有些棘手。在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验自工程中我都尽力理解java编程思想、掌握基础。此次试验收益匪浅。15240225 王鹏焱:之前都是看视频,根据视频上面的思路和步骤来写代码,没有整体的思想。通过这次实验是我第一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全法安全再培训时间课件
- 灵宝农村消防安全培训课件
- 个人临时租车协议书5篇
- 2025-2030工业机器人应用领域市场现状与未来发展潜力分析研究报告
- 2025-2030工业机器人产业链价值分布与投资风险评估报告
- 2025-2030工业废水处理设备市场需求变化与竞争格局研究报告
- 2025-2030工业大数据分析平台行业解决方案与标杆案例研究报告
- 2020-2021年北京市延庆区高一地理下学期期中试卷及答案
- 党支部申请书
- 委托公证申请书
- 2025秋统编版小学道德与法治二年级上册教学设计(附目录)
- 秋分主题班会课件
- 民政政策宣讲课件
- 餐厅餐饮服务员试用期劳动合同范本
- 创伤性气胸护理查房
- DB42T 750-2011 家用燃气燃烧器具安装维修服务质量评价规范
- 肾功能不全与降压药的选择讲课件
- 乡土资源融入农村小学作文教学:以石亭小学为样本的探索与实践
- 氧化蜡行业深度研究分析报告(2024-2030版)
- 2025-2030年中国备件制造行业市场现状供需分析及投资评估规划分析研究报告
- 数字化运营与管理 课件 第1章 数字化运营基础
评论
0/150
提交评论