欢迎来到人人文库网! | 帮助中心 人人文库renrendoc.com美如初恋!
人人文库网
首页 人人文库网 > 资源分类 > DOC文档下载

毕业设计(论文)-单击对战游戏的设计与实现.doc

  • 资源大小:193.50KB        全文页数:18页
  • 资源格式: DOC        下载权限:游客/注册会员/VIP会员    下载费用:6
游客快捷下载 游客一键下载
会员登录下载
下载资源需要6

邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。注:支付完成后需要自己下载文件,并不会自动发送文件哦!

支付方式: 微信支付    支付宝   
验证码:   换一换

友情提示
2、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

毕业设计(论文)-单击对战游戏的设计与实现.doc

目录摘要1关键字11前言111程序开发背景112程序开发目标113编码设计标准与规范214程序开发的实际意义215对“单击对战”的解释32相关软件及技术介绍321开发平台与工具选择3211NET简介3212MICROSOFTVISUALSTUDIO2008简介322相关技术简介3221使用UDP协议的套接字技术3222使用TCP协议的套接字技术3223SOCKET方法和相关类介绍4224多线程的使用4225事件的使用4226反射调用一个类的私有成员43可行性分析与需求分析431可行性分析432需求分析5321功能需求54单击对战游戏设计541系统设计思想542系统总体设计55主要功能详细设计651在线用户列表的获得6511设计思路6512实现过程652进入对战窗体的友好用户体验9521设计思路9522关键代码953五子棋对战窗体功能12531设计思路12532关键代码126系统测试1561测试分析报告15621测试方式简介1562改进意见157结束语15致谢15参考文献151单击对战游戏的设计与实现计算机科学与技术专业学生指导教师摘要系统是基于NET平台开发的一个P2P结构的单击对战五子棋游戏。基于P2P、套接字、事件、设计模式、多线程、反射等技术,使用C语言和UDP协议的套接字进行广播,不但可以实现在局域网内获得所有在线用户IP列表、状态的功能,而且通过使用TCP协议的套接字可以实现多个用户之间的连接、游戏、聊天、并闪动对方屏幕的功能。以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性、娱乐性、互动性和益智性于一体,已经成为多数人群的休闲方式。关键字P2P;UDP广播;TCP协议;设计模式;事件1前言11程序开发背景随着计算机信息技术的发展,网络游戏已成为我们生活中的重要组成部分,但由于广域网游戏占用的资源较多、易受到病毒等缺点,所以局域网游戏被游戏爱好者广泛使用。无论是对于初步探索网络编程的编程爱好者还是有志于在物联网方面发展的程序员,编写简单的局域网游戏都是一个很好开始。网络游戏在市面上已经出现多年,许多游戏对战平台也已相继出现,例如我们熟知的浩方、QQ对战平台和街机游戏的ARCADELIVE平台等等,虽说它们有很大的不同,但有一点是可以肯定的不管是这些游戏还是对战平台,刚开始都是需要在局域网内调试的。然而,出于盈利的目的,开发商一般不会将对战平台的局域网内的版本流于市面,更不会公开自己的原代码。当然通过一些人士的分析和透露,我们知道浩方是通过把TCP/IP协议转换为IPX协议。虚拟局域网,为大家提供了一个作战平台,但游戏开始后,玩家之间就是P2P的关系了,游戏速度和平台无关。但具体的实现肯定是很困难的,里面至少涉及HOOK,P2P,VPN,修改数据包,JAVA或C的网络编程,进程通信,数据库的操作等等。当然一些大型游戏里面内置了网络连接模块,在局域网内是不需要再通过平台完成数据通信的。但对于一些单机游戏,要想完成局域网内的对战,对战平台就不可或缺了。这方面ARCADELIVE是比较有代表性的,它的联网功能可能是靠KAILLERA来实现的,要想实现联网玩游戏,你必须有一个KAILLERA的客户端和一个服务器端的程序,客户端现在大多在模拟器中自带,而服务器端则是一个单独的程序。总之网络联机模块的技术发展还是很成熟的,但由于开发商的保密,很多技术难题还是要自己解决的。12程序开发目标拟开发基于P2P具有运用时自动加载在线用户IP列表、双击某个IP或头像自动进入五子棋游戏,并且用户体验很好的程序。该程序无需服务器端,也就是说每个程序实例既是服务端也是客户端,也就是常被我们提及的P2P。运行程序时通过广播特定的信息使所有在线的用户获得自己的IP然后添加到自己的用户列表上,收到此特定信息的用户回复另一信息,然后就可以实现所有的人获得在线用户IP的功能。游戏是逐渐被世人抛弃的起源于中国古代的传统黑白棋种之一的五子棋,虽然它看似无聊,但对于练习编程技术还是很有意义的。本程序中的五子棋使用TCP协议的套接字进行通讯,广2泛应用了事件机制,接收到我们自定义的信息后就会根据以至的信息头作出相关的反映。众所周之,网络游戏会因为种种原因出现延迟,使用户持续等待甚至出现卡死的情况,本程序尽最大的努力提高用户体验的舒适性,即尽量不发生卡的情况。13编码设计标准与规范为了在编码过程中,能够快速地、有效地阅读,我们有必要为对象约定一个规范的编码命名约定。(1)对象命名约定下面为在编码过程中会用到的对象统一的命名,如下表1所示对象名命名约定(前缀码)FORMFRMTEXTBOXTXTPICTUREBOXPICPANLEPNLLABLELBLTEXTBOXTXTTREEVIEWTV表1对象统一的命名(2)结构化编码约定编码风格参照下例进行BOOLSTARTLISTENFALSE;PUBLICBOOLCANAGIN,CANAGINS,CANDOWN,IFIRST;PRIVATESOCKETSOCKETLISTERNER;PRIVATETHREADMAINTHREAD;PUBLICCLIENTROLECLIENTCONNECTIONROLENEWCLIENTROLE;在程序中,对一些比较难懂,或是属性不熟悉的地方加上必要的文字说明,其次,程序要有层次,使得读程序时更易读懂。14程序开发的实际意义对于数据的通信,我们比较熟悉的有TCP/IP协议、UDP协议等等。以UDP协议为例,UDP从应用程序接过报文后,附上目的端口号、源端口号和其他两个小字段后就直接将结果段递交给网络层。网络层将该段封装到数据报中后,尽力而为地将数据包传递给接收端主机。如果数据报到达接收端主机,UPD将根据IP地址和两个端口号将段中的数据交给相应的进程。本程序中的用户列表的维护就是利用使用UDP协议的SOCKET发送广播进行获得。然而鉴于UDP协议的无连接特点,丢失数据包的可能性也很大的,所以当进入游戏窗体后,真正负责通讯的采用了TCP协议的套接字进行通讯,也就是说,UDP协议那个套接字只负责维护列表。本程序中的游戏是人气很旺的网络五子棋,选择它的原因很简单简单直接,不会上瘾,算法简单,易于实现。本程序的可扩展性强,程序员可以根据自己的要求将基于TCP的SOCKET也提到一个类中,然后通过存放到一个以远程端点为KEY相应连接套接字为VALUE的DICTIONARY中,以实现和多人对战的要求。当然也可以利用反射将游戏程序编译成一个类,然后放到一个特定文件夹下,当主窗体运行时,自动加载。除此之3外,对于网络编程的初学者也是很有帮助的。15对“单击对战”的解释本程序采用P2P的架构,即集服务端和客户端的功能于一体,整个设计采用事件驱动,所以非常方便实现。之所以叫做“单机对战游戏的设计与实现”,主要是内嵌的游戏是五子棋游戏,它在用户体验上的感觉基本就是单击鼠标,没有太多别的负责的操作,很是适合小朋友或是老年人玩。2相关软件及技术介绍21开发平台与工具选择211NET简介NET的编程模型将开发语言和运行时平台分离,实现了独立与语言的组件技术,通过不同的运行平台,NET应用可以被扩展到PC、PDA、手机和嵌入式设备上。NET运行平台称为NETFRAMEWORK,是NET平台的基础框架,它创造了一个完全可操控的安全的和特性丰富的应用执行环境,这不但使得应用程序的开发与发布更加简单,并且实现了众多语言的无缝连接。212MICROSOFTVISUALSTUDIO2008简介为了开发NET的应用,微软推出了强大的NET开发工具VISUALSTUDIONET(以下简称VS)作为微软NET战略的重要组成部分。VS包含C、VISUALBASICNET、VISUALCNET等多个开发语言,同时还为第三方语言工具商提供了接口,只要支持CLS(COMMONLANGUAGESPECIFICATION)的语言都可以集成到VS环境中。VS充分发挥了CLR的潜力,为开发者提供了一个统一的集成开发环境和调试器。由于采用统一的类型定义和共享类库,各语言不仅在运行时,而且在设计就可以实现对象级交互。VS不仅提供了WEBSERVICES开发工具,而且提供从WEBSERVICES开发到发布、注册、整合的全过程支持。为创建和部署WEBSERVICES,NET平台采用了一系列的互联网协议,如XML、SOAP、WSDL、UDDL等用于WEBSERVICES的部署、请求和响应。软件人员最关心的还是开发效率的提高,VS人性化的界面和众多工具将成倍提高开发效率。无论针对传统的WINDOWS桌面开发,WEBSERVICES,开发人员都不必在为每种不用的应用重写全部代码,不必为不同的客户设备定制不同的界面。22相关技术简介221使用UDP协议的套接字技术数据报式SOCKET(DATAGRAM)是一种无连接的SOCKET,对应于无连接的UDP服务应用不安全丢失,顺序混乱,在接收端要分析重排及要求重发,但效率高。使用UDP协议的套接字可以用来向许多系统支持的网络发送广播数据包。要实现这种功能,网络本身必须支持广播功能,因为系统软件并不提供对广播功能的任何模拟。广播信息将会给网络造成极重的负担,因为它们要求网络上的每台主机都为它们服务,所以发送广播数据包的能力被限制于那些用显式标记了允许广播的套接字中。广播通常是为了如下两个原因而使用的1一个应用程序希望在本地网络中找到一个资源,而应用程序对该资源的地址又没有任何先验的知识。2一些重要的功能,例如路由要求把它们的信息发送给所有可以找到的本网段的主机。被广播信息的目的地址取决于这一信息将在何种网络上广播。本程序中利用基于UDP协议的套接字向广播地址255255255255发送广播的方式以获得用户列表。222使用TCP协议的套接字技术本程序中的游戏部分使用的是的TCP协议4的套接字进行通讯。众所周之流式SOCKET(STREAM)是一种面向连接的SOCKET,针对于面向连接的TCP服务应用,虽然效率低但由于其安全特性被广泛使用。某一个棋子的位置很可能关系到游戏的胜败,所以使用TCP协议的套接字就可以避免丢包等问题。223SOCKET方法和相关类介绍方法SOCKET创建一个SOCKETBIND绑定一个本地的IP和端口号IPENDPOINTLISTEN让SOCKET侦听传入的连接尝试,并指定侦听队列容量CONNECT初始化与另一个SOCKET的连接ACCEPT接收连接并返回一个新的SOCKETSEND输出数据到SOCKETRECEIVE从SOCKET中读取数据CLOSE关闭SOCKET销毁连接相关类IPADDRESS类包含了一个IP地址IPENDPOINT类包含了一对IP地址和端口号224多线程的使用应用多线程技术最大的误区在于没有分清适合的情况就盲目地使用多线程。除非运行一个多处理器计算机,否则在CPU密集的任务中使用两个线程不能节省多少时间,理解这一点很重要。在单处理器计算机上,让两个线程同时进行100万次运算所花的时间与让一个线程进行200万次运算是相同的,甚至使用两个线程所用的的时间更长,因为要处理另一个线程操作系统必须用一定的事件切换线程,即分配时间片。使用线程带来的负面因素是必须额外考虑线程的并发、同步等线程安全问题,从而使得程序更加复杂而难以维护。然而,有些场合则使用多线程技术非常合适,网络应用开发就是其经常出现的场合之一。当一个线程等待从网络中获取数据,同时其他线程可以继续处理其他的任务,此时可以节省很多时间。本程序中主要就是在针对ACCEPT和RECEIVE这两个会阻塞的方法使用多线程。225事件的使用由于不知道什么时候会有人发送信息给自己,所以程序中应用事件来处理对方的消息,即监听对方发送的消息,如果接受到的消息和自己要处理的一致,则执行注册在其上的方法。例如,A上线的时候,就会向广播地址发送“LOGON”消息,已经在线上的B、C收到此消息后就行执行自定义的ONGETLIST事件,然后此事件调用注册在自己身上的GETLISTMETHOD方法,从而实现将A的IP地址加到自己的用户列表上的功能。226反射调用一个类的私有成员当用户进入对战窗体后,主窗体的用户列表不可用,即一次只能和一个用户进行游戏,(这只是我个人规定)。当用户退出对战窗体后,必须要求主窗体的用户列表重新可用,但我们注意到,窗体类的TREEVIEW类型字段默认是PRIVATE,也就是其它类不可访问的,当然我们可以将其改成INTERNAL或更加访问级别使外界可以访问。但我们有更专业的手段利用反射技术。NET的一个反编译工具REFLECTOR就是利用发射实现的。3可行性分析与需求分析31可行性分析在很早以前五子棋软件就已经被开发出来了,当时的五子棋软件仅提供了5“人机模式”与“双人模式”。“人机模式”是指,人与计算机进行对弈,计算机按照事先编写好的算法程序来进行下棋;“双人模式”是指,两个人通过交替使用同一台计算机来进行下棋。无论是选择哪一种模式,所有的操作都必须在同一台计算机上来往完成,棋局无法在异地计算机之间来进行,故而也叫单机版五子棋软件。32需求分析软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。321功能需求(1)运行游戏自动获得所有在线用户列表并且自己的IP加到所有其他在上用户玩家列表上的功能。(2)显示请求对战提示框。(3)进入对战窗体,其他用户无法再与其游戏。(4)显示玩家退出提示框。(5)能通过网络进行下棋。(6)符合五子棋的基本规则。(7)提供玩家之间的聊天功能。(8)提供玩家之间闪屏功能。(9)一个用户退出程序,所有在线用户列表中自动清除退出用户对应的IP。(10)用户界面需求界面友好、亲切。(11)界面简洁、不花哨。(12)操作界面直观、不繁琐。(13)用户体验良好。4单击对战游戏设计现有的网络编程模式主要分成两类一种是基于C/SCLIENT/SERVER客户机/服务器模式,另一种是B/SBROWSER/SERVER,浏览器/服务器模式;C/S程序具有好的交互性,功能强大,但是客户端必须安装客户端软件,服务器端也要运行,限制了其应用;B/S模式下要求客户端具有浏览器,但浏览器在安全方面有一些限制,交互性与功能有一些限制。由于这两种模式的种种弊端,单击对战游戏采用了P2P网络技术来设计与实现,网络内部使用UDP和TCP协议的SOCKET通过传输层提供的服务进行通讯。41系统设计思想主窗体运行时开启是一个基于UDP协议的套接字用户获得所在网段所用玩家的IP地址,双击一个IP进入对战窗体。同时对方收到请求对战的提示框。对战窗体通过一个SOCKET监听其他用户的连接的连接,一旦有人连接连接,为该用户建立连接并启动一个特定的客户SOCKET,利用该连接不断从客户读取数据,双方的交互。42系统总体设计系统流程图6图1系统流程图5主要功能详细设计51在线用户列表的获得511设计思路用户列表即在线用户的IP地址。由于本程序使用的端口号为1817,所以一般情况下只需要知道本网段内所有运行了本程序的主机的IP就能实现要求。选择广播是最简单且效率最高的手段,接下来考虑的就是应当使用什么协议的SOCKET进行广播。因为只是获得列表是需要连接且要求效率较高,UDP显然在这里最适合。512实现过程界面设计(1)新建一个空解决方案,命名为”GOBANGDEMO”,在解决方案上右击添加一个“新建项目”,在出现的对话框上选择“WINDOWS窗体应用程序”命名为“GOBANG1”。(2)将默认生成的窗体删除,添加一个“WINDOWS窗体”并命名为FRMMAIN,将此窗体的FORMBORDERSTYLE属性设为NONE。(3)拖入一个PANEL控件,命名为PNLWRAP,将它的DOCK属性设为FULL。然后依运行程序通过UDP广播在线用户列表双击某个用户列表中IP,进入对战窗体运行程序通过UDP广播在线用户列表是否同意对战请求开始按钮可用,点击开始进入对战窗体,点击开始按钮点击棋盘是否赢了添加相应的棋子到相应的位置显示对方赢了对话框,重新开始按钮可用显示自己赢了对话框,重新开始按钮可用聊天与发送闪屏聊天与发送闪屏

注意事项

本文(毕业设计(论文)-单击对战游戏的设计与实现.doc)为本站会员(liyun)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(发送邮件至[email protected]或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5