连连看_java课程设计报告
《连连看》
项目设计报告
专 业: 软件工程
班 级: 07级2班
姓 名:
二00九 年 七 月 二十一 日
目 录
1.项目设计目的、意义………………………………………… 3
2.项目设计概况………………………………………………… 3
3.设计方案及内容………………………………………………4
4.结论………………………………………………………… 7
5.小组成员分工………………………………………………… 7
(要求:给出一级目录,宋体加粗,四号字,1.5倍行距。)
(报告正文部分):
(要求:正文部分一律用小四号字,宋体,1.5倍行距。一级大标题靠左,加粗。二级大标题靠左,不加粗。)
项目设计目的、意义
综合运用所学Java以及面向对象的知识,设计出实用性,可操作性的连连看游戏程序。通过设计此项目,巩固这两年来学的知识,提高面向对象的编程能力,锻炼了逻辑思维能力,提高动手实验能力,也提高了团队合作项目开发的能力。这些项目设计带来的一些经验为将来我们的实际工作打下一定的基础。
二、项目设计概况
1、项目设计前的准备。主要包括:首先,确定项目的主题方案。看看别人写的游戏程序。我们是参考了QQ游戏的连连看,以它为模板来写这个程序的。QQ的连连看是网络版的,由于人力有限,我们就去掉了网络功能,做成单机版的游戏。然后,分析游戏规则确定大致的游戏算法。最后确定程序所需要的模块,大致分为三个主要的模块,游戏显示 ,游戏控制 ,游戏核心算法。其他模块在开发设计的过程中可以再添加。
2、编写代码实现游戏的算法。首先设计游戏界面,找要使用的图片。然后编写其中的算法,算法包括将游戏地图转化为数组来描述,初始化游戏地图,对数组中两个元素是否可以消除的判断,两个可消除的元素以何种方式连接,自动寻找匹配的点等等。
3、将界面和算法结合起来,并为界面添加功能。如开始游戏,刷新,演示等等。
4、测试,完善一些功能,美化界面。
5、本项目中使用数组实现核心的算法,使用线程在同一时间做更多的事情 使用文件来保存用户的配置信息 setPanel,showPanel,toolPanel和gamePanel(另一个类)。其中设置块setPanel用的是FlowLayout,里面有btnAbout,和cboLevel。btnAbout是描述该项目的设计者。cboLevel设置的各个等级,用户可以根据喜好选择等级来游戏。showPanel里有显示用户所用时间,历史记录,所剩余块数等信息。toolPanel里的布局方式是FlowLayout。包括开始刷新,提示,演示等功能。这个类继承了Observer类。这样,当一个对象的状态发生变化时,能够自动通知其他关联对象,调用update()函数自动刷新对象状态。更好地实现了面向对象的操作。在这个函数中,还对每个功能键的按钮CommandName 属性赋一个值。
Show包里的gamePanel实现了在面板里绘制已初始化的连连看游戏的图片,以及显示当消去图片的动画效果。其中,matrixToRect()函数是将得到的数组坐标转换为子图块。这样在算法的实现上比较方便。在显示消去图片的路径效果时,使用了线程来实现。当observer发现ArrayList状态变化,即为点击了图片这个操作,将所得到的object对象obj(即点击图片所得到的在数组picture中的坐标)保存在Point集合points中。这样集合points中保存的就是点击图片得到(在未消去图片前)的坐标(包括拐点,即空白点)集合。由这些坐标集合可利用matrixToRect()函数在新建的集合shapes中加入起始矩阵和终止矩阵,以及要消去这两个矩阵所经过的路径。为了能实现动画效果,在第一个for循环中加了Thread.sleep(10);让线程暂停一会。并在每点一次图片,产生鼠标事件后,调用refresh()函数。Refresh()函数就是在每隔一秒后刷新gamePanel。这样就实现了消去图片时的动画效果。
Show包里的ImageLoader主要是实现将外部图片转化为程序中能使用的图片。
2、 model模块里的Model类实现的设置地图的大小,图片块的个数。初始化游戏界面的地图,判断两个图片可以消除的条件,消除两个图片,两个可消除的图片以何种方式连接,以及主面板上的功能等的算法。
在初始化地图时,根据不同的等级产生不同个数的随机图片来填充地图。并且数组中具有相同值的元素(即