连连看课程设计报告 - 图文 (3)

繁星点点 分享 2020-06-22 下载文档

湖南涉外经济学院信息科学与工程学院

四、设计方案

设计方案是对一个系统进行详细而具体的设计,本系统的设计方案主要分为总体设计和详细设计两部分。总体设计是对整个系统结构化的设计,包括系统的大致框架和各个函数以及类的说明;详细设计是对各个类和函数进行定义和具体实施,以及各种图例的详解。 4.1 总体设计

本课程设计采用的是单机模式,当在规定的时间内消除完全部的小方块则游戏过关,如果在规定的时间内没能消除完所有的小方块则游戏结束,需要重新开始新游戏。游戏规则是模仿普通的连连看游戏,主要是鼠标两次点击的小方块能否消去的问题。前提是点击两个具有相同的图案的小方块,若点击的是同一个小方块或者两个不同的图案的小方块,则不进行处理;在两个相同图案的小方块用三根以内(包括三根)的直线能连在一起,就可以消掉;否则,不进行处理。

游戏过程,如果用户在规定的时间内消掉所有的小方块则提示游戏胜利,会弹出一个“游戏胜利!”的对话框;如果在规定时间内小方块没有消完则提示时间到游戏失败,会弹出一个“游戏失败!”的对话框。考虑到本游戏是单机小游戏,所以充分考虑到它的娱乐性,并没有很复杂的功能。

系统的总体设计是对整个系统的结构化设计,包括系统基本功能的设计、系统流程的设计和各个功能模块的设计等。 4.1.1 系统基本功能

本系统与我们常玩的连连看游戏相比较为简单,只具有连连看游戏的基本功能,逻辑设计方面也只有简单的“开始游戏”、“重列”、图案“种类数”和“重复数”的设定、剩余时间和暂停/重新开始。

开始游戏:初始化游戏区域,随机排列小方块。 重列:对正在进行的游戏中剩余的小方块重新排列。 种类数:本游戏固定图案种类是20种。

重复数:每种图案的重复次数是4次,也就是4对。

剩余时间:计时器,通过显示时间进度的方式对游戏进行倒计时。 暂停/重新开始:暂停正在运行的游戏,游戏暂停后也可以重新开始(继续本局游戏)。

7

湖南涉外经济学院信息科学与工程学院

系统基本功能如图4.1所示

连连看游戏开始游戏重列种类数重复数剩余时间暂停重新开始/ 图4.1 系统基本功能图 图4-1是连连看游戏的系统基本功能图,从图中可以看出系统主要分为六大功能,即开始游戏、重列、种类数、重复数、剩余时间和暂停/重新开始的设置。 4.1.2 系统流程

系统流程是对系统进行大概分析后得出的系统各功能的流动情况以及各个操作之间的关系,上一步操作都与下一步操作有着紧密的联系,即下一步操作都是由上一步操作所决定的。系统流程主要是对系统流程图的分析,系统流程图清晰的地反映出了系统的运行情况和走向。 (1)鼠标事件具体流程图如图4.2所示 开始有一条直线的可通路径否有一个转弯点的可通路径是是否有两个转弯点的可通路径是否结束消掉两张图片 图4.2 鼠标事件具体流程图 8

湖南涉外经济学院信息科学与工程学院

图4.2是鼠标事件的具体流程图,在连连看游戏中,鼠标事件是很重要的一部分,因为基本都是考鼠标去操作的,所以鼠标事件的控制就非常重要了;上图就是鼠标在游戏过程中的具体判断过程,主要是两个相同小方块之间路径的判断,分为一条直线(没有转弯)、两条直线(一个转弯)、三条直线(两个转弯)。 (2)系统详细运行流程如图4.3所示 开始 否是否为同一图片 是是是否在同一位置 否 不能消掉是是否相邻是否在一条横线上 是否否是 消掉是否直线相连 是是否在一条竖线消掉是否相邻否 是是消掉 否否否是否直线相连 是消掉当两图不在一条直线上,则以两图的延长线上去找两个点,使之能够成直线 消掉消掉图4.3 运行流程图 9

