四国军棋游戏毕业设计Word下载.docx
《四国军棋游戏毕业设计Word下载.docx》由会员分享,可在线阅读,更多相关《四国军棋游戏毕业设计Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
本文详细介绍了一个windows环境下的局域网四国军棋游戏的设计和实现。
该游戏使用Socket编程实现在局域网中的通信;
使用windows提供的GDI+图形设备接口实现界面。
本游戏采用C/S结构设计,以其中一个玩家作为服务器,其他玩家作为客户机连接到服务器。
游戏最终实现了局域网中创建游戏、加入游戏和协同游戏的功能,可以实现在局域网中联机对战的要求。
关键词:
四国军棋;
联机对战;
套接字;
GDI+
Abstract
ThispaperdescribesthedesignandimplementationofawindowsoperatingsystemLANSiguojunqigame.ThegameusestheSocketProgramminginLANcommunication;
usewindowsGDI+graphicsdeviceinterfacetoachievetheinterface.ThisgameusestheC/Sstructuredesign,asaserverononeoftheplayers,otherplayersconnecttotheserverasaclient.ThegamehasfinallyrealizedtheLANcreategames,jointhegameandcollaborativegame,youcanachievetherequirementsofonlinegamingintheLAN.
Keywords:
Siguojunqigame;
Onlinegaming;
Socket;
GDI+
1引言
1.1问题概述
1.1.1问题的来源
四国军棋游戏是一款非常好玩的游戏,它能够锤炼人的记忆、思维、判断和心理。
随着互联网的普及,网上军棋更是成为男女老少都喜爱的一款休闲游戏。
目前就有QQ四国军棋、联众四国军棋等。
虽然很容易就能网上对战,但是对于处于校园网的我们来说,网络确实不好,经常出现掉线的问题,因此就想到做一个局域网使用的四国国军棋,以满足诸位棋友的需求。
1.1.2目的和意义
对Socket网络编程和gdi+图形设备接口进行分析、探索和实践。
通过gdi+编程,提供友好的用户操作界面,通过Socket编程,使用TCP和UDP协议,实现局域网内的数据传递,实现了多人协同游戏的目的。
以此亦可了解C/S结构程序的基本实现方式。
1.1.3国内外研究现状
C/S结构
,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销。
客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
C/S结构如图1-1所示。
局域网游戏也大多采用此结构进行设计,即以一台机子作为服务器,其他机子作为客户机,客户机连接到服务器,之后就可以在局域网中进行数据交换。
图1-1C/S结构
1.2问题剖析
1.2.1主要问题
在开发局域网游戏时,首先要解决局域网中的通信。
包含了如何在局域网中找到服务器?
如何连接到服务器?
如何进行数据交换?
在解决以上问题的基础上,根据不同的游戏编写不同的游戏逻辑处理类,在该逻辑处理类中实现了对应的游戏逻辑,如实例中的军棋,则实现相互之间的对弈等功能。
此外还需解决游戏界面的显示,如军棋中的棋子显示,按钮定位等。
1.2.2难点和关键
1、局域网中有多个服务器时,如何查找并区分出来。
2、客户端程序负责处理游戏的显示和操作界面,客户端具有简单的逻辑处理功能,同时负责接收发送与服务器端交互的数据包。
3、服务器程序负责处理服务器端逻辑、游戏逻辑以及客户端之间的网络信息传递,同时服务器端还要承担客户端数据的接收、转发工作。
1.2.3思路和方法
关于解决客户端如何在局域网中找到服务器,可以让服务器在局域网中发送广播,将自己的IP地址等信息发送出去,客户端就可通过接收广播消息,寻找到服务器的位置,同时还可根据IP地址将不同的服务器区分出来。
以此可连接到不同的服务器,继而进行服务器与客户端之间的通信。
游戏界面的显示可以通过使用gdi+图形设备接口,根据一个二维数组标识棋盘的状态,根据二维数组,使用gdi+画出棋子。
2可行性分析和需求分析
2.1可行性分析
2.1.1技术可行性分析
本程序的开发基于C/S模式,包含客户机和服务器两部分,前者主要负责简单的逻辑处理和前台界面的显示,后者主要负责游戏逻辑判断及数据交互。
网络通信可使用TCP/IP协议,采用Socket套接字编程技术;
界面显示可使用GDI+图形设备接口画出界面。
1、TCP/IP协议
TCP/IP协议(TransmissionControlProtocol/InternetProtocol,传输控制协议/网际协议)是Internet中计算机进行通信的标准,其命名起源于该组协议中最重要的两个协议TCP和IP。
任何关于Internet协议的讨论必须由TCP/IP开始,它也是其他所有协议的基础。
TCP/IP协议是Internet网络的共同语言,主机之间必须利用TCP/IP互通信息。
TCP/IP实际上就是在物理网上的一组完整的协议。
其核心部分是传输层协议(TCP/UDP)、网络层(IP)和物理接口层,这三层通常在操作系统内核中实现。
TCP/UDP层提供了传输层服务,而IP协议提供了网络层服务。
TCP/IP协议是一个四层协议,其结构如图2-1所示。
图2-1TCP/IP协议体系结构图
2、WindowsSOCKET编程
WindowsSocket(简称 WinSock)是在Win32平台上访问基层网络协议的接口。
在不同的Win32平台上,WindowsSocket以不同的方式存在着,作为网络编程接口而不是协议存在。
WindowsSockets编程的基本模式,要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。
使用Socket进行网络通信一般有两种方式:
基于面向连接的流方式和基于无连接的数据报方式。
面向连接的的流方式调用过程如图2-2所示。
图2-2面向连接的流方式调用过程
3、GDI+图形设备接口
GDI+是WindowsXP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。
顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,WindowsXP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。
作为图形设备接口的GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相互隔离.从而使开发人员编写设备无关的应用程序变得非常容易。
从上述分析可以看出开发次程序,在技术上是可行的。
2.1.2经济可行性分析
由于本程序所要求的硬件(计算机及相关硬件)和软件环境(vs2008),市场上都容易购买到或从相关网站下载,而据不完全调查统计本专业电脑拥有率是接近100%,系统成本主要集中在程序的开发与维护上,对编程者不会造成过重的经济负担。
由于学校中校园网的存在,运行成本几乎可以忽略不计。
而一旦本程序投入使用,可使同学们免受校园网与外网连接时网速过慢,经常掉线的问题。
让我们可以尽情感受四国军棋的魅力。
与微小的开发成本比较,能获得好的游戏体验,获得好的心情自然是值得的,所以从经济方面来说,开发此程序是可行的。
2.1.3操作可行性分析
本程序实现了可视化界面,界面友好,操作简单,布局简洁。
本程序游戏规则和拥有较高人气的QQ四国军棋相同,只要玩过QQ四国军棋的很容易就可以上手。
在游戏操作上,只需轻点鼠标即可完成所有操作,对使用本程序的人员的计算机专业知识几乎没有要求,只需接触过计算机的人员,均能很快的熟悉本程序的操作。
2.1.4时间可行性分析
本程序的设计与完成大概分为四个阶段:
第一阶段,做需求分析,这个阶段大概花费1周时间,主要对系统要实现的功能进行分析判断,并决定实现每个基本功能所要采用的语言;
第二阶段,掌握所需技术,这个阶段大概花费2周时间,主要对本程序所采用的语言进行一些初步的了解,并查阅相关资料,对相关的算法和函数有初步的了解、认识、掌握;
第三个阶段,这个阶段是整个系统所费时间最长的阶段,大概需要4周时间,主要实现系统软件程序的编码、调试、测试,完成一个初级的版本;
第四个阶段,修改完善程序,大概需要3周时间。
因此从时间方面上讲开发此系统是可行的。
2.1.5结论
经过对本程序实现的技术、经济、操作、时间的可行性进行分析。
可得出结论:
本系统是可以实现的。
2.2需求分析
1)作为一款局域网游戏,首先应该具备的基本功能就是能够在局域网间连接;
要求能够实现,局域网中的机子能够创建游戏,即作为服务器,也能够加入游戏,即作为客户机连接到已创建游戏的服务器上。
2)四国军棋是一款多人协作游戏,因此应该要实现多人协同游戏的能力,即各客户机上能够进行数据同步。
3)为了方便,要求能够保存最近的一次游戏布局,要求游戏界面能够简洁些,游戏操作能够方便简单些。
4)想要有好的游戏体验,响应速度要求比较快,不会出现长时间等待现象,同时应具有良好的稳定性、可靠性和健壮性,可以控制一些不确定因素。
5)需实现四国军棋的游戏规则,本游戏将游戏规则定为和QQ四国军棋一样。
3总体设计
3.1总体设计的框架
图3-1总体框架图
3.2模块功能概述
1、入口程序及全局变量:
程序的入口函数WinMain
,还有定义一些结构体和全局变量,主要功能是程序循环和结束条件的判断及保存一些全局使用的变量。
2、创建窗口类:
对windows创建窗口的API进行简单的封装,实现程序基本窗口的创建。
3、网络通信类:
对Socket发送UDP广播消息
、接收UDP广播消息、发送TCP消息
、接收TCP消息进行简单的封装;
实现局域网中的数据交换。
4、大厅窗口消息处理类:
主要是大厅界面的实现,还有根据用户在大厅的不同操作启动相应的线程。
5、游戏窗口消息处理类:
主要是游戏界面的实现,还有根据用户的不同操作做出不同的响应。
6、线程处理类:
线程处理函数都集中在这里,可以根据不同功能,在启动线程时,调用不同的线程处理函数。
7、游戏逻辑处理类:
包含了棋子的定位,棋子能否启动的判断,棋子命中,选中与取消棋子的判断等相关功能的处理。
8、服务端网络消息处理类:
处理从客户端接收到的消息,主要功能是判断吃子逻辑,并根据不同的结果返回不同的消息。
9、客户端网络消息处理类:
处理从服务端接收到的消息,主要功能是根据吃子结果,对棋盘进行相应的处理。
3.3关键算法
3.3.1双缓冲技术绘图
在图形图象处理编程过程中,当数据量很大时,绘图