连连看程序设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机应用基础与程序设计》
三级项目设计报告
项目名称:连连看
班级:2014级软件工程8班
学号:140120010226
姓名:郭鹏飞
日期:2014年12月31日
说明:报告内容可以根据自己的设计实践自行拟定和修改,内容尽量翔实,页数不够可以加页,内容过于单薄将影响得分。建议写报告之前自己上网或在图书馆查阅相关资料进行报告
书写方法的自学。
一、项目分析
项目分析简要说明项目主要用户需求、设计思路及模块划分。
1、用户需求分析
在当今社会,人们的生活压力越来越大,也没有太多时间去玩大型的游戏,所以需要一些简单的小游戏来缓解大家的工作和学习压力。而连连看是一款简单,容易理解,大多数人都会玩的小游戏,耗费时间也不是太长,所以特意设计此款游戏来满足用户放松心情的需求。
2、系统设计思路
(1)必须先导入图片,当俩张图片一样时,便可以消除;
(2)窗体基本的菜单栏必须有;
(3)有时间轴控制时间,确定输赢;
(4)当时间到时,不能继续游戏;赢了的话,要保存游戏者姓名和判断胜负的时间;
(5)最好有历史记录,记录下来用户每一次的得分情况。
3、系统模块划分
板块一:图片导入。连连看应该有用来点击的图片,使用户避免因为只有数字而感到无聊。
板块二:图片标记。连连看需要点击俩次图片,所以必须记录第一次点击的图片是哪一个。
板块三:图片连线。该过程是整个游戏的核心过程,是最重要的一个过程,也是耗时最长的一个过程。连线方式主要分为三种方式,即直线连接、一个折点连接、俩个折点连接。如果用户前后点击的图片可以通过三种方式中的任意一种连接,并且图片完全一样,贝U达到消除图片的效果。
板块四:判断成功。通过判断图片是否完全消除,判断游戏是否胜利
板块五:判断失败。如果时间到的话,用户失败,增加了游戏的竞争性。板块六:重新开始。但用户游戏结束或想要重新开始时,可以重新开始新的游戏。
板块七:游戏暂停。通过游戏暂停,使用户有事时可以暂停游戏,之后可以继续游戏。
板块八:游戏难度。满足不同程度的用户的不同需求,共分为“简单”、“一般”、“复杂”三个难度,享受不同的挑战难度。
板块九:历史记录。将用户玩过的记录保存下来,同时可以使用户名和游戏时间都保存下来,并且和游戏难度对应。
板块十:背景音乐。为了使用户在游戏过程中更加享受,增加背景音乐和消除音乐,并且任何时候可以控制音乐的开始和结束。
二、项目设计
详细介绍项目各个子模块的设计方法及设计核心技术。
1、各个子模块的设计方法
板块一:图片导入。图片的导入有很多种方法,在该游戏中我采用了ImageList 的方法。添加一个ImageList控件,Name 为ImageListl,在其Image 的属性中添加图片,之后再将图片导入窗口。同时,为了设计简单,我使用了二维Button来承载图片,在i,j的循环中添加代码,具体代码如下:
MyButton[i, j].Name = i.ToString(); // 为了判断图片是否相同
MyButt on [i, j].Im ageList = imageListl;
MyButton[i, j].lmagelndex = i - 1;
板块二:图片标记。首先判断是否已有图片选中,如果有则判断是否满足条件;如果没有,贝U该图片被选中,同时做出标记,我的方法是使背景变为红色,所以在导入图片时没有使图片放大。具体代码如下:J
Butt on butt on = ( Butt on )se nder;
button.BackColor = Color .Red;
if (BeforeButton == null )
BeforeButt on = butt on;
butt on = null ;
}
else
{
if (butt on == BeforeButt on) //如果前后选择图片为图一张,则取消选
择
{
BeforeButt on = n ull ;
button.BackColor = this .BackColor;
}
else
// 判断是否可以消除
板块三:图片连线。连线时游戏的核心代码。首先判断直连,如果俩张相同的图片中间没有别的图片则满足条件可以消除。此处通过网上查阅资料,用到了返回值。具体代码如下:
//竖直方向的连线
bool Y_line( int Y1, int Y2, int x)
{
if (Y1 > Y2) // 保证Y1 { int t = Y1; Y1 = Y2; Y2 = t; _______ } for ( int m = Y1 + 1; m <= Y2; m++) { if (m == Y2) break; if (MyButton[x, m].Visible != false ) { 1 return false ; } return true ; //水平方向的连线 bool X_line( int X1, int X2, int y) { // 保证X1 if (X1 > X2) { int t = X1; X1 = X2; X2 = t; } for ( int m = X1 + 1; m <= X2; m++) { if (m == X2) break; if (MyButton[m, y].Visible != false ) return false ; } return true ; } 然后是一个折点,需要判断被选中的俩个图片的相对位置,此处直接应用了直连的部分代码: bool OneCorner( int X1, int Y1, int X2, int Y2) { if (Y1 > Y2) { int t = Y1; Y1 = Y2; Y2 = t; t = X1; X1 = X2; X2 = t; } if (Y1 < Y2) { if (X1 < X2) { if (MyButton[X1, Y2].Visible == false )// 左下 {