ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:23.17KB ,
资源ID:4812644      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4812644.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(连连看程序设计报告DOC.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

连连看程序设计报告DOC.docx

1、连连看程序设计报告DOC连连看程序设计报告(DOC)计算机应用基础与程序设计三级项目设计报告项目名称:连连看班 级: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的循环中添加代码,具体代码如下: MyB

5、uttoni, j.Name = i.ToString();/为了判断图片是否相同 MyButtoni, j.ImageList = imageList1; MyButtoni, j.ImageIndex = i - 1;板块二:图片标记。首先判断是否已有图片选中,如果有则判断是否满足条件;如果没有,则该图片被选中,同时做出标记,我的方法是使背景变为红色,所以在导入图片时没有使图片放大。具体代码如下: Button button = (Button)sender; button.BackColor = Color.Red; if (BeforeButton = null) BeforeButt

6、on = button; button = null; else if (button = BeforeButton)/如果前后选择图片为图一张,则取消选择 BeforeButton = null; button.BackColor = this.BackColor; else /判断是否可以消除板块三:图片连线。连线时游戏的核心代码。首先判断直连,如果俩张相同的图片中间没有别的图片则满足条件可以消除。此处通过网上查阅资料,用到了返回值。具体代码如下: /竖直方向的连线 bool Y_line(int Y1, int Y2,int x) if (Y1 Y2)/保证Y1Y2 int t = Y1

7、; Y1 = Y2; Y2 = t; for (int m = Y1 + 1; m = Y2; m+) if (m = Y2) break; if (MyButtonx, m.Visible !=false) return false; return true; /水平方向的连线 bool X_line(int X1, int X2, int y) /保证X1 X2) int t = X1; X1 = X2; X2 = t; for (int m = X1 + 1; m Y2) int t = Y1; Y1 = Y2; Y2 = t; t = X1; X1 = X2; X2 = t; if (

8、Y1 Y2) if (X1 X2) if (MyButtonX1, Y2.Visible = false)/右下 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; return true; if (MyButtonX2, Y1.Visible = false)/左上 if (X_line(X2, X1, Y1) = true)

9、 if (Y_line(Y1, Y2, X2) = true) z1.X = MyButtonX2, Y1.Left + length / 2; z1.Y = MyButtonX2, Y1.Top + length / 2; return true; return false; 接着是俩个折点的代码,首先先通过上下左右四个方向分开论述,其代码如下: /二折连右 bool right(int X1, int X2, int Y1, int Y2) for (int x = X1 + 1; x = 0; x-) if (X_line(X1, x, Y1) = true & MyButtonx, Y

10、1.Visible = false) if (OneCorner(x, Y1, X2, Y2) = true) z1.X = MyButtonx, Y1.Left + length / 2; z1.Y = MyButtonx, Y1.Top + length / 2; z2.X = MyButtonx, Y2.Left + length / 2; z2.Y = MyButtonx, Y2.Top + length / 2; return true; if (X_line(X1, 0, Y1) = true) if (X_line(X2, 0, Y2) = true) z1.X = MyButt

11、on0, Y1.Left + length / 2; z1.Y = MyButton0, Y1.Top + length / 2; z2.X = MyButton0, Y2.Left + length / 2; z2.Y = MyButton0, Y2.Top + length / 2; return true; return false; /二折连上 bool up(int X1, int X2, int Y1, int Y2) for (int y = Y1 - 1; y = 0; y-) if (Y_line(Y1, y, X1) = true & MyButtonX1, y.Visib

12、le = false) if (OneCorner(X1, y, X2, Y2) = true) z1.X = MyButtonX1, y.Left + length / 2; z1.Y = MyButtonX1, y.Top + length / 2; z2.X = MyButtonX2, y.Left + length / 2; z2.Y = MyButtonX2, y.Top + length / 2; return true; if (Y_line(Y1, 0, X1) = true) if (Y_line(Y2, 0, X2) = true) z1.X = MyButtonX1, 0

13、.Left + length / 2; z1.Y = MyButtonX1, 0.Top + length / 2; z2.X = MyButtonX2, 0.Left + length / 2; z2.Y = MyButtonX2, 0.Top + length / 2; return true; return false; /二折连下 bool down(int X1, int X2, int Y1, int Y2) for (int y = Y1 + 1; y = Upright+1; y+) if (Y_line(y, Y1, X1) = true & MyButtonX1, y.Vi

14、sible = false) if (OneCorner(X1, y, X2, Y2) = true) z1.X = MyButtonX1, y.Left + length / 2; z1.Y = MyButtonX1, y.Top + length / 2; z2.X = MyButtonX2, y.Left + length / 2; z2.Y = MyButtonX2, y.Top + length / 2; return true; if (Y_line(Y1, Upright + 1, X1) = true) if (Y_line(Y2, Upright + 1, X2) = tru

15、e) z1.X = MyButtonX1, Upright + 1.Left + length / 2; z1.Y = MyButtonX1, Upright + 1.Top + length / 2; z2.X = MyButtonX2, Upright + 1.Left + length / 2; z2.Y = MyButtonX2, Upright + 1.Top + length / 2; return true; return false; 然后将二折连的四种分类综合在一起,代码如下: bool TwoCorner(int X1, int X2, int Y1, int Y2) if

