毕业设计(论文)-单击对战游戏的设计与实现.doc_第1页
毕业设计(论文)-单击对战游戏的设计与实现.doc_第2页
毕业设计(论文)-单击对战游戏的设计与实现.doc_第3页
毕业设计(论文)-单击对战游戏的设计与实现.doc_第4页
毕业设计(论文)-单击对战游戏的设计与实现.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录摘要.1关键字.11前言.11.1程序开发背景.11.2程序开发目标.11.3编码设计标准与规范.21.4程序开发的实际意义.21.5对“单击对战”的解释.32相关软件及技术介绍.32.1开发平台与工具选择.32.1.1.NET简介.32.1.2MicrosoftVisualStudio2008简介.32.2相关技术简介.32.2.1使用UDP协议的套接字技术.32.2.2使用TCP协议的套接字技术.32.2.3Socket方法和相关类介绍.42.2.4多线程的使用.42.2.5事件的使用.42.2.6反射调用一个类的私有成员.43可行性分析与需求分析.43.1可行性分析.43.2需求分析.53.2.1功能需求.54单击对战游戏设计.54.1系统设计思想.54.2系统总体设计.55主要功能详细设计.65.1在线用户列表的获得.65.1.1设计思路.65.1.2实现过程.65.2进入对战窗体的友好用户体验.95.2.1设计思路.95.2.2关键代码.95.3五子棋对战窗体功能.125.3.1设计思路.125.3.2关键代码.126系统测试.156.1测试分析报告.156.2.1测试方式简介.156.2改进意见.157结束语.15致谢.15参考文献.151单击对战游戏的设计与实现计算机科学与技术专业学生指导教师摘要:系统是基于.NET平台开发的一个P2P结构的单击对战五子棋游戏。基于P2P、套接字、事件、设计模式、多线程、反射等技术,使用c#语言和UDP协议的套接字进行广播,不但可以实现在局域网内获得所有在线用户IP列表、状态的功能,而且通过使用TCP协议的套接字可以实现多个用户之间的连接、游戏、聊天、并闪动对方屏幕的功能。以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性、娱乐性、互动性和益智性于一体,已经成为多数人群的休闲方式。关键字:P2P;UDP广播;TCP协议;设计模式;事件1前言1.1程序开发背景随着计算机信息技术的发展,网络游戏已成为我们生活中的重要组成部分,但由于广域网游戏占用的资源较多、易受到病毒等缺点,所以局域网游戏被游戏爱好者广泛使用。无论是对于初步探索网络编程的编程爱好者还是有志于在物联网方面发展的程序员,编写简单的局域网游戏都是一个很好开始。网络游戏在市面上已经出现多年,许多游戏对战平台也已相继出现,例如我们熟知的浩方、QQ对战平台和街机游戏的ArcadeLive平台等等,虽说它们有很大的不同,但有一点是可以肯定的:不管是这些游戏还是对战平台,刚开始都是需要在局域网内调试的。然而,出于盈利的目的,开发商一般不会将对战平台的局域网内的版本流于市面,更不会公开自己的原代码。当然通过一些人士的分析和透露,我们知道浩方是通过把tcp/ip协议转换为ipx协议。虚拟局域网,为大家提供了一个作战平台,但游戏开始后,玩家之间就是p2p的关系了,游戏速度和平台无关。但具体的实现肯定是很困难的,里面至少涉及hook,P2P,VPN,修改数据包,java或C+的网络编程,进程通信,数据库的操作等等。当然一些大型游戏里面内置了网络连接模块,在局域网内是不需要再通过平台完成数据通信的。但对于一些单机游戏,要想完成局域网内的对战,对战平台就不可或缺了。这方面ArcadeLive是比较有代表性的,它的联网功能可能是靠kaillera来实现的,要想实现联网玩游戏,你必须有一个kaillera的客户端和一个服务器端的程序,客户端现在大多在模拟器中自带,而服务器端则是一个单独的程序。总之网络联机模块的技术发展还是很成熟的,但由于开发商的保密,很多技术难题还是要自己解决的。1.2程序开发目标拟开发基于p2p具有运用时自动加载在线用户IP列表、双击某个IP或头像自动进入五子棋游戏,并且用户体验很好的程序。该程序无需服务器端,也就是说每个程序实例既是服务端也是客户端,也就是常被我们提及的p2p。运行程序时通过广播特定的信息使所有在线的用户获得自己的IP然后添加到自己的用户列表上,收到此特定信息的用户回复另一信息,然后就可以实现所有的人获得在线用户IP的功能。游戏是逐渐被世人抛弃的起源于中国古代的传统黑白棋种之一的五子棋,虽然它看似无聊,但对于练习编程技术还是很有意义的。本程序中的五子棋使用TCP协议的套接字进行通讯,广2泛应用了事件机制,接收到我们自定义的信息后就会根据以至的信息头作出相关的反映。众所周之,网络游戏会因为种种原因出现延迟,使用户持续等待甚至出现卡死的情况,本程序尽最大的努力提高用户体验的舒适性,即尽量不发生卡的情况。1.3编码设计标准与规范为了在编码过程中,能够快速地、有效地阅读,我们有必要为对象约定一个规范的编码命名约定。(1).对象命名约定下面为在编码过程中会用到的对象统一的命名,如下表1所示:对象名命名约定(前缀码)FormFrmTextBoxtxtPictureBoxpicPanlepnlLablelblTextBoxtxtTreeViewtv表1对象统一的命名(2).结构化编码约定编码风格参照下例进行:boolstartListen=false;publicboolCanAgin,CanAgins,CanDown,IFirst;privateSocketsocketListerner;privateThreadmainThread;publicClientRoleclientConnectionRole=newClientRole();在程序中,对一些比较难懂,或是属性不熟悉的地方加上必要的文字说明,其次,程序要有层次,使得读程序时更易读懂。1.4程序开发的实际意义对于数据的通信,我们比较熟悉的有Tcp/Ip协议、UDP协议等等。以UDP协议为例,UDP从应用程序接过报文后,附上目的端口号、源端口号和其他两个小字段后就直接将结果段递交给网络层。网络层将该段封装到数据报中后,尽力而为地将数据包传递给接收端主机。如果数据报到达接收端主机,UPD将根据IP地址和两个端口号将段中的数据交给相应的进程。本程序中的用户列表的维护就是利用使用UDP协议的Socket发送广播进行获得。然而鉴于UDP协议的无连接特点,丢失数据包的可能性也很大的,所以当进入游戏窗体后,真正负责通讯的采用了TCP协议的套接字进行通讯,也就是说,UDP协议那个套接字只负责维护列表。本程序中的游戏是人气很旺的网络五子棋,选择它的原因很简单:简单直接,不会上瘾,算法简单,易于实现。本程序的可扩展性强,程序员可以根据自己的要求将基于TCP的Socket也提到一个类中,然后通过存放到一个以远程端点为Key相应连接套接字为Value的Dictionary中,以实现和多人对战的要求。当然也可以利用反射将游戏程序编译成一个类,然后放到一个特定文件夹下,当主窗体运行时,自动加载。除此之3外,对于网络编程的初学者也是很有帮助的。1.5对“单击对战”的解释本程序采用p2p的架构,即集服务端和客户端的功能于一体,整个设计采用事件驱动,所以非常方便实现。之所以叫做“单机对战游戏的设计与实现”,主要是内嵌的游戏是五子棋游戏,它在用户体验上的感觉基本就是单击鼠标,没有太多别的负责的操作,很是适合小朋友或是老年人玩。2相关软件及技术介绍2.1开发平台与工具选择2.1.1.NET简介.NET的编程模型将开发语言和运行时平台分离,实现了独立与语言的组件技术,通过不同的运行平台,.NET应用可以被扩展到PC、PDA、手机和嵌入式设备上。.NET运行平台称为.NETFramework,是.NET平台的基础框架,它创造了一个完全可操控的安全的和特性丰富的应用执行环境,这不但使得应用程序的开发与发布更加简单,并且实现了众多语言的无缝连接。2.1.2MicrosoftVisualStudio2008简介为了开发.NET的应用,微软推出了强大的.NET开发工具VisualStudio.NET(以下简称VS)作为微软.NET战略的重要组成部分。VS包含C#、VisualBasic.NET、Visualc+.NET等多个开发语言,同时还为第三方语言工具商提供了接口,只要支持CLS(CommonLanguageSpecification)的语言都可以集成到VS环境中。VS充分发挥了CLR的潜力,为开发者提供了一个统一的集成开发环境和调试器。由于采用统一的类型定义和共享类库,各语言不仅在运行时,而且在设计就可以实现对象级交互。VS不仅提供了WebServices开发工具,而且提供从WebServices开发到发布、注册、整合的全过程支持。为创建和部署WebServices,.Net平台采用了一系列的互联网协议,如XML、SOAP、WSDL、UDDL等用于WebServices的部署、请求和响应。软件人员最关心的还是开发效率的提高,VS人性化的界面和众多工具将成倍提高开发效率。无论针对传统的Windows桌面开发,WebServices,开发人员都不必在为每种不用的应用重写全部代码,不必为不同的客户设备定制不同的界面。2.2相关技术简介2.2.1使用UDP协议的套接字技术数据报式Socket(DATAGRAM)是一种无连接的Socket,对应于无连接的UDP服务应用.不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。使用UDP协议的套接字可以用来向许多系统支持的网络发送广播数据包。要实现这种功能,网络本身必须支持广播功能,因为系统软件并不提供对广播功能的任何模拟。广播信息将会给网络造成极重的负担,因为它们要求网络上的每台主机都为它们服务,所以发送广播数据包的能力被限制于那些用显式标记了允许广播的套接字中。广播通常是为了如下两个原因而使用的:1.一个应用程序希望在本地网络中找到一个资源,而应用程序对该资源的地址又没有任何先验的知识。2.一些重要的功能,例如路由要求把它们的信息发送给所有可以找到的本网段的主机。被广播信息的目的地址取决于这一信息将在何种网络上广播。本程序中利用基于UDP协议的套接字向广播地址55发送广播的方式以获得用户列表。2.2.2使用TCP协议的套接字技术本程序中的游戏部分使用的是的TCP协议4的套接字进行通讯。众所周之流式Socket(STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用,虽然效率低但由于其安全特性被广泛使用。某一个棋子的位置很可能关系到游戏的胜败,所以使用TCP协议的套接字就可以避免丢包等问题。2.2.3Socket方法和相关类介绍-方法-Socket():创建一个SocketBind():绑定一个本地的IP和端口号(IPEndPoint)Listen():让Socket侦听传入的连接尝试,并指定侦听队列容量Connect():初始化与另一个Socket的连接Accept():接收连接并返回一个新的socketSend():输出数据到SocketReceive():从Socket中读取数据Close():关闭Socket(销毁连接)-相关类-IPAddress类:包含了一个IP地址IPEndPoint类:包含了一对IP地址和端口号2.2.4多线程的使用应用多线程技术最大的误区在于没有分清适合的情况就盲目地使用多线程。除非运行一个多处理器计算机,否则在CPU密集的任务中使用两个线程不能节省多少时间,理解这一点很重要。在单处理器计算机上,让两个线程同时进行100万次运算所花的时间与让一个线程进行200万次运算是相同的,甚至使用两个线程所用的的时间更长,因为要处理另一个线程操作系统必须用一定的事件切换线程,即分配时间片。使用线程带来的负面因素是必须额外考虑线程的并发、同步等线程安全问题,从而使得程序更加复杂而难以维护。然而,有些场合则使用多线程技术非常合适,网络应用开发就是其经常出现的场合之一。当一个线程等待从网络中获取数据,同时其他线程可以继续处理其他的任务,此时可以节省很多时间。本程序中主要就是在针对Accept和Receive这两个会阻塞的方法使用多线程。2.2.5事件的使用由于不知道什么时候会有人发送信息给自己,所以程序中应用事件来处理对方的消息,即监听对方发送的消息,如果接受到的消息和自己要处理的一致,则执行注册在其上的方法。例如,A上线的时候,就会向广播地址发送“Logon”消息,已经在线上的B、C收到此消息后就行执行自定义的OnGetList事件,然后此事件调用注册在自己身上的GetListMethod方法,从而实现将A的IP地址加到自己的用户列表上的功能。2.2.6反射调用一个类的私有成员当用户进入对战窗体后,主窗体的用户列表不可用,即一次只能和一个用户进行游戏,(这只是我个人规定)。当用户退出对战窗体后,必须要求主窗体的用户列表重新可用,但我们注意到,窗体类的TreeView类型字段默认是private,也就是其它类不可访问的,当然我们可以将其改成internal或更加访问级别使外界可以访问。但我们有更专业的手段:利用反射技术。.NET的一个反编译工具Reflector就是利用发射实现的。3可行性分析与需求分析3.1可行性分析在很早以前五子棋软件就已经被开发出来了,当时的五子棋软件仅提供了5“人机模式”与“双人模式”。“人机模式”是指,人与计算机进行对弈,计算机按照事先编写好的算法程序来进行下棋;“双人模式”是指,两个人通过交替使用同一台计算机来进行下棋。无论是选择哪一种模式,所有的操作都必须在同一台计算机上来往完成,棋局无法在异地计算机之间来进行,故而也叫单机版五子棋软件。3.2需求分析软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。3.2.1功能需求(1).运行游戏自动获得所有在线用户列表并且自己的IP加到所有其他在上用户玩家列表上的功能。(2).显示请求对战提示框。(3).进入对战窗体,其他用户无法再与其游戏。(4).显示玩家退出提示框。(5).能通过网络进行下棋。(6).符合五子棋的基本规则。(7).提供玩家之间的聊天功能。(8).提供玩家之间闪屏功能。(9).一个用户退出程序,所有在线用户列表中自动清除退出用户对应的IP。(10).用户界面需求界面友好、亲切。(11).界面简洁、不花哨。(12).操作界面直观、不繁琐。(13).用户体验良好。4单击对战游戏设计现有的网络编程模式主要分成两类:一种是基于C/S(Client/Server客户机/服务器)模式,另一种是B/S(Browser/Server,浏览器/服务器)模式;C/S程序具有好的交互性,功能强大,但是客户端必须安装客户端软件,服务器端也要运行,限制了其应用;B/S模式下要求客户端具有浏览器,但浏览器在安全方面有一些限制,交互性与功能有一些限制。由于这两种模式的种种弊端,单击对战游戏采用了p2p网络技术来设计与实现,网络内部使用UDP和TCP协议的Socket通过传输层提供的服务进行通讯。4.1系统设计思想主窗体运行时开启是一个基于UDP协议

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论