说明.doc

JSJ03-088@vc++四国军棋系统设计与实现(源代码+论文)

收藏

资源目录
跳过导航链接。
JSJ03-088@vc++四国军棋系统设计与实现(源代码+论文).zip
JSJ03-088@vc++四国军棋系统设计与实现(源代码+论文)
说明.doc---(点击预览)
vc++四国军棋系统设计与实现.doc---(点击预览)
数据库
user_Data.MDF
user_Log.LDF
毕业论文
源程序
CGameHallFrame
ReadMe.txt---(点击预览)
Debug
Release
res
CGameHallFrame.aps
CGameHallFrame.cpp
CGameHallFrame.dsp
CGameHallFrame.dsw
CGameHallFrame.h
CGameHallFrame.ncb
CGameHallFrame.opt
CGameHallFrame.plg
CGameHallFrame.rc
CGameHallFrameDoc.cpp
CGameHallFrameDoc.h
CGameHallFrameView.cpp
CGameHallFrameView.h
Client.cpp
Client.h
ClientProtocol.cpp
ClientProtocol.h
GameDlg.cpp
GameDlg.h
HtmlViewEx.cpp
HtmlViewEx.h
Login.cpp
Login.h
MainFrm.cpp
MainFrm.h
Register1.cpp
Register1.h
Resource.h
StdAfx.cpp
StdAfx.h
TableView.cpp
TableView.h
TakeGame.cpp
TakeGame.h
Wave.cpp
Wave.h
CServerFrame
ReadMe.txt---(点击预览)
Debug
Release
res
CServerFrame.aps
CServerFrame.clw
CServerFrame.cpp
CServerFrame.dsp
CServerFrame.dsw
CServerFrame.h
CServerFrame.ncb
CServerFrame.opt
CServerFrame.plg
CServerFrame.rc
CServerFrameDoc.cpp
CServerFrameDoc.h
CServerFrameSet.cpp
CServerFrameSet.h
CServerFrameView.cpp
CServerFrameView.h
MainFrm.cpp
MainFrm.h
Resource.h
Server.cpp
Server.h
ServerProtocol.cpp
ServerProtocol.h
StdAfx.cpp
StdAfx.h
客户端.exe
服务器.exe
压缩包内文档预览:
预览图 预览图 预览图 预览图
编号:508139    类型:共享资源    大小:3.29MB    格式:ZIP    上传时间:2015-11-10 上传人:QQ28****1120 IP属地:辽宁
12
积分
关 键 词:
毕业设计计算机
资源描述:
JSJ03-088@vc++四国军棋系统设计与实现(源代码+论文),毕业设计计算机
内容简介:
湘潭大学 毕业设计说明书 题 目: 网络游戏 -四国军棋 学 院: 信息工程学院 专 业: 计算机科学与技术 学 号: 2002080624 姓 名: 周伟斌 指导教师: 郭云飞 完成日期: 2006 年 5 月 nts中文摘要 网络游戏四国军棋 摘要: 本文详细介绍了一个在 Windows 环境下的基于游戏大厅框架的四国军棋网络游戏的设计和实现。该游戏可在局域网上联机对战,实现了游戏、聊天、积分等功能。该软件在 Windows 环境下用 VC+6.0 实现。 关键词: VC+ , 网络协议,游戏协议,套接字,军棋。 nts湘 潭 大 学 毕业论文(设计)任务书 论文(设计)题目 网络游戏 -四国军棋 学 号 2002080624 学生姓名 周伟斌 专 业 计算机科学与技术 指导教师姓名: 郭云飞 系主任: 郭云 飞 一、主要内容及基本要求 基本要求: 1 熟悉网络游戏的基本框架。 2 熟悉网络游戏的建模与实现。 3 熟悉 socket 编程,联网模式的实现。 4 熟悉简单游戏的制作。 5 熟悉 VC+。 主要内容: 1游戏大 厅。 2军棋游戏联网对战。 3用数据库保存玩家数据。 4游戏中的聊天。 二、重点研究的问题 1对网络游戏的设计、架构、模式进行分析、探索和实践。 2对网络游戏的存在的问题进行分析并探索解决的方法。 3对游戏协议的设计和分析。 4游戏动画的制作。 nts三、进度安排 各阶段完成的内容 起止时间 1 查阅资料 02/01/2006 03/05/2006 2 需求分析 03/05/2006 03/15/2006 3 概要设计 03/10/2006 03/15/2006 4 详细设计 03/20/2006 04/01/2006 5 编码 04/01/2006 04/26/2006 6 测试 04/26/2006 04/28/2006 7 撰写文档 04/28/2006 05/01/2006 8 整理文档、打印 05/01/2006 05/15/2006 四、应收集的资料及主要参考文献 1 朗锐 Visual C+数据库开发基础及实例解析第一版北京:机械工业出版社 2005 2 苏羽 , 王媛媛 Visual C+网络游戏建模与实现第一版北京:北京科海电子出版社 2003 3 清华天则工作室 网络游戏从入门到精通 第一版北京:内蒙古人民出版社 2002 4 荣钦科技 Visual C+游戏设计第一版北京:科海电子出版社 2003 5 史银雪,陈洪,王荣静 3D 数学基础:图形与游戏开发第一版北京:清华大学出版社 2005 . 6 王小虎 ,靳自愚译 C 语言计算机游戏程序设计第一版北京:科学出版社 1995 7 http:/www.M/china/msdn/ 8 荣钦科技游戏设计概论第一版北京:科海电子出版社 .2003 9 潘志翔 ,岑进锋黑客攻防编 程解析第一版北京:机械工业出版社 ,2003 10 贾斌 .网络编程技巧与实例 . 第一版 .北京:人民邮电出版社 ,2001 nts文献综述 - 1 - 文献综述 信息产业的高速发展,网络技术的不断更新,网络游戏的迅猛发展,越来越多的人把精力投入到网络游戏。为什么网络游戏能吸引如此多的人?网络游戏有着他独特的魅力。 网络游戏是一个平台,在这个平台上人们可以尽情去享受游戏人生的真正的体验,虚幻和现实离得很近 。 网络游戏是另一种现实生活,现实生活也是另一种网络游戏。人的生存空间本来就是一个网络,没有了这样的网络你又将如何生存?这两者之间很难区分,就看我们大家怎么去做了。 随着 Internet 的普及,网络游戏已经成为大家耳濡目染的新生事物。网络游戏从出现到现在的发展 的时间很短,但是其发展速度却非常之快。 网络游戏的体系结构 ,包括客户机程序、服务器程序、数据库服务器。 网络游戏通常的运行方式有一个或多个游戏服务器启动特定游戏服务。游戏者到游戏网站上下载客户端程序并且申请游戏账号 ID。然后启动客户端程序通过某种网络协议连接游戏服务器。客户端程序负责处理客户端显示和操作界面,具有简单的逻辑处理功能,同时负责接收发送与服务器端交互的数据包。服务器程序负责处理服务器端逻辑、游戏逻辑、客户之间的网络信息传递,以及数据库之间的数据读取保存工作。同时服务器端还要承担客户端数据的接收、 转发工作。网络游戏常用的网络协议有适用于Internet 的 TCP/IP 协议、适用局域网的 IPX 协议。 网络游戏程序开发一般采用 Microsoft Visual C+作为编程环境,分为客户端程序和服务器端程序。采用 VC 作为网络游戏的开发工具具有许多的优点,如采用消息通信机制,提供许多方便使用的 MFC 类,在通信和界面实现方面比较地方便。客户端程序主要负责显示用户界面,为用户提供赏心悦目的客户操作界面,通过客户端与服务器之间的网络传递数据,实现了多人协同游戏的目的。 在开发网络游戏时,首先要建立底层的网络通信类 ,利用网络通信类连接构建客户服务器之间的 TCP/IP 连接,然后在该连接的基础上利用自设定的协议进行客户端登录、进行游戏等操作。在以上协议的基础上,根据不同的游戏编写不同的游戏逻辑处理类,在该逻辑处理类中实现了对应的游戏逻辑,以军棋为例,则实现相互之间的对弈等nts文献综述 - 2 - 功能。同时在服务器端还需要和数据库服务器交互,用于读取或保存客户信息(如用户积分、密码、个人资料等数据)。 网络游戏行业内的公司基本上可以分为三类,第一类是开发商,第二类是运营商,第三类是渠道商。围绕这三类企业,又出现了不少的配套企业,比如软件开发公司、 美术设计公司、玩具制造商等等,传统的 IT 公司和电信运营商也正在从其中获得越来越大的收益。可以说,与网络游戏业相关的产业链正在形成中。 首先获益的就是电信运营商。来自三大门户的统计表明,网民用于搜索和阅读新闻的时间基本上不超过两个小时,而玩游戏,最少的停留时间是 3.5 小时, 5 6 个小时的比较常见,玩 7 8 个小时的也不少,甚至达到 10 个小时以上的玩家也正在增多。而每 1 元钱的网络游戏收入,能带来 6 倍的电信附加收入。 其次,硬件提供商正在从网络游戏业中获得新的销售增长。据了解,网络游戏的玩家对电脑配置的要求比较高, 而且更新速度比较快。正是这样一个群体,给电脑销售商提供了新的用户群,而且是非一次性消费的用户,这对未来 PC 业的竞争带来了新的变化。 获益最为明显的则是渠道商。根据目前的形势,网络游戏业里出现类似 “ 神州数码 ” 这样的大型渠道商只是时间问题。这种令人惊异的发展速度引来了投资商的关注,也带动了一些非 IT 产业的发展,比如卡通产品制造商、配套软件开发商等等,都以渠道为支点,开发相关的产品,将网络游戏的产业链做得越来越长。 面对如此大的市场,国内众多商家纷纷进入,希望能再现一个 “ 盛大 ” 一样的传奇。自 2002 年初以来,网络 游戏业发展得很快,仅以运营来讲,从去年年初的几家大的游戏运营商分割市场,到现在由近百家运营商共同来竞争市场,整个网络游戏运营业可谓是百家争鸣。这种爆发式的增长使得总的比较稳定的持续上升状态。很多新产品上市的时候,用户数都能获得比较快速的增长收费用户和免费用户的发展呈现出,不过,新品的上市对同类竞争产品带来的影响并不大,甚至带动了周边产品和竞争产品的增长。这说明整个市场在稳定发展,市场蛋糕正在扩容。现在可以做出的一个基本判断是,整个市场的用户数正在以 5% 10%的速度逐季度增加。 进入门槛低,而回报周期短利润 又丰厚,一下子让网络游戏产业带上了 “ 暴利 ” 产业的光环。而 “ 暴利 ” 的结果,必然是千军万马一起 “ 暴入 ” 。一年多来,国内网络游戏业发生了井喷式的发展奇观。但市场再大,容量终究有限。再 “ 暴利 ” 的行业,有多nts文献综述 - 3 - 家分食,也会变得 “ 无利可图 ” 。业内分析,能在这个新兴的行业里赚到钱的人不会太多。虽然中国互联网络信息中心( CNNIC)最新的调查显示,我国网民数量已经达到了6800 万,但事实上,消费者群体决定了市场上最多可以容纳 25 30 家运营商和 50 款左右的网络游戏。 与网络游戏业迅猛的发展速度同样引人关注的是,网络游戏产业中存 在着巨大的风险。而且网络游戏业是所有行业中惟一一个兼有恶性竞争风险、专业风险、政策风险和社会风险等四大风险的行业。 网络游戏的发展几乎与计算机网络和软硬件技术的发展基本保持同步的。首先,网络游戏无论是开发过程还是运行过程,对它所依赖的计算机硬件配置的要求较高。尤其是游戏开发所使用的设备一般都需要非常好的图像图形工作站,而架设游戏的服务器也需要非常高的配置,否则无法应付众多玩家使用时所产生的巨大负荷。作为网络游戏的客户端,玩家也需要购买速度更快、配置更优良的电脑,以便跑动功能日渐齐全、画面更加华丽 的新网络游戏 。因此,在硬件方面,一般不存在严重影响本土网络游戏发展的问题。 网络游戏终究是商品而不是艺术品,赚钱永远是厂商追求的目标,在竞争之下,一款网游的寿命只有短短一年或是两年,短命必然带来短视,用游戏性来吸引玩家无疑是投入大,风险大的。加长练功时间,靠长期升级设置兴奋点和依靠赌博要素可以用最小的代价换取玩家的在线时间,被每个制作人所重视。(实际上不这么做也不可能,因为韩国人已经这么做了,沉沦或是失败,国内的制作者只有两种选择!)同时由于部分国内玩家素质有限,复杂的细致设定,自由自主的世界也无法让他们玩下去,只有画 面精彩,韩式风格的游戏才受欢迎。所以不论从内从外,网络游戏的游戏性,虚拟性已经开始降低。 游戏性的降低,练功的繁琐必然会带来玩家的反应,选择外挂就是很自然的选择,外挂作者大发其财。但外挂固然能跳过游戏繁琐的练功时间,也同时跳过了网络游戏最重要的一步,就是人与人的交互。倘若一个游戏人来人往,但是都是机器在代练,毫无人气,又如何构成丰富多彩的游戏世界呢?于是反外挂的呼声自从网络游戏开始起就没有断过。但前面已经说了,短命必然短视,而有短视的厂商,就有短视的玩家,外挂在一片打压声中发展壮大,这可谓是网络游戏的原罪 。 知识产权问题日益严重 。 网络游戏的发展日新月异, 2001 年还红极一时的回合战nts文献综述 - 4 - 斗, 2002 年就已经被即时战斗的主流取代。 2001 年还被人交口称赞的画面, 2002 年就可能不再受宠,网络游戏漫长的开发周期带来无比的风险,厂商选择现成而先进时髦的韩日游戏代理就是很自然的选择。 但是韩国日本制造商也不是省油的灯,播种时期还能同舟共济,收获时期就要跳出来抢蛋糕了,为了能争夺利润,国内代理商和国外制作商的矛盾日益严重,盛大和 Actoz的纠纷就是最典型的例子。可以预见,随着网游利润的增加,韩国人卡我们脖子的现象会更加严重。 这个时候幻灵游侠大话西游的出现就显得异常珍贵。 不仅仅是钱的问题,国外引进游戏就好比餐厅在东北而厨师在海南,资料缺乏,交流困难,修改反馈速度慢,几乎成为不可克服的病症。这常常引起玩家的不满。相对而言,国产游戏就不仅仅只有国货的心理优势,及时修改,即时反馈,灵活机动的作风往往能留住玩家的心。 所以,为了能提供更高质量的娱乐服务,振兴中国的网络产业,网游自主研发势在必行。 nts文献综述 - 5 - 参考文献 1 朗锐 Visual C+数据库开发基础及实例解析第一版北京:机械工业出版 社2005 2 苏羽 王媛媛 Visual C+网络游戏建模与实现第一版北京:北京科海电子出版社 2003 3 清华天则工作室 网络游戏从入门到精通 第一版北京: 内蒙古人民出版社 2002 4 荣钦科技 Visual C+游戏设计 第一版 北京 : 科海电子出版社 2003 5 史银雪,陈洪,王荣静 3D 数学基础:图形与游戏开发 第一版 北京 : 清华大学出版社 2005 6 王小虎 ,靳自愚译 C 语言计算机游戏程序设计 第一版 北京 : 科学出版社 1995 7 http:/www.M/china/msdn/ 8 荣钦科技 游戏设计概论 第一版 北京 : 科海电子出版社 2003 9 潘志翔 ,岑进锋黑客攻防编程解析第一版北京:机械工业出版社 ,2003 10 贾斌 .网络编程技巧与实例 . 第一版 .北京:人民邮电出版社 ,2001 nts 湘潭大学 毕业设计说明书 题 目: 网络游戏 -四国军棋 (文献综述) 学 院: 信息工程学院 专 业: 计算机科学与技术 学 号: 2002080624 姓 名: 周伟斌 指导教师: 郭云飞 完成日期: 2006 年 5 月 nts nts毕业设计(论文)答辩申请表 院(系) 信息工程学院 专业 计算机科学与技术 年级 2002 级 申请日期 2006 年 5 月 16 班级 二 班 学号 2002080624 姓名 周伟斌 题目名称 网络游戏 -四国军棋 指导老师 郭云飞 毕业设计说明书(论文) 装订 是 否 电子文档 已交 未交 上交时间 接收人签字 符合 规范 是 否 源程序 已交 未交 上交时间 接收人签字 鉴定意见表 有 无 说明书 已交 未交 上交时间 接收人签字 申请理由 本人按照毕业设计任务书的要求, 完成网络游戏 -四国军棋的分析、设计和实现 。 已实现完整的联网对弈功能 , 游戏大厅, 四国军棋 游戏运行界面 ,游戏聊天等功能。 现已写出了规范、整洁、符合要求的毕业设计说明书,特申请毕业答辩,请老师批准为感 。 自评成绩 ( 1)优秀;( 2)良好;( 3)中等( 4);及格( 5)不及格 指导老师意见 签名: 日期: 注: 1、题目名称栏应填写题目的主标题和副标题。 2、“是、否”,“已交、未交”栏目以及自评成绩栏视本人情况在相应项打“”。 3、在申请理由栏简要填写毕业设计情况。 4、没有填写本申请表者,视同放弃答辩。申请表填写完毕后交指导老师, nts Xiangtan University Graduation project specification Title: Network game - Junqi College : College of Information Engineering Speciality : Computer Science & Technology Student NO. : 2002080624 Student Name : Weibin Zhou Tutor : Yunfei Guo Finish date : May 2006 nts英文摘要 Network Game - junqi Abstract: This article introduces the design and realization of a network game named junqi in Chinese, which runs under the game hall architecture. The game can run on LAN with the functions playing game, chatting, score. And the program is made in the Windows and Visual C+6.0 environment. Key words: VC+ ; Network Protocol; Game Protocol; Socket; junqi. nts湘潭大学毕业论文(设计)评阅表 学号 2002080624 姓名 周伟斌 专业 计算机科学与技术 论文(设计)题目 网络游戏四国军棋 评价项目 评 价 内 容 选 题 1.是否符合培养目标,体现学科、专业特点和教学计划的基本要求,达到综合训练的目的; 2.难度、份量是否适当。 能 力 1.是否有查阅文献、综合归纳资料的能力; 2.是否有综合运用知识的能力; 3.是否 具备研究方案的设计能力、研究方法和手段的运用能力; 4.是否具备一定的外文与计算机应用能力; 5.工科是否有经济分析能力。 论文质量 1.立论是否正确,论述是否充分,结构是否严谨合理;实验是否正确,设计、计算、分析处理是否科学;技术用语是否准确,符号是否统一,图表是否完备、整洁、正确,引文是否规范; 2.文字是否通顺,有无观点提炼,综合概括能力如何; 3.有无理论价值或实际应用价值,有无创新之处。 工作量 工作量是否饱满,含论文篇幅、图纸等是否达到规定要求。 综 合 评 价 nts 湘 潭 大 学 毕业论文(设计)鉴定意见 学 号: 2002080624 学生姓名: 周伟斌 专 业: 计算机科学与技术 毕业论文(设计说明书) 55 页 图 表 17 张 论文(设计)题目: 网络游戏四国军棋 内容提要: 本文 完 成 了基于游戏大厅模式的四国军棋的设计、分析和实现。 完成 了网络游戏服务器、 客户机模式的设计与实现。 完成 了游戏大厅的设计,四国军棋游戏的设计,游戏音乐的制作、 游戏协议的设置、数据库服务器的设置,以及基于 TCP/IP协议下 socket异步模式的设计与 实现。 在 window平台下, 探索并使用基于 Visual C+开发网络游戏的基本方法, 用 Visual C+ 实现了 四 国军棋游戏。 完成 了基于 SDI框架的游戏大厅的设计与实现,基于对 话框的游戏 界 面 的设计与实现,以及游戏设计中常用的一些实现方法,如内存作图、矩阵变 换等。 nts 指导教师评语 指导教师姓名(职称): 年 月 日 答辩简要情况及评语 答辩小组组长: 年 月 日 答辩委员会意见 经答辩委员会讨论, 同意 该毕业 论文(设计) 成绩评定为 答辩委员会主任: 年 月 日 nts=MICROSOFT FOUNDATION CLASS LIBRARY : CGameHallFrame=AppWizard has created this CGameHallFrame application for you. This applicationnot only demonstrates the basics of using the Microsoft Foundation classesbut is also a starting point for writing your application.This file contains a summary of what you will find in each of the files thatmake up your CGameHallFrame application.CGameHallFrame.dspThis file (the project file) contains information at the project level andis used to build a single project or subproject. Other users can share theproject (.dsp) file, but they should export the makefiles locally.CGameHallFrame.hThis is the main header file for the application. It includes otherproject specific headers (including Resource.h) and declares theCCGameHallFrameApp application class.CGameHallFrame.cppThis is the main application source file that contains the applicationclass CCGameHallFrameApp.CGameHallFrame.rcThis is a listing of all of the Microsoft Windows resources that theprogram uses. It includes the icons, bitmaps, and cursors that are storedin the RES subdirectory. This file can be directly edited in MicrosoftVisual C+.CGameHallFrame.clwThis file contains information used by ClassWizard to edit existingclasses or add new classes. ClassWizard also uses this file to storeinformation needed to create and edit message maps and dialog datamaps and to create prototype member functions.resCGameHallFrame.icoThis is an icon file, which is used as the applications icon. Thisicon is included by the main resource file CGameHallFrame.rc.resCGameHallFrame.rc2This file contains resources that are not edited by Microsoft Visual C+. You should place all resources not editable bythe resource editor in this file./For the main frame window:MainFrm.h, MainFrm.cppThese files contain the frame class CMainFrame, which is derived fromCFrameWnd and controls all SDI frame features.resToolbar.bmpThis bitmap file is used to create tiled images for the toolbar.nts The initial toolbar and status bar are constructed in the CMainFrameclass. Edit this toolbar bitmap using the resource editor, andupdate the IDR_MAINFRAME TOOLBAR array in CGameHallFrame.rc to addtoolbar buttons./AppWizard creates one document type and one view:CGameHallFrameDoc.h, CGameHallFrameDoc.cpp - the documentThese files contain your CCGameHallFrameDoc class. Edit these files toadd your special document data and to implement file saving and loading(via CCGameHallFrameDoc:Serialize).CGameHallFrameView.h, CGameHallFrameView.cpp - the view of the documentThese files contain your CCGameHallFrameView class.CCGameHallFrameView objects are used to view CCGameHallFrameDoc objects./Other standard files:StdAfx.h, StdAfx.cppThese files are used to build a precompiled header (PCH) filenamed CGameHallFrame.pch and a precompiled types file named StdAfx.obj.Resource.hThis is the standard header file, which defines new resource IDs.Microsoft Visual C+ reads and updates this file./Other notes:AppWizard uses TODO: to indicate parts of the source code youshould add to or customize.If your application uses MFC in a shared DLL, and your application is in a language other than the operating systems current language, youwill need to copy the corresponding localized resources MFC42XXX.DLLfrom the Microsoft Visual C+ CD-ROM onto the system or system32 directory,and rename it to be MFCLOC.DLL. (XXX stands for the language abbreviation.For example, MFC42DEU.DLL contains resources translated to German.) If youdont do this, some of the UI elements of your application will remain in thelanguage of the operating system./nts=MICROSOFT FOUNDATION CLASS LIBRARY : CServerFrame=AppWizard has created this CServerFrame application for you. This applicationnot only demonstrates the basics of using the Microsoft Foundation classesbut is also a starting point for writing your application.This file contains a summary of what you will find in each of the files thatmake up your CServerFrame application.CServerFrame.dspThis file (the project file) contains information at the project level andis used to build a single project or subproject. Other users can share theproject (.dsp) file, but they should export the makefiles locally.CServerFrame.hThis is the main header file for the application. It includes otherproject specific headers (including Resource.h) and declares theCCServerFrameApp application class.CServerFrame.cppThis is the main application source file that contains the applicationclass CCServerFrameApp.CServerFrame.rcThis is a listing of all of the Microsoft Windows resources that theprogram uses. It includes the icons, bitmaps, and cursors that are storedin the RES subdirectory. This file can be directly edited in MicrosoftVisual C+.CServerFrame.clwThis file contains information used by ClassWizard to edit existingclasses or add new classes. ClassWizard also uses this file to storeinformation needed to create and edit message maps and dialog datamaps and to create prototype member functions.resCServerFrame.icoThis is an icon file, which is used as the applications icon. Thisicon is included by the main resource file CServerFrame.rc.resCServerFrame.rc2This file contains resources that are not edited by Microsoft Visual C+. You should place all resources not editable bythe resource editor in this file./For the main frame window:MainFrm.h, MainFrm.cppThese files contain the frame class CMainFrame, which is derived fromCFrameWnd and controls all SDI frame features.resToolbar.bmpThis bitmap file is used to create tiled images for the toolbar.nts The initial toolbar and status bar are constructed in the CMainFrameclass. Edit this toolbar bitmap using the resource editor, andupdate the IDR_MAINFRAME TOOLBAR array in CServerFrame.rc to addtoolbar buttons./AppWizard creates one document type and one view:CServerFrameDoc.h, CServerFrameDoc.cpp - the documentThese files contain your CCServerFrameDoc class. Edit these files toadd your special document data and to implement file saving and loading(via CCServerFrameDoc:Serialize).CServerFrameView.h, CServerFrameView.cpp - the view of the documentThese files contain your CCServerFrameView class.CCServerFrameView objects are used to view CCServerFrameDoc objects./For an ODBC database app:CServerFrameSet.h, CServerFrameSet.cpp - the recordsetThese files define and implement the recordset class CCServerFrameSet,which performs database query and collection./Other standard files:StdAfx.h, StdAfx.cppThese files are used to build a precompiled header (PCH) filenamed CServerFrame.pch and a precompiled types file named StdAfx.obj.Resource.hThis is the standard header file, which defines new resource IDs.Microsoft Visual C+ reads and updates this file./Other notes:AppWizard uses TODO: to indicate parts of the source code youshould add to or customize.If your application uses MFC in a shared DLL, and your application is in a language other than the operating systems current language, youwill need to copy the corresponding localized resources MFC42XXX.DLLfrom the Microsoft Visual C+ CD-ROM onto the system or system32 directory,and rename it to be MFCLOC.DLL. (XXX stands for the language abbreviation.For example, MFC42DEU.DLL contains resources translated to German.) If youdont do this, some of the UI elements of your application will remain in thelanguage of the operating system./nts目录 第一章 绪论 . - 1 - 1.1 问题概述 . - 1 - 1.1.1 问题的来源 . - 1 - 1.1.2 目的和意义 . - 1 - 1.1.3 国内外研究现状 . - 1 - 1.2 问题剖析 . - 2 - 1.2.1 主要问题 . - 2 - 1.2.2 难点和关键 . - 3 - 1.2.3 思路和方法 . - 3 - 第二章 相关的知识和工具 . - 4 - 2.1 解决问题的知识基础 . - 4 - 2.2 开发平台 . - 5 - 2.3 数据库 . - 5 - 第三章 总体设计 . - 6 - 3.1 总体设计的框架 . - 6 - 3.2 模块功能概述 . - 7 - 3.3 关键算法 . - 8 - 3.4关键技术 . - 12 - 第四章 详细设计 . - 14 - 4.1数据库结构 . - 14 - 4.2模块结构 . - 14 - 4.3 重要模块详述 . - 15 - 第五章 程序编码 . - 18 - 5.1 数据结构 . - 18 - 5.2主要界面 . - 21 - 5.3 重要模块程序实现 . - 24 - 第六章 问题和展望 . - 32 - 6.1 特色与成功 . - 32 - 6.2 问题与展望 . - 32 - 参考文献 . - 33 - 附录 . - 34 - 游戏大厅 . - 34 - 游戏类 . - 38 - nts绪论 - 1 - 第一章 绪论 1.1 问题概述 1.1.1 问题的来源 随着 Internet 的普及,网络游戏已经成为大家耳濡目染的新生事物。网络游戏从出现到现在的发展的时间很短,但是其发展速度却非常之快。现在,可以说网络游戏已经成为人们休闲、娱乐的有效方式。国内比较有名气的网络游戏有联众网络游戏世界 中国游戏中心 以及这几年受玩家亲睐的传奇、魔兽世界等。 1.1.2 目的和意义 对当今网络游戏的设计、架构进行分析、探索和实践。提供友好的客户操作界面,通过客户端与服务器之间的网络传递数据,实现了多人协同游戏的目的。分析现今网络游戏体系结构及设计模式的优缺点,及对网 络游戏的发展给予分析和展望。 1.1.3 国内外研究现状 现今网络游戏的体系结构(见图 1-1) ,包括客户机程序、服务器程序、数据库服务器。 nts网络游戏 - 2 - 图 1-1 网络游戏体系结构 1.2 问题剖析 1.2.1 主要问题 在开发网络游戏时,首先要建立底层的网络通信类,利用网络通信类连接构建客户服务器之间的 TCP/IP连接,然后在该连接的基础上利用自设定的协议进行客户端登录、进行游戏等操作。在以上协议的基础上,根据不同的游戏编写不同的游戏逻辑处理类,在该逻辑处理类中实现了对应的游戏逻辑,如实例中的军棋,则实现相互之 间的对弈等功能。同时在服务器端还需要和数据库服务器交互,用于读取或保存客户信息(如用户积分、密码、个人资料等数据)。 nts绪论 - 3 - 1.2.2 难点和关键 1、有一个或多个游戏服务器启动特定游戏服务。 2、游戏者到游戏网站上下载客户端程序并且申请游戏账号 ID。然后启动客户端程序通过某种网络协议连接游戏服务器。 3、客户端程序负责处理客户端显示和操作界面,具有简单的逻辑处理功能,同时负责接收发送与服务器端交互的数据包。 4、服务器程序负责处理服务器端逻辑、游戏逻辑、客户之间的网络信息传递,以及数据库之间的数据读取保存工作。 同时服务器端还要承担客户端数据的接收、转发工作。 1.2.3 思路和方法 网络游戏通常的运行方式 (见图 1-2)。 图 1-2 网络游戏交互图 nts网络游戏 - 4 - 第二章 相关的知识和工具 2.1 解决问题的知识基础 网络游戏常用的网络协议有适用于 Internet 的 TCP/IP协议、适用局域网(比如星际)的 IPX协议。 (一 ) TCP/IP协议 TCP/IP协议 (Transmission Control Protocol/Internet Protocol,传输控制协议 /网际协议 )是 Internet 中计算机进行通信的标准, 其命名起源于该组协议中最重要的两个协议 TCP和 IP。任何关于 Internet协议的讨论必须由 TCP/IP开始,它也是其他所有协议的基础。 TCP/IP协议是 Internet网络的共同语言,主机之间必须利用 TCP/IP互通信息。 TCP/IP协议目前已经成为发展最成功的通信协议之一,它起源于 20 世纪 60年代末美国政府资助的一个分级交换网络研究项目,允许分布在各地的使用不同操作系统的网络进行通信。随着世界范围个人电脑的普及,日常无论收发邮件、访问网页和文件传输都已经离不开 TCP/IP协议, TCP/IP协议已经成为 Internet的基础。 (二 ) TCP/IP结构 TCP/IP实际上就是在物理网上的一组完整的协议。其核心部分是传输层协议 (TCP/UDP)、网络层 (IP)和物理接口层,这三层通常在操作系统内核中实现。 TCP/UDP 层提供了传输层服务,而 IP协议提供了网络层服务。 TCP/IP协议是一个四层协议,其结构如图 2-1 所示。 图 2-1 TCP/IP 协议体系结构图 nts相关的知识和工具 - 5 - 应用程序与 TCP/IP 可靠传输之间接口具有五大特性: 面向数据流 当两个用户进程传输大量数据时,我们把这些数据当做可划分为八位组( octer,字节)的比特流,在目的机器上运行的数据流投递服务软件提给接收方的八位组与信源机上发送方送出来的完全相同。 虚电路连接 数据流的传输与电话相似,使用“虚电路”这个术语来描述这种连接是因为在应用程序看来这种连接像是一条专用的硬件电路,这种可靠连接的错觉是由数据流投递服务提供。 有缓冲的传送 使用虚电路服务来发送数据流的应用程序不断向协议软件递交数据八位组。为了提高效率以及减少网络延迟,协议软件在实现时都会从数据流中收集到足够多的数据,组成大小合理的数据包后再送到网络上传输。 无结构的数据 TCP/IP 协议并不区 分结构化的数据流。使用数据流的应用程序必须在开始连接之前就了解数据流的内容并对其格式进行协商。 这点很重要,在程序中表现为 send函数只能发送字符串,这就需要将接收的字符串转化需要的结构化的数据。 全双工连接 TCP/IP 流服务所提供的功能是双向的全双工连接。其中包括了两个独立、流向相反的数据流,而这两个数据流之间不进行显式的交互。 常用协议主要包括 TCP/UDP层协议和 IP层协议。 TCP和 UDP都是传输层协议,都使用 IP协议作为网络层协议。使用 UDP 协议的应用程序必须承担可靠性的工作,包括报文的丢失、重复 、乱序以及连接失效等问题,而程序员编程时则容易疏忽。 2.2 开发平台 操作系统 Windows 2000, 开发工具 VisualC+6.0。 2.3 数据库 SQL Server 2000, 是一个全面的数据库平台,引擎为关系型数据和结构化数据提供了安全可靠的存储功能。 nts网络游戏 - 6 - 第三章 总体设计 3.1 总体设计的框架 军棋游戏的总体设计框架,客户端如图 3-1所示。 图 3-1 军棋游戏架构客户端 军棋游戏的总体设计框架,服务器如图 3-2所示。 图 3-2 军棋游戏架构服务器 nts总体设计 - 7 - 3.2 模块功能 概述 客户端类的划分: 游戏基本类:负责处理游戏中一些完成基本功能的类,如处理声音类、处理动画图标,图形按钮等类,基本类的特点是被其他类在特定处所调用,并不动生成对象。 游戏框架类:负责处理游戏中客户端用于显示程序界面和绘制游戏界面以及显示用户信息和广告信息等处理任务。 游戏通信类:负责处理游戏中客户服务器之间的网络传输细节,从而在编程中不用考虑网络通信细节,达到客户和服务器之间的透明的效果。 游戏应用程序类:主要负责处理应用程序中各种设置显示对话框、程序主线程处理、程序中基本的运行类框架的管理,以及游戏中 图形的处理和显示等任务的处理。 游戏处理类:主要用于处理游戏简单逻辑、负责解析和处理与服务器端交互的游戏数据,以及在游戏运行中维护游戏中的各种数据,同时维护处理游戏主线程逻辑等功能。 服务器类的划分: 游戏通信类:负责处理游戏中客户服务器之间的网络传输细节,从而在编程中不用考虑网络通信细节,达到客户和服务器之间透明传输的效果。 游戏协议类:负责处理游戏中客户服务器之间交互所传递的数据,并且对该数据格式进行打包和解包,同时根据该包中所包含的指令串进行相应的操作。 游戏逻辑类:负责处理游戏逻辑,如军棋游戏中用 于维护军棋逻辑,判断下棋,得分等处理类。 用户管理类:用于管理用户资料,在用户登录后通过数据库验证用户名和密码,通过验证后从数据库读取用户的详细资料。同时在程序中维护用户数据,在用户游戏结束和退出游戏时将用户数据保存到数据库中。 服务器框架类:用于管理游戏大厅的数据,包括一些数据的列表。 数据库类:用于网络游戏的服务器端在处理大量的客户资料时,使用数据库进行大量数据的存储和查询所调用的类方法。 nts网络游戏 - 8 - 3.3 关键算法 模块间的数据传递设计,如图 3-3所示。 图 3-3 模块间的数据传递设计 这样,在 CTableView 和 CGameDlg 中通过指针,也可向服务器发送消息。而CCGameHallFrameView 收到消息后,同时也控制 CTableView和 CGameDlg 的行为。 采用内存作图的方式,消除了闪烁。首先创建一个内存 dc,将绘图的工作先在内存dc中做好,再贴到实际 dc上去。做法如下: 首先创建关于屏幕的内存 DC, 代码为 MemDC.CreateCompatibleDC( pDC); 之后创建一幅关于屏幕 DC的图画 ,部分代码如下 : CRect rect; this-GetClientRect(rect); CBitmap bmpFace; bmpFace.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height(); 注意把握 rect的尺寸为客户区域大小; 之后将这幅画选入内存 DC中, 部分代码如下: CBitmap* pOldBmp = NULL; pOldBmp = MemDC.SelectObject(&bmpFace); 之后可以开始在内存 DC中进行任何绘制动作; 部分代码如下: CBrush brush(RGB(255,255,255); MemDC.FillRect(rect,&brush); for(int i=0;iBitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,rect.left,rect.top,SRCCOPY); 最后进行相关的资源回收动 作, 部分代码如下: MemDC.SelectObject(pOldBmp); bmpFace.DeleteObject();。 同时我们要把系统的 ON_WM_ERASEBKGND消息 函数重载为 return FALSE, 否则 还是会 出现闪 烁 情况。 在对话框中用这个方法的时候,要注意将有控件的部分和需要绘图的部分分开,可采用如下方法 ,部分代码如下: : CRect rectClient;CRgn rgn1,rgn2;/rgn3,rgn4; GetClientRect(rectClient); rgn1.CreateRectRgnIndirect(rectClient); rgn2.CreateRectRgn(730,0,962,670); if(rgn1.CombineRgn(&rgn1,&rgn2,RGN_XOR) = ERROR) return; MemDC.FillRgn(&rgn1,&brush); 服务器对连接的用户数据的数据结构的设计,用下面两个结构: typedef struct TT int d4; int ID4; int board1717; BOOL begin4; ; typedef struct MM nts网络游戏 - 10 - CString name,sex; int score; ; 连接的 socket保存在如下链表中: typedef CList SOCKET_ARRAY; SOCKET_ARRAY m_connectionList; 与服务器建立连接后,相应的用户数据,保存在 MM 结构数组中,位置为其 socket在 m_connectionList中的相应位置,这样就可以通过连接的 socket找到相应的信息。TT 是保存大厅数据的结构, d 表示四个坐位有没有人, ID 表示就坐的人的 socket 在链表中的位置。 board 为棋盘数据。每个桌子有每个桌子的棋盘数据,互不干扰。随着游戏的进行而不断更新。 begin表示四个玩家有没有下调度完成的指令。 应用矩阵的 变换 实现坐标旋转。不管你坐在哪个方位,玩游戏时,你始终是在正下方,这就需要实现虚拟坐标到目标坐标的旋转变换,如图 3-4。 图 3-4 坐标图 X为实际坐标, x为虚拟坐标,转换公式推导如下,见图 3-5。 图 3-5 坐标变换公式推导 direct 为自己座位方向, switch(direct) case 0: (a=90o) X, Y, 1=-y+16, x, 1 /东 case 1:(a=0o) X, Y, 1=x, y, 1 /南 case 2:(a=-90o) X, Y, 1=y, -x+16, 1 /西 nts总体设计 - 11 - case 3:(a=180o) X, Y, 1=-x+16, -y+16, 1 /北 回溯法求工兵路径,军棋游戏逻辑不复杂,只有工兵能够自由飞行。在这里没有求工兵起点到目标点的 最短 路 径 ,而只是 用 回溯 法 求出 其中一条路径,所以在游戏中你会发现工兵有时候会绕些弯路。这和老鼠走迷宫差不多的。 工兵迷宫数组: int RAILWAY1717= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,1,1,3,1,3,1,1,0,0,0,0,0, 0,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1,0, 0,1,0,0,0,2,2,0,2,0,2,2,0,0,0,1,0, 0,1,0,0,0,1,1,3,1,3,1,1,0,0,0,1,0, 0,1,0,0,0,2,2,0,2,0,2,2,0,0,0,1,0, 0,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1,0, 0,0,0,0,0,1,1,3,1,3,1,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0, 0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0表示该位置不在工兵铁道上, 1表示在该位置可向上下左右方向移动, 2表示在 该位置只能向上下方向移动, 3表示在该位置只能向左右方向移动。 nts网络游戏 - 12 - 3.4 关键技术 网络通信, Windows Socket 编程接口: Windows Socket (简称 WinSock)是在 Win32 平台上访问基层网络协议的接口。在不同的 Win32平台上, Windows Socket以不同的方式存在着,作为网络编程接口而不是协议存在。 套接字( Socket)概念,套接字是从英文单词 Socket 翻译而来,它是网络通信的基本操作单元,是应用 层到传输层的接口,可以将套接字看作不同主机间的进程进行双向通信的端点。 Windows Socket组成部分, Windwos Sockets 实现一般都由两部分组成:开发组件和运行组件。开发组件是供程序员开发 Windows Sockets 应用程序使用的,主要是WinSock.h头文件。对于 Windows Sockets应用程序的源文件来说,只要包括 WinSock.h就可以了。除此之外,在使用 WinSock 的项目中还需要加入 WinSock API 引入库wsock32.lib。运行组件是 Windows Sockets 应用程序接口的动态连接库( DLL) ,文件名为 WinSock.dll,应用程序在执行时通过装入它实现网络通信功能。 Windows Sockets 编程的基本模式,要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户端,我们称之为 ClientSocket,另一个运行于服务器端,我们称之为 ServerSocket。使用 Socket 进行网络通信一般有两种方式:基于面向连接的流方式和基于无连接的数据报方式。面向连接的的流方式调用过程如图 3-6所示。 nts总体设计 - 13 - 图 3-6 面向连接的流方式调用过程 nts网络游戏 - 14 - 第四章 详细设计 4.1 数据库结构 服务器端数据库结构 如 表 4-1。 User 列名 数据类型 长度 允许空 描述 主键 name char 10 no 用户名 code char 10 no 密码 score int 4 yes 游戏积分 sex char 2 yes 性别 表 4-1, 玩家信息 用作记录玩家游戏数据。 4.2 模块结构 客户端模块结构: 游戏基本类 ,该类包中包括 CBorderButton、 CClockObject、 CWave 类。 游戏框架类,该类包中包括 CMainFrame、 CCGameHallFrameView、 CHtmlViewEx、CTableView类。 游戏通信类,该类包中包括 CClient类。 游戏应用程序类,该类包包括 CGameDlg 类,其中包括对游戏处理类的调用。 游戏处理类,该类包中主要包括 TakeGame 类。 服务器模块结构: 游戏通信类,由 CServer类实现。 游戏协议类,由 CServerProtocol类实现。 游戏逻辑类,由 CServerLogic类实现。 数据库类,由 CServerFrameSet类实现。 用户管理类,由 CServerFrameView类实现。 服务器框架类,由 CServerFrame类实现。 nts详细设计 - 15 - 4.3 重要模块详述 客户端模块: CBorderButton 类是带有边框的图片按钮类, CClockObject 类是时钟类, CWave是用来播放声音的类,当游戏用户下棋,吃子,起身或坐下时要播放声音,选择在程序中调用 API 函数 PlaySound 直接播放在资源中的声音文件。模块描述如图 4-1。 图 4-1 游戏基本类模块描述 CMainFrame 类是游戏窗口中的游戏大厅框架类,其中包括构架广告显示窗口,可玩的游戏类、工具 栏、游戏桌的信息、显示信息等, CCGameHallFrameView类是用来在游戏大厅窗口左侧显示可以玩的游戏以及游戏室,采用树状结构显示。 CHtmlViewEx 类用于构造广告显示窗口,用于游戏框架中显示广告页。CTableView 显示包含游戏桌的游戏大厅,在大厅中多人在等待开始游戏。模块描述如图 4-2。 图 4-2 游戏框架类模块描述 nts网络游戏 - 16 - 游戏通信类, CClient,功能为建立和服务器的连接,能及处理通信,采用异步机制,以自定义消息事件处理通信等功能。采用自定义消息: WM_USER + 101。模块描述 如图 4-3。 图 4-3 游戏通信类模块描述 游戏应用程序类, CGameDlg,其中包括对游戏处理类的调用。 CGameDlg 主要负责处理应用程序中各种设置显示对话框、程序主线程处理、以及游戏中的图形的处理和显示等任务的处理。模块描述如图 4-4。 图 4-4 游戏应用程序类模块描述 游戏处理类, TakeGame 主要用于处理游戏简单逻辑、负责解析和处理与服务器端交互的游戏数据,以及在游戏运行时维护游戏中的各种数据,同时维护处理游戏主线程逻辑等功能。模块描述如图 4-5。 图 4-5 游戏处理类模 块描述 nts详细设计 - 17 - 服务器模块: 游戏通信类,由 CServer 类实现。负责处理游戏中客户与服务器之间的网络连接细节,从而使得对于客户和服务器之间的数据传输可以忽略通信细节。模块描述如图 4-6。 图 4-6 游戏通信类模块描述 游戏协议类,由 CServerProtocol类实现。 游戏协议类负责 解析客户 /服务器端所 传输的协议,同时根据不同的协议调用不同的操作函数,并根据用户状态变化维护用户信息。模块描述如图 4-7。 图 4-7 游戏协议类模块描述 游戏逻辑类负责处理游戏逻辑,在军棋游戏中包括计算得分,计算 赢等。游戏逻辑类 CServerLogic和游戏协议类分离的优点是可以只通过修改逻辑类来改变为不同的网络游戏,如修改为“象棋逻辑”即可以成为象棋游戏,修改为“升级逻辑”即可以成为升级游戏。 用户管理类,直接在 CCServerFrameView 中实现。 数据库类,采用 SQL Server 2000 数据库,只是用来保存玩家的资料等一些数据。采用 MFC ODBC 数据库编程,在程序中为 CServerFrameSet 类。正如 MFC提供的其他类库很好地对相应的 Win32 API 作了封装, MFC 提供的 ODBC 类库也相应地对 ODBC API 作了封装,通过提供一种高级接口而避免直接使用 ODBC APInts网络游戏 - 18 - 所涉及的种种繁琐处理,简化了对 ODBC 数据库的应用程序编程。模块描述如图4-8。 图 4-8 数据库类模块描述 第五章 程序编码 5.1 数据结构 用 17 17的数组表示军棋的棋盘,如下: int BOARD1717 = -1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1, nts程序编码 - 19 - -1,-1,-1,-1,-1, 0,0,0,0,0,0, 0,-1,-1,-1,-1,-1, 0,0,0,0,0,0, 0, 0, 0, 0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,-1, 0,-1,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0, 0, 0, 0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,-1, 0,-1,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0, 0, 0, 0,0, 0,0,0,0,0,0, -1,-1,-1,-1,-1, 0, 7, 3, 4,5, 3, 0,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,10, 0, 1,0, 9,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1, 8,10, 0,1, 5,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1, 6, 0, 4,0, 3,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1, 2, 7, 6,1,11,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,11,12,11,2, 2,-1,-1,-1,-1,-1,-1, ; 1表示棋 盘以外的位置 0 表示棋盘内位置,但无棋子 1 工兵 2 排长 3 连长 4 营长 5 团长 6 旅长 7 师长 8 军长 9 司令 10 炸弹 11 地雷 12 我方军旗 nts网络游戏 - 20 - 13 上方盟友或敌方的棋子 14 左边敌方的棋子 15 右边敌方的棋子 16 上方军旗 17 左方军旗 18 右方军旗 为了处理工兵的走法的方便,将四个转角斜对的位置恒置为 0,这样在为工兵寻找路径时会方便一些。 游戏协议 以 char(20)作为一次信息的起始点,终点。“”在字符串中用空格代替。以一字符串作为向服务 发出的请求信息,服务器也以相应的一字符串发送回客户端作为应答。 对话: A桌子号聊天内容 坐下: B桌子号方位 调度完成: C桌子号方位 (棋盘数据 )用一维数据形式表示 6 5 的二维数组,数据之间用空格开。 开始游戏: (只由服务器发出 ) D对战类型 下棋: E 桌子号方位起点 (x,y)终点 (x,y) 吃: (只由服务器发出 )(包括移动 ) F 起点 (x,y) + 终点 (x,y) 被吃: (只由服务器发出 ) G 起点 (x,y) + 终点 (x,y) 炸: (只由服务器发出 ) H 起点 (x,y) + 终点 (x,y) nts程序编码 - 21 - 输:离开:(包括断线 ) 投降 : I 方位 求和: K 桌子号方位 注册: L 用户名密码 注册成功: M + 用户名 登录: N + 用户名密码 登录结果: O + 1/0 离开: P + 桌子号 方位 请求接收信息: Q + 桌子号 方位 碰: R 起点 (x,y) + 终点 (x,y) 5.2 主要界面 服务器界面如图 5-1所示。 nts网络游戏 - 22 - 图 5-1 服务器启动界面 客户端大厅界面如图 5-2所示。 nts程序编码 - 23 - 图 5-2 客户端大厅界面 军棋游戏界面,如图 5-3所示: nts网络游戏 - 24 - 图 5-3 军棋游戏界面 5.3 重要模块程序实现 客户端三拆分窗口的实现 BOOL CMainFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) if(NULL=m_wndSplitter.CreateStatic(this,1,2) return FALSE; if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTableView),CSize(620,800),pContext) return FALSE; if(NULL=m_wndLeftSplitter.CreateStatic(&m_wndSplitter,2,1, WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1) nts程序编码 - 25 - return FALSE; if(!m_wndLeftSplitter.CreateView(0,0,RUNTIME_CLASS(CCGameHallFrameView),CSize(380,300),pContext)| !m_wndLeftSplitter.CreateView(1,0,RUNTIME_CLASS(CHtmlViewEx),CSize(380,500),pContext) return FALSE; pWebView=(CHtmlViewEx*)m_wndLeftSplitter.GetPane(1,0); pServerTreeView=(CCGameHallFrameView*)m_wndLeftSplitter.GetPane(0,0) pTableView=(CTableView*)m_wndSplitter.GetPane(0,0); pServerTreeView-pTable=pTableView; pWebView-Navigate2(/zhou207,0,NULL); return TRUE; 客户端初始化及连接 void CClient:ClientInit() if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,FD_READ|FD_WRITE|FD_CLOSE|FD_CONNECT)0) AfxMessageBox(Error in select); BOOL CClient:InitAndConnect(HWND hWnd, UINT port, CString strServer) m_hWnd=hWnd; m_uPort=port; m_strServer=strServer; if(m_hSocket!=NULL) nts网络游戏 - 26 - /先将以前打开的套接字关闭 closesocket(m_hSocket); m_hSocket=NULL; /创建面向连接的 socket m_hSocket=socket(AF_INET,SOCK_STREAM,0); ASSERT(m_hSocket!=NULL); ClientInit(); /设置连接信息:网络协议 IP地址端口 m_addr.sin_family=AF_INET; m_addr.sin_addr.S_un.S_addr=inet_addr(m_strServer.GetBuffer(0); m_addr.sin_port=htons(m_uPort); /连接服务器 int ret=0; int error=0; ret=connect(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr); if(ret=SOCKET_ERROR) /连接失败 if(GetLastError()!=WSAEWOULDBLOCK) AfxMessageBox(_T(请确认服务器确实已经打开并工作在同样的端口!); return FALSE; return TRUE; 服务器初始化及连接 nts程序编码 - 27 - void CServer:ServerInit() /设置 socket 的异步模式 if(WSAAsyncSelect(m_hSocket,m_hWnd,SER_MESSAGE,FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)0) AfxMessageBox(error select); BOOL CServer:InitAndListen(HWND hWnd, UINT port) m_uPort=port; m_hWnd=hWnd; if(m_hSocket!=NULL) /先关闭已经打开的 socket closesocket(m_hSocket); m_hSocket=NULL; /创建面向连接的流方式的套接字 m_hSocket=socket(AF_INET,SOCK_STREAM,0); ASSERT(m_hSocket!=NULL); ServerInit(); m_addr.sin_family=AF_INET; m_addr.sin_addr.S_un.S_addr=INADDR_ANY; m_addr.sin_port=htons(m_uPort); int ret=0; int error=0; /绑定套接字到本机的某个端口 ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr); if(ret = SOCKET_ERROR) nts网络游戏 - 28 - AfxMessageBox(Binding Error); return FALSE; ret = listen(m_hSocket, 64); if(ret = SOCKET_ERROR) AfxMessageBox(Listen Error); return FALSE; return TRUE; 回溯法寻找工兵路径 BOOL TakeGame:TakeEngineer(CPoint from, CPoint to) POS p;int x,y;engineer=TRUE; p.d=0;p.x=from.x;p.y=from.y;top=0; if(RAILWAYp.xp.y=2) p.d=1; stacktop=p;int f1717; while(top=0) p=stacktop; if(p.x=to.x&p.y=to.y) return TRUE; if(p.dDoModal()=IDOK) name=login-m_name; code=login-m_code; ServerIP=login-m_ServerIP; if(name=|code=|ServerIP=) MessageBox(每项内容都不能为空 ); else r=1; delete login; else register1=new CRegister1(); if(register1-DoModal() if(re
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:JSJ03-088@vc++四国军棋系统设计与实现(源代码+论文)
链接地址:https://www.renrendoc.com/p-508139.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!