连连看程序的设计报告

《连连看程序的设计报告》由会员分享,可在线阅读,更多相关《连连看程序的设计报告(29页珍藏版)》请在文档大全上搜索。
1、计算机应用基础与程序设计三级项目设计报告项目名称:连连看班级:2014级软件工程 8 班学号: 140120010226姓名:郭鹏飞日期:2014年12月31日.说明:报告容可以根据自己的设计实践自行拟定和修改,容尽量翔实,页数不够可以加页, 容过于单薄将影响得分 。建议写报告之前自己上网或在图书馆查阅相关资料进行报告书写方法的自学。一、项目分析项目分析简要说明项目主要用户需求、设计思路及模块划分。1、用户需求分析在当今社会,人们的生活压力越来越大,也没有太多时间去玩大型的游戏,所以需要一些简单的小游戏来缓解大家的工作和学习压力。而连连看是一款简单,容易理解,大多数人都会玩的小游戏,耗费时间也
2、不是太长,所以特意设计此款游戏来满足用户放松心情的需求。2、系统设计思路(1)必须先导入图片,当俩图片一样时,便可以消除;(2)窗体基本的菜单栏必须有;(3)有时间轴控制时间,确定输赢;(4)当时间到时,不能继续游戏;赢了的话,要保存游戏者和判断胜负的时间;(5)最好有历史记录,记录下来用户每一次的得分情况。3、系统模块划分板块一:图片导入。连连看应该有用来点击的图片, 使用户避免因为只有数字而感到无聊。板块二:图片标记。连连看需要点击俩次图片, 所以必须记录第一次点击的图片是哪一个。板块三:图片连线。该过程是整个游戏的核心过程, 是最重要的一个过程,也是耗时最长的一个过程。连线方式主要分为三
3、种方式,即直线连接、一个折点连接、 俩个折点连接。 如果用户前后点击的图片可以通过三种方式中的任意一种连接,并且图片完全一样,则达到消除图片的效果。板块四:判断成功。通过判断图片是否完全消除,判断游戏是否胜利。.板块五:判断失败。如果时间到的话, 用户失败,增加了游戏的竞争性。板块六:重新开始。但用户游戏结束或想要重新开始时, 可以重新开始新的游戏。板块七:游戏暂停。通过游戏暂停,使用户有事时可以暂停游戏,之后可以继续游戏。板块八:游戏难度。满足不同程度的用户的不同需求, 共分为“简单” 、“一般”、“复杂”三个难度,享受不同的挑战难度。板块九:历史记录。将用户玩过的记录保存下来, 同时可以使
4、用户名和游戏时间都保存下来,并且和游戏难度一一对应。板块十:背景音乐。为了使用户在游戏过程中更加享受, 增加背景音乐和消除音乐,并且任何时候可以控制音乐的开始和结束。二、项目设计详细介绍项目各个子模块的设计方法及设计核心技术。1、各个子模块的设计方法板块一:图片导入。图片的导入有很多种方法,在该游戏中我采用了ImageList 的方法。添加一个 ImageList 控件, Name为 ImageList1 ,在其 Image 的属性中添加图片,之后再将图片导入窗口。同时,为了设计简单,我使用了二维 Button 来承载图片,在 i ,j 的循环中添加代码, 具体代码如下:MyButtoni,
5、j.Name = i.ToString();/ 为了判断图片是否相同MyButtoni, j.ImageList = imageList1;MyButtoni, j.ImageIndex = i - 1;板块二:图片标记。首先判断是否已有图片选中, 如果有则判断是否满足条件;如果没有,则该图片被选中,同时做出标记,我的方法是使背景变为红色,所以在导入图片时没有使图片放大。具体代码如下:Button button = (Button )sender;button.BackColor =Color .Red;if(BeforeButton =null ).BeforeButton = button
6、;button =null ;elseif(button = BeforeButton)/ 如果前后选择图片为图一,则取消选择BeforeButton =null ;button.BackColor =this .BackColor;else/判断是否可以消除板块三:图片连线。连线时游戏的核心代码。首先判断直连,如果俩相同的图片中间没有别的图片则满足条件可以消除。此处通过网上查阅资料,用到了返回值。具体代码如下:/ 竖直方向的连线bool Y_line(intY1,intY2, intx)if(Y1 Y2)/ 保证 Y1Y2intt = Y1;Y1 = Y2;Y2 = t;for ( intm
7、 = Y1 + 1; m = Y2; m+)if(m = Y2)break ;if(MyButtonx, m.Visible !=false )returnfalse ;returntrue ;./ 水平方向的连线bool X_line(intX1,intX2,inty)/ 保证 X1 X2)intt = X1; X1 = X2; X2 = t;for ( intm = X1 + 1; m Y2)intt = Y1; Y1 = Y2; Y2 = t;t = X1; X1 = X2; X2 = t;if(Y1 Y2)if(X1 X2)if(MyButtonX1, Y2.Visible =fals
8、e ) / 右下if(X_line(X2, X1, Y2) =true ) / 经过直连后X1 X2大小发生变化if(Y_line(Y1, Y2, X1) =true )z1.X = MyButtonX1, Y2.Left + length / 2;z1.Y = MyButtonX1, Y2.Top + length / 2;returntrue ;.if(MyButtonX2, Y1.Visible =false ) / 左上if(X_line(X2, X1, Y1) =true )if(Y_line(Y1, Y2, X2) =true )z1.X = MyButtonX2, Y1.Left
9、 + length / 2;z1.Y = MyButtonX2, Y1.Top + length / 2;returntrue ;returnfalse ;接着是俩个折点的代码, 首先先通过上下左右四个方向分开论述,其代码如下:/ 二折连右bool right(intX1,intX2,intY1,intY2)for ( intx = X1 + 1; x = 0; x-)if(X_line(X1, x, Y1) =true & MyButtonx, Y1.Visible =false )if(OneCorner(x, Y1, X2, Y2) =true )z1.X = MyButtonx, Y1
10、.Left + length / 2;z1.Y = MyButtonx, Y1.Top + length / 2;z2.X = MyButtonx, Y2.Left + length / 2;z2.Y = MyButtonx, Y2.Top + length / 2;returntrue ;if(X_line(X1, 0, Y1) =true )if(X_line(X2, 0, Y2) =true )z1.X = MyButton0, Y1.Left + length / 2;z1.Y = MyButton0, Y1.Top + length / 2;.z2.X = MyButton0, Y2
11、.Left + length / 2;z2.Y = MyButton0, Y2.Top + length / 2;returntrue ;returnfalse ;/ 二折连上bool up( intX1,intX2,intY1,intY2)for ( inty = Y1 - 1; y = 0; y-)if(Y_line(Y1, y, X1) =true & MyButtonX1, y.Visible =false )if(OneCorner(X1, y, X2, Y2) =true )z1.X = MyButtonX1, y.Left + length / 2;z1.Y = MyButton