16、 (right(X1, X2, Y1, Y2) = true) return true; if (left(X1, X2, Y1, Y2) = true) return true; if (up(X1, X2, Y1, Y2) = true) return true; if (down(X1, X2, Y1, Y2) = true) return true; else return false; 最后将直连、一折连、二折连的代码统统综合起来,代码如下: bool Path() if (X1 = X2) if (Y_line(Y1, Y2, X1) = true) LinkWay = GameP

17、ath.line; return true; if (Y1 = Y2) if (X_line(X1, X2, Y1) = true) LinkWay = GamePath.line; return true; if (OneCorner(X1, Y1, X2, Y2) = true) LinkWay = GamePath.OneCorner; return true; if (TwoCorner(X1, X2, Y1, Y2) = true) LinkWay = GamePath.TwoConcer; return true; else return false; 通过这些代码,该游戏连线的判

18、定就解决了。板块四:判断成功。当窗口中没有图片时,便可以弹出窗口通知用户已完成游戏,并记录游戏者姓名。记录姓名在板块九会详细介绍,下面是判断是否完成游戏的代码: private bool Win() for (i = 1; i = Horizontal; i+) for (j = 1; j = Upright; j+) if (MyButtoni, j.Visible = false) continue; else return false; if (i = Horizontal+1) return true; else return false; 板块五:判断失败。该过程比较简单,当时间结束

19、时游戏即失败,代码如下: private bool Lose() if (time = 0) timer1.Enabled = false; return true; else return false; 该代码应该在时间空间Timer的Tick时间中执行。板块六:重新开始。在窗口中添加“主菜单”按钮,用户可以通过返回主菜单重新开始游戏。在该事件下加游戏初始化的代码,具体如下: private void initialise()/初始化游戏 score = 0; /时间轴 time = 60; toolStripProgressBar1.Maximum = time; toolStripPro

20、gressBar1.Minimum = 0; toolStripProgressBar1.Value = time; /时间轴 toolStripStatusLabel1.Text = 你的分数: + score.ToString(); toolStripStatusLabel2.Text = 所剩时间: + time.ToString(); buttonMean.Visible = true; buttonBegin.Enabled = true; for (i = 0; i = Horizontal+1; i+) for (j = 0; j = Upright+1; j+) MyButto

21、ni, j = new Button(); MyButtoni, j.Size = new Size(length, length); MyButtoni, j.Left = 3 * distance + (i - 1) * length; MyButtoni, j.Top = 3 * distance + (j - 1) * length + menuStrip1.Height; MyButtoni, j.Visible = false; Controls.Add(MyButtoni, j); for (i = 1; i = Horizontal; i+) for (j = 1; j = U

22、pright; j+) Button button = new Button(); button = MyButtoni, j; button.Click += new EventHandler(Mybt_Click); MyButtoni, j.Name = i.ToString();/为了判断图片是否相同 MyButtoni, j.ImageList = imageList1; MyButtoni, j.ImageIndex = i - 1; MyButtoni, j.Visible = true; /导入图片 /调整各个控件 窗体的位置 location(); 板块七:游戏暂停。当游戏暂

23、停时,该按钮应该显示“继续”,同时时间停止,用户不能看到游戏界面;继续游戏后,按钮显示“暂停”,同时时间开始继续减少。时间停止与继续通过控制Timer的Enable属性。为了遮盖游戏界面,用了PictureBox空间,通过控制该空间的Visibl属性控制游戏界面的可见性,同时可以在游戏开始时显示该图片,使界面更加美观。板块八:游戏难度。该设计也比较简单,通过控制图片的多少来控制难度。游戏难度可以在开始游戏之前选择,不再赘述。板块九:历史记录。该过程主要应用了文件的读取和窗体之间变量的传递。记录必须保存在当地的文件里,否则游戏关闭后记录将不再存在,都取时也必须从当地文件读取。其中文件应分为简单游

24、戏的姓名,分数,一般难度的姓名、分数和困难难度的姓名和分数构成,以简单游戏为例。同时窗口间变量的传递可以将要传递的变量写在form后的括号中,然后承接的窗口要有接受的变量,类似于事件之间的传递。接着是保存记录,当游戏胜利,弹出FormWin窗口,可以记录游戏者姓名和时间,代码如下: FileStream fs = new FileStream(.FileseasyName.txt, FileMode.Append); StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);/解决乱码 FileStream fsTime = new FileStream(.FileseasyTime.txt, FileMode.Append); StreamWriter swTime = new StreamWriter(fsTime, Encoding.Default); sw.WriteLine(textBox1.Te

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1