俄罗斯方块设计思想.docx
《俄罗斯方块设计思想.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块设计思想.docx(6页珍藏版)》请在冰豆网上搜索。
![俄罗斯方块设计思想.docx](https://file1.bdocx.com/fileroot1/2023-7/8/308e6528-26ef-40ba-b775-17c7dfc3fa27/308e6528-26ef-40ba-b775-17c7dfc3fa271.gif)
俄罗斯方块设计思想
南京邮电大学
通达学院
算法与数据结构设计报告
(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,Tetrisblock
Tetrisblok类:
用来设计游戏界面。
游戏界面显示在由Tetrisblok类创建的整个用户界面的中(Center)区,游戏的即时分数、方块的效果图及方的预览功能都在整个类里面实现。
用来封装俄罗斯小方块。
一个方块的属性是由方块1位置即x和y的坐标、颜色决定的。
成员变量
privateintblockType;
Timertimer=null;
privateintturnState;
privateintx;
privateinty;
privateinti=0;
intj=0;
staticintscore=0;
intflag=0;
intdelay=1000;
开始的时候在障碍物的问题上总是出现数组越界错误
2.俄罗斯方块的变形问题,不是顺时针变形,原来是方块数组的排序出现错误
2.在添加事件的时候点击新游戏分数不刷新,后来在tetris类中的newgame中添加了score=0之后解决了问题
4.在实现加速和减速的问题上,一开始speed控制的是在时间间隔不变的情况下,变化方块每次跳动的距离,发现比较麻烦后来改用在每次跳动距离不变的情况下,改变事件发生的间隔,间隔越短就越快,但是只能大于0并且小于1500
5.在点击暂停按钮之后然后点击新游戏会出现错误
6.在内部类调用外部类的变量的时候出现错误;
7.在程序刚开始运行的时候,弹出来的Input框,如果我没有进行任何处理的话,会报空指针异常虽然我在下面加上了如果username==null但是并没有运行,后来知道原来在if选项中我的(“”)||username==null写颠倒过来了导致。
8.在实现用户信息管理的时候用的是io流储存,将每次输入的用户名存在username的txt文件下面,如果没有这个文件的话要先创建。
9.在对txt文本中的内容进行分割处理的时候,spilt写了但没作用到网上一查,我当时用的是:
进行分割,所以split应该写成split(“实现将用户信息返回到新的jpanel上面的时候,ScorePanel总是得不到从Tetris传过来的值,显示一个异常,根据断点找到是在迭代器中返回的是一个对象,而且最好的实在实例化一个迭代器的时候对其进行泛型。
在将迭代器改成泛型之后顺利解决
六、总结
主要是局限于读课本的知识和概念,但很少自己亲自动手去编写代码,总是眼高手低,当真正的去编写这个俄罗斯游戏的时候就体会到编写代码真的好难,尤其是刚开始的想的时候,根本不知道如何下手。
后来通过上网查询和请教一些编程比较好的同学后才有了三个基本的思路,自己又重新翻阅了一下课本,将课本上的知识又重新细致的复习了一遍,最终借助于网络和同学的帮助完成了这个实验。
通过这个实验发现自己在
编程方面还有很大的欠缺,不过通过这个实验带给我最大的收获,必须要亲自动手多写,多看代码才能真正的做好
c语言、java、数据结构。
对这些学科有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到有些棘手。
在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。
通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。
对于我们这个专业来说学好Java语言是很重要的,所以在实验自工程中我都尽力理解java编程思想、掌握基础。
此次试验收益匪浅。
添加了数据管理功能,和事件的监听事件。
内部类和外部类之前都是在书上看的没有动手写过,晓得了内部类和外部类之间的关系和内部类调用外部变量应该注意的地方。
这次的代码仍有一些问题,程序的扩展性不好。
这次的实验也让我认识到程序之外的一些问题,容易紧张8<。
以后我要注意这个问题。
还有通过这次的实验,让我认识到写程序一定要在自己头脑清晰的时候写。
不然会出现很多低级错误