鉴于大家对ASP类作品十分关注,我们编辑小组在此为大家搜集整理了“五子棋游戏(网络版)的设计与开发”一文,供大家参考学习
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
计算机毕业设计 中国民族原创网络游戏为中国网络游戏产业所做出了巨大贡献,民族原创网络游戏已经成为产业发展的主导力量。同样在中国自主研发的民族原创网络游戏已经真正成为中国游戏市场的主导力量。 网络游戏是通过信息网络传播和实现的互动娱乐形式,是一种网络与文化相结合的产业。近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展,对促进我国网络经济和娱乐业的发展、丰富互联网时代人民群众的文化娱乐生活起到了积极作用。 1.1 五子棋游戏现状及研究意义如今网络上的提供免费五子棋游戏,大多数是单机版的,界面单一,功能单一。本系统将实现在网络上对战的五子棋功能;同时还整合多媒体功能;还对在下棋界面美化,以及下棋中可能出现的意外进行了处理。这样五子棋休闲游戏将不在是一个功能单一界面枯燥的无声游戏,而是一个较完善的休闲游戏。 2 游戏开发环境介绍2.1 环境介绍 操作系统:Microsoft Windows XP 程序语言:C++ 开发工具:Visual C++6.0 2.2 Visual C++6.0介绍Visual C++6.0自诞生以来,一直是Windows环境下最主要的应用开发系统之一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以,利用Visual C++可以完成各种各样的应用程序的开发,从底层软件直到上层直接面向用户的软件。而且,Visual C++强大的调试功能的为大型复杂软件的开发提供了有效的排错手段。 进入90年代以来,随着多媒体技术和图形图像技术的不断发展,可视化(Visual)技术得到广泛的重视,越来越多计算机专业人员和非专业人员都开始研究并应用可视化技术。所谓可视化技术,一般是指软件开发阶段的可视化和计算机图形技术和方法的应用。可视化编程就是软件开发阶段的可视化。Visual C++6.0是一个很好的可视化编程工具,使用Visual C++6.0环境来开发Windows应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。 开发环境是程序员同Visual C++的交互界面,通过它程序员可以访问C++源代码编辑器、资源编辑器,使用内部调试器,并且可以创建工程文件。 2.3 OSI模型介绍OSI是Open System Interconnect的缩写,意为开放式系统互联。国际标准组织(国际标准化组织)制定了OSI模型。这个模型把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。1至4层被认为是低层,这些层与数据移动密切相关。5至7层是高层,包含应用程序级的数据。每一层负责一项具体的工作,然后把数据传送到下一层。 如图1-1: 图1-1 OSI模型图 2.4 TCP/IP模型介绍TCP/IP是Transmission Control Protocol/Internet Protocol(传输控制协议/互联网协议)的缩写。TCP/IP协议使用范围极广,许多厂商的计算机操作系统和网络操作系统产品都采用或含有TCP/IP协议。TCP/IP协议已成为目前事实上的国际标准和工业标准。 TCP/IP也是一个分层的网络协议,不过它与OSI模型所分的层次有所不同。TCP/IP从底至顶分为链路层、网络层、传输层、应用层等4个层次。TCP/IP的分层情况如图1-2所示。 图1-2 TCP/IP模型图 2.5 Winsock技术 2.5.1 Winsock编程流程简介下面介绍一下Win32平台的Winsock编程方法。通讯则必须有服务器端和客户端。简单介绍tcp服务器端的大体流程。 int WSAStarup( WORD wVersionRequested , LPWSADATA lpWsAData ) SOCKET socket( int af , int type , int protocol ); 当调用了socket()接口函数创建了一个套接字后,必须把套接字与需要进行通讯的地址建立联系。 int bind(SOCKET s , const struct sockaddr FAR* name , int namelen ) ; struct sockaddr_in { short sin_family ; u_short sin_prot ; struct in_addr sin_addr ; char sin_sero[8] ; } 就包含了需要建立连接的本地的地址,包括地址族,ip和端口信息;Winsock API提供了几个函数,把主机字节转化成网络字节的函数; u_long htonl( u_long hostlong ); u_short htons( u_short hostshort ); 把网络字节转化成主机字节的函数; u_long ntohl( u_long netlong ) ; u_short ntohs( u_short netshort ) ; 当绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。 int listen( SOCKET s ,int backlog ); 如果客户端有了连接请求,还必须使用int accept( SOCKET s , struct sockaddr FAR* addr , int FAR* addrlen )来接受客户端的请求。 现在基本上已经完成了一个服务器的建立,而客户端的建立的流程则是初始化WinSock ,然后创建socket套接字,再使用int connect( SOCKET s , const struct sockaddr FAR* name , int namelen ) 来连接服务端。 当服务器端和客户端建立连接以后,无论是客户端,还是服务器端都可以使用: int send( SOCKET s , const char FAR* buf , int len , int flags ); int recv( SOCKET s , char FAR* buf , int len , int flags ); 函数来接收和发送数据,因为,TCP连接是双向的。 当要关闭通讯连结的时候,任何一方都可以调用int shutdown( SOCKET s , int how ) 来关闭套接字的指定功能。再调用int closesocket( SOCKET s) 来关闭套接字句柄。这样一个通讯过程就算完成了。 2.5.2 CAsyncSocket类介绍微软的MFC把复杂的WinSock API函数封装到类里,这使得编写网络应用程序更容易。CAsyncSocket类逐个封装了WinSock API,为高级网络程序员提供了更加有力而灵活的方法。这个类基于程序员了解网络通讯的假设,目的是为了在MFC中使用WinSock,程序员有责任处理诸如阻塞、字节顺序和在Unicode与MBCS 间转换字符的任务。 CAsyncSocket类编程模型 在一个MFC应用程序中,要想轻松处理多个网络协议,而又不牺牲灵活性时,可以考虑使用CAsyncSocket类,它的效率比CSocket 类要高。CAsyncSocket类针对字节流型套接字的编程模型简述如下: 1、构造一个CAsyncSocket对象,并用这个对象的Create成员函数产生一个Socket句柄。可以按如下两种方法构造: CAsyncSocket sock; //使用默认参数产生一个字节流套接字 Sock.Create(); 或在指定端口号产生一个数据报套接字 CAsyncSocket*pSocket=newCAsyncSocket; int nPort=27; pSocket->Create(nPort,SOCK-DGRAM); 第一种方法在栈上产生一个CAsyncSocket对象,而第二种方法在堆上产生CAsyncSocket对象;第一种方法中Create()成员函数用缺省参数产生一个字节流套接字,第二种方法中用Create()成员函数在指定的端口产生一个数字报套接字。Create()函数的原型为: BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL ); 该函数的参数有: 1)端口,UINT类型。注意:如果是服务方,则使用一个众所周知的端口供服务方连接;如果是客户方,典型做法是接受默认参数,使套接字可以自主选择一个可用端口。 2)socket 类型,可以是SOCK-STREAM(默认值,字节流)或SOCK-DGRAM(数据报)。 3)socket的地址,例如"ftp.gliet.edu.cn"或"202.193.64.33"。 2、如是客户方程序,用CAsyncSocket∷Connect()成员函数连接到服务方;如是服务方程序,用CAsyncSocket∷Listen()成员函数开始监听,一旦收到连接请求,则调用CAsyncSocket∷Accept()成员函数开始接收。注意:CAsyncSocket ∷Accept()成员函数要用一个新的并且是空的CAsyncSocket对象作为它的参数,这里所说的"空的"指的是这个新对象还没有调用Create()成员函数。 3、调用其他的CAsyncSocket类的Receive()、ReceiveFrom()、Send()和SendTo()等成员函数进行数据通信。 4、通讯结束后,销毁CAsyncSocket对象。如果是在栈上产生的CAsyncSocket对象,则对象超出定义的范围时自动被析构;如果是在堆上产生,也就是用了new这个操作符,则必须使用delete操作符销毁CAsyncSocket 对象。 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |