为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

毕业论文-基于C#的客户端连连看游戏

2018-04-14 45页 doc 125KB 62阅读

用户头像

is_083599

暂无简介

举报
毕业论文-基于C#的客户端连连看游戏毕业论文-基于C#的客户端连连看游戏 基于C#的客户端连连看游戏 系 别 : 计算机科学与技术系 专业(班级): 计算机科学与技术2014级专升本班 作者(学号): 董子龙,51402111045, 指导教师: 储德锋,硕士, 完成日期: 2016年5月10日 蚌埠学院教务处制 目 录 中文摘要 ..................................................................................................................
毕业论文-基于C#的客户端连连看游戏
毕业论文-基于C#的客户端连连看游戏 基于C#的客户端连连看游戏 系 别 : 计算机科学与技术系 专业(班级): 计算机科学与技术2014级专升本班 作者(学号): 董子龙,51402111045, 指导教师: 储德锋,硕士, 完成日期: 2016年5月10日 蚌埠学院教务处制 目 录 中文摘要 ........................................................................................................................................... 1 英文摘要 ........................................................................................................................................... 2 1 概述 ............................................................................................................................................. 3 1.1 Visual Studio 2013概述.............................................................................................................. 3 1.2 Winform概述.............................................................................................................................. 3 1.3 WPF简介 .................................................................................................................................... 4 .................................................................................................... 4 1.4 寻径算法 ................................ 1.5 C#开发语言 ................................................................................................................................ 5 2 游戏系统简单分析 ..................................................................................................................... 7 2.1 社会可行性分析 ........................................................................................................................ 7 2.2 技术可行性分析 ........................................................................................................................ 7 2.3 经济可行性分析 ........................................................................................................................ 7 2.4 游戏制作背景 ............................................................................................................................ 7 2.5 开发的目的 ................................................................................................................................ 9 2.6 游戏规则 .................................................................................................................................... 9 2.7 系统功能的需求分析 .............................................................................................................. 10 2.8 运行环境 .................................................................................................................................. 10 3 系统总体设计 ........................................................................................................................... 11 3.1 寻径思想总结 .......................................................................................................................... 11 3.2 系统的设计目标 ...................................................................................................................... 11 3.3 游戏设计原理 .......................................................................................................................... 11 3.4 游戏选择 .......................................................................................................................... 12 3.5 游戏的路径判断 ...................................................................................................................... 12 3.6 路径逻辑图设计 ...................................................................................................................... 14 4 系统详细设计与实现 ............................................................................................................... 17 4.1 连连看控件思想 ...................................................................................................................... 17 4.2 初始化行和列设置 .................................................................................................................. 17 4.3 设置连连看图片地址分布 ...................................................................................................... 18 4.4 根据图片位置信息设置坐标 .................................................................................................. 20 4.5 点击消失动画处理(队列处理) ............................................................................................... 20 4.6 自定义控件的引用及逻辑代码 .............................................................................................. 21 4.7 游戏的测试及操作 .................................................................................................................. 25 5 结论 ........................................................................................................................................... 28 致谢 ................................................................................................................................................. 29 参考文献 ......................................................................................................................................... 30 蚌埠学院本科毕业设计(论文) 基于C#的客户端连连看游戏 摘 要:如今已经进入了信息时代,网络已经必不可少的了,而且游戏产业的发展也随信息时代的到来而呈现一种指数爆炸式的发展,玲琅满目的游戏层见迭出,游戏有脑力游戏和竞技性游戏两种,第一种如象棋,围棋等各种棋类当然也包括连连看这种游戏等,第二种如lol,cf等网络游戏利用网络进行对战比拼的游戏。大多数可以进行竞赛比拼,并具有一定的规则保证游戏的顺利进行。当前大多数游戏平台上的电子游戏分为单机版游戏和网络联网版游戏~单机游戏:一般指不连网络的情况下独自一人消遣的过程。在游戏设计时我使用Visual Studio编辑器基于.Net平台,运用C#编程语言进行开发的连连看游戏。运用Winform控件和WPE进行美化,其中主要思想是寻径算法。在软件测试时计算机游戏开发过程的白盒测试与其它软件并没有太大区别,但其黑盒测试则与其它软件存在较大的不同。由于游戏软件为了趣味性与耐玩性,软件中许多元素的产生带有随机性,则鼠标需要点击的位置随游戏图像的具体变化而变化,无法以机械的方式预先构建。因此游戏软件的黑盒测试更多是由纯人工进行,模拟用户的使用和软件进行实时交互,这种人工的测试方式效率低下,成本高昂。所以采取了相结合的方式进行测试。 关键词:Visual Studio编辑器;连连看游戏;C#语言;Winform;WPF;寻径算法思想;软件测试 1 董子龙:基于c#的客户端连连看游戏 Based On The C# Client Lianliankan Game Abstract:Now has entered the information age, network has been an essential, but also the development of the gaming industry along with the arrival of information age and an index of explosive growth, see game layer are ling lang see everywhere, the game has a mental game and athletics two kinds, the first such as chess, go, of course, also including various chess lianliankan this kind of game, the second such as lol, cf and other online games against competing with network game to play. Most can compete for competition, and has certain rules to ensure the smooth progress of the game. Currently most of the electronic game platform into stand-alone game and network game online version of the game! Online games: as the name implies, the game via the web and other Internet users in the process of, and the stand-alone game: generally refers to that under the condition of the network process of recreation alone. Games as a way to relieve pressure of modern people, can help people in society rhythm speeding up, the pressure of the moment to give people the spiritual comfort and lianliankan game is the single small game! In the game design when I use the Visual Studio editor based on. Net platform, using c # programming language development lianliankan game. Using Winform controls and WPE beautification, of which the main idea is to search path algorithm. In software testing computer game white box testing with other software development process is not much difference, but its black box testing is different with other software. Because the game software for fun and play with resistance, many elements in the software production with randomness, then need to click of the mouse position changes over game images of specific, cannot be in the form of mechanical build in advance. So game software black box testing more is made of pure manual, the use of simulated users and software for real-time interaction, the artificial way of testing inefficient and costly. So take the combination of test. Key words:Visual Studio editors; Lianliankan game; C # language;Winform;WPF; Search path algorithm; software testing 2 董子龙:基于c#的客户端连连看游戏 基于C#的客户端连连看游戏 1 概 述 1.1 Visual Studio 2013概述 Visual Studio 2013 预览版进行了大量改进。可帮我在编码时提高工作速度并会聚精神。Visual Studio Power Tools 扩展中以试验性质的方式出现一部分功能在其中。被纳入到 Visual Studio 中是经过改进的而不是原封不动。在新版本之中更增加了许多方便提高工作效力方面的功用。像是方括号主动补全功能、整行或整块的代码可以使用快捷键的方式移动。此外。在Visual Studio 2013 预览版本之中的团队成本解决器中主页设计被有效的加强,可以更加方便地运用到团队协作的功能,而且也在“挂起更改”和“生成”的功能上做了删减,在一个单独的窗口之中被显示出来。 当某个大型代码文件被Visual Studio 2013编译中时。文件所在的位置是无法被确定的。还有在Visual Studio 2013 预览版中。转动条可以在栏模式和图模式之间任意被切换。前者,具有检察注释位置、更改地址和跟踪显示错误的文件。后者, 转动条则可以对代码进行及时预览,而且若是想要详细地了解这段代码可以将鼠标放在在代码上然后点击文件代码所在地址就可以自动跳转到所在地址。 程序开发者碰到的难题是不但需要理解部分代码的功能和作用,还需对历史记载、作者、引用等资料进行了解。当需要进行一个多人配合项目处理时,对于程序开发者来说则变得更加麻烦。本系统使用Windows 7作为操作系统,操作起来比较简单和 [5]Microsoft Visual Studio 2013作为设计的开发工具。 1.2 Winform概述 .Net程序员开发平台对Windows Form一般可简称为WinForm。而在Windows窗体其中拥有种类繁多的控件,作为程序开发者还可以创建属于自己的独一无二新控件。可以进行输入或操作数据的对象就是WinForm控件。比方说在.net平台下ComponentOne就是对数据和方法的封装。属性和方法在控件的功能前者是作为简单的访问者而后者是为了实现简单的功用。数据管理是一种简便的方法可以用来做数据显示和操作;在窗体上同步显示数据检查在软件开发之中所犯的错误。在数据库中可以使用windows窗体帮助程序开发者减少负担可以在窗体上直接显示和操作数据,有利于程序的开发和检查。 3 董子龙:基于c#的客户端连连看游戏 1.3 WPF简介 英文单词Windows Presentation Foundation的首字母缩写就是WPF 。在我国一般翻译成“Windows呈现基础”。因为原来曾被叫做“Avalon”。与“我佩服”的中文拼音的第一个字母吻合所以在我国也有部分人把它叫做“我佩服”。第一次出现是在.NET Framework 3.0 之中。并渐渐成长成重大应用程序的开发类库成为重要的开发工具。 WPF是微软公司开发创造的图形系统,作为新一代图形系统具有可以为用户提供同一的描写和操作要领的功能。而且在DirectX 9/10技术之上开发而成的WPF系统带来了创新体验的3D界面给予人们一个新视角看待图形,并且之前的2D界面也做了极大的改进更加准确生动,富有视觉冲击力。好比在windows Vista系统之中神奇吸人眼球的半透明的视觉体验窗体就是在WPF的帮助下实现的。 程序开发者得益于WPF的神奇功能,已经可以创造出和mac比肩的界面了,对mac程序在美化领域发起了强力的冲击。 对Windows客户端开发起到了不可忽视的重要作用。 Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于 Windows 的统一显示子系统。它通过 WinFX 公开。它由显示引擎和托管代码框架组成。Windows Presentation Foundation 统一了 Windows 创建、显示和操作文档、媒体和用户界面 (UI) 的方式。使得开发职员和设计职员可以创造更好的视觉效果、存在差异的用户体验。Windows Presentation Foundation 发布后。Windows XP、Windows Server 2003 和以后所有的 Windows操作系统版本都可以使用它。 1.4 寻径算法 启发式代价函数是寻径算法改变自身行为的能力的基础。在游戏之中大部分游戏都需要使用启发式函数,他的优点是在速度和精确度间取得两者兼得有利于游戏的运行。在游戏之中有时候并不是需要取得最优路线而是接近就好了。游戏者的主观感想和对于游戏中发生事情的判断造成了此事件的发生。从中得知:假如当我设置游戏中有两种不同的对移动速度有不同影响的时候,例如平地和石头路。在平地中的移动速度假设是4,在石头路的移动速度则假设是1。利用A*算法进行等价搜寻时平地的搜寻速度就是4,石头路的搜寻速度就是1。 造成速度不同的原因是在A*的搜索过程把两个点的路径距离预设为2。然后A*会把大的数值4和2比较进行做差数值为2,2与1做差数值为1得到结论在平地上是最优路线。但是实际情况有可能在石头路上的路程有时可能会优 4 蚌埠学院本科毕业设计(论文) 于绕过平地上的路程。所以可能存在花费更多时间寻找新的算法就不是一个十分划算的行为了。因此,我们则需要尽可能的减少在关于路程的搜索行为来提升A*算法的运行速度。若是如此则可以把A*算法的走石头路的方式移动速度从4改成2。以上不同方法都可对行为做出处理。 本游戏连连看游戏的主体思想方法也是按照寻径算法来参考的。从其中借鉴一些好的思想~ 1.5 C#开发语言 [1]~[4]连连看游戏是一种使用C#编程语言。它简单、安全、面向对象语言的设计。C#是微软公司研究员Anders Hejlsberg的成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面、与Java几乎同样的语法。和编译成中间代码再运行的过程。[7] 用c#语言开发系统,首先就需要把开发环境搭建完成,Microsoft Visual Studio 2013 [6]就是本系统所用的开发工具。 C#与Java之间有道鸿沟使人能很快发现他们的不一样之处。C#在开发的时候模仿了Delphi的设计,与Delphi的设计一样把COM模型是直接集成在其中。在windows网络框架的战略中作为微软公司.NET战略的排头兵 。.NET应用开发的针对性语言就是C#程序语言。C#程序语言不但吸收从前各种程序语言的优秀之处还对其不良之处进行了改良去其糟粕取其精华,其功能和设计技术代表了如今新型的发展方向。C#不但承袭了C语言的语法结构,而且面向对象特性的c++也被其吸收++的。但是也存在不一样的地方,面向Internet之后C#的工具模子采取了从新的设计。随意访问内存地址所在空间的能力被限制所以C#的指针类型不在可以直接访问内存地址,这样反而可以增加安全性,不但如此C#把多重继承的功能也移除了。这样的话可以不用再犯从前多重继承的层次结构的错误。C#使用.NET架构的优势被突出,其程序设计方法强大、易用、逻辑一致的优点让更多的人加入c#的大家庭。 C#(读做C Sharp)语言是微软公司开发的一种基于.NET Framework的一种编程语 [8]言,C#可以看成是2001年Java语言的升级版。C#有些组件可以方便的转化为XML网络服务。从而使它们可以由任何语言在任何操作系统上通过INTERNET进行调用。C#具备JAVA和C语言的一些特点。它是面向对象的语言设计。还要JAVA和C语言不 [9]具备的特点。C#.NET应用程序技术对c语言中的一些易出现问题的语法进行了一定的改进。使得它能既简单又方便的解决问题。 [10]面向对象:面向对象编程从最纯粹的观念上定义就是:通过向对象发送消息来完 5 董子龙:基于c#的客户端连连看游戏 成任务。可以这样认为:“面向对象=对象+类+集成+通信”。 6 蚌埠学院本科毕业设计(论文) 2 游戏系统简单分析 2.1 社会可行性分析 随着信息时代的到来,各种游戏已不新鲜,人们几乎时时刻刻都在使用着,那么他们除了用这些设备来处理一些工作上的事情以外他们还会用来做些什么呢,很多人都会用来放松一下,也就是各种娱乐活动了,听音乐、聊天、看电影、玩游戏等活动就又有机会了。所以开发一个休闲类游戏是最符合当前人们的需要的。此款小游戏意图在人们生活烦躁、工作无聊、学习乏味之时提供一种新的打发时间、舒缓压力的休闲方式。让人达到心旷神怡、办事效率加倍的良好状态。也可训练人的手指灵活性,也可在使用,锻炼人的逻辑思维能力、判断力和观察力。 2.2 技术可行性分析 Visual Studio 2013是微软公司针对开发人员专门设计的运行在win8系统上的开发工具。可以利用这个开发工具快速、方便的开发一些才c#软件程序。有了这个,游戏开发者可以帮助我们测试应用程序的运行。只要有一定的c#语言基础,并且对Visual Studio 2013有所了解,开发出一款小游戏应该也是不太困难的。 2.3 经济可行性分析 如今,开心消消乐在游戏排行榜上的占有率率已稳稳占据第一的位子,想必在1—2年内很难有其它的游戏能超越开心消消乐。有很多大型游戏软件厂商早已投入巨大的人力物力在休闲小游戏的的开发上,并且也获得了丰厚的利润。此款休闲小游戏是个人开发的,投入少,但是有可能获得巨大成功,至少对开发者个人来说是可以收获很多编程经验的。 2.4 游戏制作背景 “连连看”脑力游戏指的是找出把两个相同的图片链接起来,一般来说这个游戏在网络平台上一般在网页游戏中看到,大部分是对两张图片进行关联,在设置好的规则范围之内链接起两个相同的图片。台湾是游戏“连连看”的起源地,但是却在国内引发潮流也吸引很多程序开发者陆续开发出不同版本的“连连看”游戏。在连连看游戏进入国内时独树一帜的游戏制作创造了经济价值。随着科技的发展Flash应用的开发创造,网络上出 7 董子龙:基于c#的客户端连连看游戏 现了具有创新力,界面绚丽吸人眼球的“连连看”游戏。如宠物连连看、石头连连看等,被了不少的年轻的女性玩家注意。 8 蚌埠学院本科毕业设计(论文) 2.5 开发的目的 连连看这种脑力游戏也被称为桌面休闲游戏。需要放松的人需要一种容易上手且不感到无聊的游戏而连连看游戏就满足了其中的要求,而且移值性高代码简单大部分初学者也可以制作,有网页版本的也有PC客户端版本的,渐渐更多的人开始了解连连看这种游戏并且喜爱上这个游戏。满足了人们利用空闲时间进行休闲的需要是休闲益智的游戏设计的主要初衷,在日益加快的社会发展速度下像连连看这种休闲放松类的游戏可以给人带来一些缓解让人们得到放松。这就是现在小游戏愈发受到上网游戏人群欢迎的原因,一方面是因为玩法不复杂,另一方面也是因为存在不少经典游戏至今还具有可玩性。也有不少程序开发者不断创新补充其内容。其中典型游戏之一就有连连看。而且当你感到无聊时,喝着茶,玩着连连看还是很有意思的。作为21世纪的新型产业游戏开发行业渐渐向大众展示其未来的发展空间和前景,吸引社会各界人士对其投资助其发展壮大。但是现在随着发展人才的供给却发生了断裂,作为一名即将毕业的计算机系学生我想要成为一个优秀的游戏开发者,但是我知道做任何一件计算机方面的工作都是需要实际的开发经验的和自身的灵感的,通过这次连连看游戏的开发一方面可以增加对游戏开发的实际经验,另一方面也可以对开发游戏的编程语言加深理解,是一次理论能力和实践能力相结合的开发经验,同时也是为以后的职业生涯奠定了坚实的基础。 吸引玩家来第一次尝试娱乐小游戏的其中一个重要原因是因为游戏中的画面是否对游戏参于者具有冲击力吸引游戏参与者继续游戏的进行,若是游戏画面华丽精美则可以增加了游戏参与者的舒适度,而且也能提升游戏参与者的欢乐度,再者游戏画面设计和优化,是程序开发过程中还算是比较简单的步骤,对程序开发设计者来说的话;但是这一步骤对于玩家来说却是最重要的一步。原因对于玩家来说如何实现功能的步骤并不是他们所关注的,玩家所关注的是游戏的美感,可玩性和舒适度。 2.6 游戏规则 ? 当游戏开始时找到两张相同的游戏图片用鼠标单击,且相同图片必须有公共点这样2张图片就可以消除,但是连接线的折点不能多于2个,两个图片之间的连线不能超过三个,边缘的图片特殊处理。 ? 在游戏中若是发现连接线之间的折点少于2个或者少于2个以上的,则可以点击片重排,换句话说也就是开始一句新的游戏,这样使玩这个游戏显得更简单更人性化。 9 董子龙:基于c#的客户端连连看游戏 ? 在点击游戏开始之前可以设置游戏图片的种类和重复数量,前者的设置应按照规则小于等于图片的总体数量,且后者必须设置成偶数,当然超过游戏限制数量的图片也规定不能发生。 ? 当所有图片都消除后,游戏结束,游戏成功~ 2.7 系统功能的需求分析 需求分析的目标是分析调查需求(需求模型)并提交最初综合解决方案(方案模型)。在此过程中在上下文环境中分析所有需求,考虑需求之间的相互影响并估计工作量。[11] 玩家可以设置是否显示网格线,这种功能主要是为了更好的游戏操作,添加网格线,可以对游戏中的图片更加直观的点击,更加清晰明了。 玩家可以在游戏开始之前可以设置连连看游戏的行数和列数,最终游戏会根据行数和列数自动动态完成网格的配置,几行几列完全由玩家自定义,比其他的版本的连连看游戏更加的人性化,二期玩家可以根据自己实际玩游戏能力可以自己设置难度,自己设置自己挑战。 每局游戏都有用时,当开始游戏时候,用时记录就会开始,记录每次用时时间,自己可以挑战一下自己的时间记录等。 当游戏结束了,如果所有的图片都消失了,则游戏成功~ 2.8 运行环境 CPU:Intel Pentium 600MHz以上。 内存:128M以上。 磁盘安装空间:3.2GB 显示:800*600,256色。 软件需求:Microsoft Windows 2000 + SP1。 Microsoft Internet Explorer 5.5 。 10 蚌埠学院本科毕业设计(论文) 3 系统总体设计 3.1 寻径思想总结 在连连看游戏中,图片的消除路径的主要逻辑,在上面几个逻辑图中都已经有明确的说明,大体的情况就这几种情况,所以在代码算法中,主要根据这几个图的模式来设计代码结构等~ 3.2 系统的设计目标 对于单机小游戏来讲,主要是玩家在无聊的时候进行娱乐玩的,所以首先要知道玩家的情况,什么时候会玩,或者在什么设备上,比如用户在看电影后,有点疲劳了,于是放点音乐,喝着茶,然后开启连连看游戏进行操作~所以连连看游戏的设计目标就要从这个角度出发,无论在用户体验上还是在界面功能上都达到最好的效果~ ? 通过界面可以设置连连看游戏的行数。 ? 通过界面可以设置连连看游戏的列数。 ? 当点击开始游戏按钮时,游戏可以按照设计开始,并且计时器也运行正常。 ? 当点击想通图片,而且这两个图片符合连连看消除图片的规则时候,可以正常消除。 ? 当点击图片时候,对应的图片会放大变得虚幻,便用玩家区别其他动画效果。 ? 当两个相同图片消失时候,会有小时的动画图片,给用户一种直观、人性化的消失效果。 ? 界面上会有游戏刷新按钮,单击刷新按钮,游戏上的图片会从新排序。 ? 当所有图片都消失了的时候,游戏成功,游戏结束,会有结束提示 ? 系统运行稳定安全可靠。 3.3 游戏设计原理 单机模式是本次设计所采用的游戏方式,是为了更好的测试改良。当前关卡通过的标志是小于规定的时间且消除全部的图片,如果游戏参与者没有在规定的时间内消除全部的图片则游戏自动停止结束,重新载入游戏开始新一局的游戏。我对于游戏的规则设立参考了早期开发出来的连连看游戏,最主要的问题是图片可否在连接后消除的问题。在点击两张相同的图片之后,做出一个判断。若是被点击的是相同的游戏图片或者两张不同的游戏图片,游戏继续点击无效。用三根以内的直线连接两张相同的游戏图片放在 11 董子龙:基于c#的客户端连连看游戏 一起则可以消除这两张游戏图片;否则,点击无效。 在游戏进行的过程之中,若是游戏参与者在规定的的时刻内消除完全部图片则提醒游戏参与者游戏胜利,游戏自动可以跳入下一个关卡。当然若是没能在规定的时间内将游戏图片消除完全则游戏参与者失败并提示游戏者时间已到。每关都按照这个规则进行类推。 可是对于我设计的游戏软件是单机小游戏的原因,需要考虑到它的小巧和便捷,所以对于此游戏我没有赋予它某些繁杂的功能。 3.4 游戏方案选择 我思考了两种方案,在前期的游戏设计考虑阶段时: 每一局都按照规定好的种类数和重复数在区域内的随机的出现,设置图片的出现次数时间;次数为偶数,时间给予限制,但是随着关卡的上升的增加图片数量或减少时间,通过这种方式划分关卡的难度从而设置不同的游戏关卡。 在相同的区域内,玩家自主选择游戏过程中图片出现的重复次数,但是游戏时间岁难度的上升而减少增加难度。图片种类数和图片重复的次数由玩家自主选择但是不能是奇数,若不按照规则来连连看游戏虽然可以顺利运行,可是因为存在一张图片无法消除则游戏无法完成。 我思考前者的方案时,考虑到是由软件规定出现的游戏图片种类数和游戏图片重复次数,造成的不良后果是玩家缺少自主选择的权利的能力,不利于人机之间的交互。游戏的玩法单一,无法对游戏的进行符合自身实力的更改,这样也不利于游戏的趣味性。降低了游戏参与者享受游戏的乐趣,后果是在玩过一次之后就不会玩第二次了。所以最终在我分析了网络上的主流连连看游戏之后。综合考虑,我主动放弃了前面一种方案的连连看游戏设计的思路,选择后面的方案。 3.5 游戏的路径判断 ? 判断两张图片是否是相同的 ? 判断两张图片的连线之间的折点数是否超过两个。那么两张图片的连接情况大致可以分为以下三种情况: ? 直线相连 ? 一个折点 ? 两个折点; 12 蚌埠学院本科毕业设计(论文) 由此分析我们知道,每一个折点一定有且至少有一个坐标(x或者y)和两张图片中的随意一张图片是完全相同的,即折点一定在两张图片坐标的x方向或y方向的直线上,只有这样两张图片才可以在不超过两个折点开始连接。 13 董子龙:基于c#的客户端连连看游戏 3.6 路径逻辑图设计 根据寻径算法的思想,连连看的路径选择大概分为以下几种情况,如下 当线路在两个图片内部网格时候,右上角路线如下图3-1所示: 图3-1游戏路径图 当路线在两个图片内部时候,左下角的路线如下图3-2所示: 图3-2游戏路径图 14 蚌埠学院本科毕业设计(论文) 当路线在两个图片外部时候,右上角路线如下图3-3所示: 图3-3游戏路径图 当路线在两个图片外部时候,左下角路线如下图3-4所示: 图3-4游戏路径图 15 董子龙:基于c#的客户端连连看游戏 当两个图片都在一个边缘时候,如下图处理: 图3-5游戏路径图 16 蚌埠学院本科毕业设计(论文) 4 系统详细设计与实现 4.1 连连看控件思想 因为在连连看的开发中,为了更好的体现用户效果,以及更好的复用性,兼容各种软件,所以把连连看的大部分功能封装成控件,便于维护和开发。连连看的游戏是类似格子状态的,从这个角度来分析的话,比较适合使用Grid控件的部分功能,所以这套连连看游戏的自定义控件部分使用的是就是集成Grid控件来实现的。 在自定义控件的开发过程中会为控件添加各种各样的依赖属性,这些属性也是开放到外面,供外部使用时候调用的,后面会介绍绑定功能。 4.2 初始化行和列设置 因为行、和列都是外部通过依赖属性外部设置的,所以,这里对拿到的行和列进行内部处理,局部代码如下: private void SetGridTable(int row, int colum) { this.RowDefinitions.Clear(); this.ColumnDefinitions.Clear(); for (int i = 0; i < row; i++) { RowDefinition rd = new RowDefinition(); this.RowDefinitions.Add(rd); } for (int j = 0; j < colum; j++) { ColumnDefinition cd = new ColumnDefinition(); this.ColumnDefinitions.Add(cd); } } 此方法会根据外部传递的row和colum来进行对Grid分行、分列,只有Grid行和列都分配完毕后,才能进行下一步的具体操作~ 17 董子龙:基于c#的客户端连连看游戏 4.3 设置连连看图片地址分布 当网格地址画好后,下面就要对这些画好的地址进行填充图片了,图片从哪里来呢, 图片的顺序又该如何分配呢。 首先就是图片的地址问题,从本地目录中读取存放图片信息的文件夹,然后把相应 的图片的各种信息存入内存中,我这里的处理是存放在Model中的。这个模型中,有图 片的本地路径地址、所属游戏中的地址(row、colum)位置、分配到的唯一Id,以及分 配到的匹配Id等信息,这些信息都是至关重要的,因为下面的各种图片消失处理都要 通过这些信息对图片进行各种处理等。 下面是如何对图片的顺序安排到网格地址中,我这里的处理是,对本地取到的图片 根据网格的数目进行设置,网格数目必须是偶数,然后拿到图片信息进行随机取文件夹 中图片地址,图片的数目先取出网格数目的一般,然后进行*2处理,因为连连看游戏是 要消除的,所以图片2倍关系了,肯定可以保证游戏的正确性。 当所有图片的信息都处理好后,对拿到的图片列表信息进行一次row、colum的赋 值处理,处理好~ 具体的操作代码如下局部代码段: private List GetListImageInfo(int row, int colum) { List list = new List(); string dirPath = System.IO.Path.Combine(appPath, this.ImageDirPath); // 目前以相对路径判断 List listFiles = new List(); if (!Directory.Exists(dirPath)) { return null; } DirectoryInfo dirInfo = new DirectoryInfo(dirPath); for (int dirIndex = 0; dirIndex < dirInfo.GetFiles().Length; dirIndex++) { FileInfo fi = dirInfo.GetFiles()[dirIndex]; listFiles.Add(fi.FullName); 18 蚌埠学院本科毕业设计(论文) } Random random = new Random(); //设置随机图片路径等 for (int count = 0; count < row * colum / 2; count++) { int randomValue = random.Next(0, dirInfo.GetFiles().Length); //string filePath = System.IO.Path.Combine(appPath, "AppResource", "Image", "img_" + randomValue.ToString("000") + ".png"); string filePath = listFiles[randomValue]; ImageInfoModel iifm = new ImageInfoModel(); iifm.MateId = randomValue.ToString(); iifm.ImagePath = filePath; list.Add(iifm); } list.AddRange(list); try { list.Sort((x, y) => random.Next(-1, 1));//随机排序 } int index = 0; List listImage = new List(); //赋予新数据 for (int i = 0; i < row; i++) { for (int j = 0; j < colum; j++) { ImageInfoModel imageIM = new ImageInfoModel(); imageIM.Id = index.ToString(); imageIM.MateId = list[index].MateId; imageIM.ImagePath = list[index].ImagePath; imageIM.Row = i; 19 董子龙:基于c#的客户端连连看游戏 imageIM.Colum = j; listImage.Add(imageIM); index++; } } return listImage; } 4.4 根据图片位置信息设置坐标 在获取图片的列表信息后,下面就设置图片的坐标位置,具体代码段如下所示: /// 设置元素所在位置 /// /// 元素对象 /// 行 /// 列 private void SetGridUIElement(UIElement uIElement, int row, int colum) { uIElement.SetValue(Grid.RowProperty, row); uIElement.SetValue(Grid.ColumnProperty, colum); this.Children.Add(uIElement); } 4.5 点击消失动画处理(队列处理) 所有的处理都已经具备了,下面就是处理点击相同的图片,消失的问了,什么样路径的两个图片被点击了才会消失,具体算法见上面寻径逻辑图部分。 对于图片消失的问题,并不是简单的从Grid坐标的位置上删除掉,界面上显示图片是直接从Grid网格中删除掉,但是消失的动画并不是这样处理的,这里先把小时的两个地方图片填上两个Gif图片,当Gif动画执行结束后,触发删除操作,具体删除操作什么时候处理,这个是很关键的,因为当玩家连续快速的点击多个相同的图片消失的时候,如果不用队列来对动画图片处理的话,整个过程就会乱套。所以具体功能见局部 20 蚌埠学院本科毕业设计(论文) 代码段: gifBDVOne = new GifBitmapDecoderView(); gifBDVOne.IsLoop = false; gifBDVOne.GifSource = this.LinkGGifSource; gifBDVOne.Margin = LinkGGifMargin; SetGridUIElement(gifBDVOne, imgIMOne.Row, imgIMOne.Colum); gifBDV = new GifBitmapDecoderView(); gifBDV.IsLoop = false; gifBDV.GifSource = this.LinkGGifSource; gifBDV.Margin = LinkGGifMargin; gifBDV.ExecuteOver += gifBDV_ExecuteOver; SetGridUIElement(gifBDV, imgIM.Row, imgIM.Colum); queueGifBdv.Enqueue(gifBDVOne); queueGifBdv.Enqueue(gifBDV); 把要处理的图片放在队列中,根据队列的先进先出的原则进行处理,这样就不会发生消失的错乱了。 4.6 自定义控件的引用及逻辑代码 现在自定义控件的核心功能已经叙述的差不多了,下面就是对自定义控件的引用和具体的绑定,以及界面的操作处理。视图上的主要操作如代码: 21 董子龙:基于c#的客户端连连看游戏
/
本文档为【毕业论文-基于C#的客户端连连看游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索