连连看程序设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 )// 左下

{

相关文档
最新文档