湖南涉外经济学院信息科学与工程学院

图4.3是游戏详细的运行流程图,图中清晰地描述了系统的执行过程,即根据不同的事件,游戏状态的转换。过程为:游戏开始,等待事件,发出鼠标事件,根据用户发出的鼠标命令,然后进行各种判断,系统分别作出不同的反应。 4.1.3 主要功能模块

private void Form1_MouseDown(object sender, MouseEventArgs e) //最重要的鼠标事件

private void ProcessCorner(Point p1,Point p2) //此方法做处理画线和消除 private void button1_Click_1(object sender, EventArgs e) //开始游戏按钮 private void button2_Click(object sender, EventArgs e) //重列按钮

private void button3_Click(object sender, EventArgs e) //暂停/重新开始按钮 private void pbtimer_Tick(object sender, EventArgs e) //计时器操作,判断游戏是否失败

public bool IsDirectLink(int x1, int y1, int x2, int y2) //判断两个小方块是否为直连关系,即判断两个小方块之间是否能用一条之间连接(没有转弯)

public bool IndirectLink(int x1, int y1, int x2, int y2) //处理直连以外的情况,即一个转弯和两个转弯的情况 4.2 详细设计

总体设计是对整个系统的结构化和模块化设计,包括各功能模块的设计和各个功能函数的说明。详细设计则是对各个类和功能函数进行具体的定义和实施。下面是对系统中几个较为重要的函数进行描述。

在总体设计中提到过要想消掉两个小方块,可以分为三种情况,下面就是三种情况的详细解释: 4.2.1 规则详解

1、两个相同的小方块相邻,则可以直接消掉。

2、若不相邻的先在第一个小方块的同一行中找一个空方块;1)找到后看第二个小方块横向到这个空方块所在的列是否有小方块;2)没有的话再看第一个小方块到与它同行的那个空方块之间是否有小方块;3)如果还是没有的话,再从与第一个小方块同行的那个空方块竖向到与第二个小方块的同行看是否有其他的小方块。没有的话路经就是通了,则可以将两个小方块消掉。

3、若上述2失败后,再在第一个小方块的同列找一个空方块;1)找到后看第二个小方块竖向到这个空方块所在的行是否有小方块;2)没有的话,再看第一个小方块到与它同列的那个空方块之间是否有小方块;3)如果还是没有的话,再从与第一个小方块同列的那个空方块横向到与第二个小方块同列看是否有其他的小方块。没有的话路经就是通了,则可以将两个小方块消掉。

如果以上三步都失败,说明这两个按钮不可以消掉。 两个小方块能够相连并消掉的所有情况如下所示:

10

湖南涉外经济学院信息科学与工程学院

(1) (2) (3)

(4) (5) (6)

(7) -

(1)两个小方块相邻,可以直接消掉;

(2)两个小方块在同一行上面且不相邻,但中间没有其他方块阻挡; (3)两个小方块在同一行上,但中间有其他图案的小方块阻隔; (4)两个小方块在同一列,但中间有其他图案的小方块阻隔;

(5)两个小方块既不在同一行也不在同一列,用三条直线连接(因为第一个小方块的右边可能有其他小方块阻隔);

(6)两个小方块既不在同一行也不在同一列,用两条直线连接(第一个小方块的某一方正好可以连接到第二个小方块);

(7)两个小方块既不在同一行也不在同一列,用三条直线连接(系统自动检测,连线从第一个小方块的空闲的一面引出) 4.2.2部分程序代码解析

private int picnum = 20; //本局中图片的数量

private int multipic = 4;//一张图片重复出来的次数,一定为偶数

//鼠标事件处理,主要是判断转弯数目和位置,并做相应的消除操作 private void Form1_MouseDown(object sender, MouseEventArgs e) { int curx = e.X / 31; int cury = e.Y/ 34;

if (curx > 18 || cury > 10)

11


连连看课程设计报告 - 图文 (3).doc 将本文的Word文档下载到电脑

下一篇:沈阳农业大学水利水电工程专业专升本《水利施工》综合测试《水利工程施工》题库- 副本

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx