游戏软件设计说明
英速剑笑江湖游戏软件设计说明书资料

1.2.2 运行环境
◇Intel Pentium 2 及以上处理器, 32M以上内存, 20M以上硬盘空间。 ◇Microsoft Windows 2000 或 XP以上操作系统。 ◇800× 600 或以上的屏幕分辨率。
1.2.3 测试环境操作系统与硬件配置
◇Microsoft Windows 2000 Professional 。 ◇Microsoft Windows XP Professional 。 ◇Microsoft Windows 7 。 ◇有 MFC环境的动态库文件,如 MFC42.dll 等。 ◇Intel Pentium 4 2.0GHZ,512 内存, 100G硬盘剩余空间。
矩形是除了三角形之外的最简单的多边形, 由 AABB矩形包围盒的检测思想,
4
英速剑笑江湖游戏软件 V1.0 设计说明书
该算法可推广至多边形与多边形之间的碰撞检测。 这里需要注意的是多边形的构
3
英速剑笑江湖游戏软件 V1.0 设计说明书
图 1-2 潜在碰撞集的碰撞区域 C
在图 1-2 中,可以看到,被碰撞物体是半径为 ,圆心坐标为
的圆形,
碰撞物体对象是半径为 的圆,圆心坐标可为屏幕中任意一点。图 1-2 中最大圆
即为最小的潜在碰撞区域,为了简化计算,本文取该圆形的最小外接正方形
作为潜在碰撞区域。此后,对于圆心落入该区域的物体,都需要进行
a11 a12
a1n
Aam2
amn
公式 1-1 数组的表示
也可以将 Amxn 简计为 A,那么 A 是这样的一个一维数组
A=(a1,a2, … ,i…a am)
其中, ai=(ai,1,ai,2,…,ai,n)(1<=i<=m)。
游戏软件设计说明

XXXXXX游戏软件设计说明1引言1.1标识本文档是棋牌游戏XXXXXXXXXXXX游戏软件设计说明文档,阅读对象是产品开发,测试和维护人员。
1.2范围本文档包括软件产品的系统设计和详细设计两大部分,系统设计部分主要描述产品的模块划分,相互依赖关系和交互接口,详细设计部分通过包图、类图、状态图等描述系统功能的具体实现方法和流程。
1.3定义和缩写1.“本软件”或“本产品”指:(1)XXXXXXXXXXXX游戏软件V1.0。
(2)相关的说明性书面材料、说明书以及电子文档(如果有的话)。
(3)XXXXXX公司许可您使用的本软件的相关的更新程序,或者修改版(如果有的话)。
2.“使用”指对本软件安装、设置或者以其他方式对本软件做功能性使用。
3.“用途”指您使用本软件的限制和范围。
4.“XXXXXXXXXXXX游戏软件”缩写“XXXXXXXXXXXX”。
2参考献文【1】软件设计说明:Survivor之新东方客栈软件设计说明来源于。
3 结构设计3.1 服务端模块分解XXXXXXXXXXXX服务端共分为四个模块:游戏棋盘模块(Chessboard),棋盘服务模块(ChessboardSink2pSuper)游戏桌子模块(TableFrameSink),游戏服务器管理模块(GameServerManager)。
图 3-1-1-1 服务端模块划分3.1.1 模块1 游戏棋盘模块 说明本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove 、CanHorseMove 、CanCannonEat )并提供一个对外部游戏判断棋子是否可行可吃的总接口Action ,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRoo kPath 、 SearchHorsePath 、SearchCannonEatPath 这三个搜寻可走路径的函数3.1.2 模块 2 棋盘服务模块 说明本模块接手了模块3的功能,定义了服务端游戏控制流程,包括游戏初始化、等待、属性、开始游戏,游戏结束和结算,分别有各自的控制逻辑和交互界面。
达宇逐鹿七雄游戏软件设计说明书

绪论现如今人们已经离不开网络了。
网络游戏已经成为人们休闲生活的主要方式之一。
网络游戏主要通过网络平台进行交流互动,无论是哪种网络平台,一般都是有服务器,数据库和无数的客户端组成的。
一般的网络游戏都是采用这几种方式运行:(1)有一个或多个游戏服务器启动特定游戏服务。
(2)游戏用户去游戏网站申请游戏账号ID,并下载游戏客户端。
然后启动客户端程序,通过网络洗衣连接游戏服务器。
(3)客户端程序负责处理客户端显示和操作界面,具有简单的逻辑处理功能,同时负责接收、发送与服务端交互的数据包。
(4)服务器程序负责处理服务器端逻辑,游戏逻辑,游戏用户之间的网络信息传递,以及数据库之间的数据读取和保存工作,同时服务端还要承担游戏用户的客户端数据的接收转发工作。
(5)网络游戏常常用到网络协议,有适用与Internet的TCP/IP协议,适用于局域网的IP协议。
在开发网络游戏时,首先要建立底层的网络通信类,利用网络通信类连接构建客户服务器之间的TCP/IP连接,然后在该链接的基础上利用自己的TCP/IP协议进行客户端登陆,进入大区,开始游戏,换游戏大区,和其他玩家互动等的操作,在以上协议基础同时在服务器端还需要和数据交互,用于读取或保存玩家信息(如玩家密码、个人资料等数据)。
在网络游戏中数据库主要用来保存玩家资料,包括玩家的注册信息,玩家的游戏资料以及其他设置资料【1】。
网络游戏的服务端在处理大量的玩家资料时,必然要用到数据库来进行大量的数据信息的存储和查询,服务器数据库中存储着玩家的注册信息,游戏设置信息等重要信息数据,通过网络游戏的架构也可以了解到网络游戏服务器。
数据库连接着多个游戏客户端进行玩家数据的查询和修改,并且保持玩家数据的同步。
在玩家注册游戏账户,登录服务器,保存游戏结果,退出游戏服务器都必须和数据库服务器进行交互,查询和保存玩家资料,当有大量玩家同时游戏时,所以必须保证数据库服务器的性能,以免造成数据处理缓慢,导致游戏服务器停止响应的后果。
贪吃蛇游戏详细设计说明书

详细设计说明书1 引言1.1 编写目的本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。
软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。
本说明书预期的读者是软件开发小组的产品实现人员。
1.2 背景说明:系统名称:贪吃蛇游戏任务提出者:手机策划人员开发者:软件开发小组的产品实现人员用户:NOKIA手机用户运行该程序系统的计算中心:NOKIA手机芯片1.3 定义1.节:一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。
节是蛇身上最小的单位。
2.链表:用来保存每一段的状态,链表的元素单位是节。
且链表的第一个元素表示蛇的头部。
3.坐标系:以左上角那点为(0,0),向右则x递增,向下则y递增。
1.4 参考资料张海藩:《软件工程导论》第五版清华大学出版社肖刚等:《实用软件文档写作》清华大学出版社2 程序系统的组织结构2.1每个模块和子程序的名称、标识符:1Ground类:1)private int TYPE;2)public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT];3)public void setGround(int type){}根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。
4)public boolean isSnakeEatRock(Snake snake){}判断蛇头的所在的位置在数组rocks中的值是否为1,如果是1,则表示蛇吃到了石头,返回TRUE,否则返回FALSE。
5)public Point getPoint(){}产生一组随机数(x,y),是食物的坐标6)public void drawMe(Graphics g){}将数组rocks中值为1的元素填充为石头颜色。
2Snake类:1)public static int x,y;2)private int oldDirection,newDirection;用于判断newDirection和oldDirection是否为相反方向,用于选取有效方向。
达宇二次元时代游戏软件设计说明书全解

1. 引言1.1游戏介绍达宇二次元时代游戏软件来源于街机游戏,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。
饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。
之后村子的达宇二次元时代游戏软件风靡版,阿达的达宇二次元时代游戏软件奥运版,达宇二次元时代游戏软件反恐版,还有敏敏达宇二次元时代游戏软件,水晶达宇二次元时代游戏软件等遍地开花,造就了一个达宇二次元时代游戏软件的新世界,达宇二次元时代游戏软件游戏有多种地图样式和道具系统、大大加强了游戏的可玩性,是一款老少皆宜的休闲佳品。
1.2目的本游戏制作的目的是满足人们休闲的要求,在紧张的工作之余休闲类的小游戏能够给人带来最大程度的放松。
也可以增进人们之间的交流、沟通。
此需求说明书对《达宇二次元时代游戏软件》游戏做了全面细致的用户需求分析,明确要开发的软件应该具有的功能、性能与界面,使系统分析人员及软件开发能清楚的了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
本说明书的预期读者为客户、业务或者需求分析人员、测试人员、用户文档编写者、项目管理人员。
1.3主要问题开始制作游戏的时候,主要解决的问题是以下几个方面:如何设置整个游戏的界面,如何控制达宇二次元时代游戏软件游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同而且图片之间的路径的判断。
2. 软件总体概述2.1软件标识软件全名称 C#版《达宇二次元时代游戏软件》游戏软件缩称《达宇二次元时代游戏软件LLK版本号 V1.02.2软件描述2.2.1系统属性本系统是独立运行的系统,需要.NetFrameWork 2.0 框架的支持。
2.2.2开发背景本游戏制作的目的是满足人们休闲的要求,在紧张的工作之余休闲类的小游戏能够给人带来最大程度的放松。
gmp 针对5类软件的软件设计说明

GMP针对5类软件的软件设计说明在软件开发领域,GMP(Good Manufacturing Practice)是一种质量管理体系,旨在确保生产软件的过程符合标准,以保证软件的质量和安全性。
GMP针对各种类型的软件都有相应的设计规范和说明。
本文将针对5类常见的软件,包括操作系统、数据库管理系统、游戏软件、企业管理软件和医疗健康软件,进行全面评估和软件设计说明。
一、操作系统1.内核设计:GMP要求操作系统的内核设计必须可靠、高效,并且保证系统运行的稳定性和安全性。
针对高可靠性的需求,采用模块化设计,实现功能分离,避免单点故障。
2.用户界面:GMP要求操作系统的用户界面必须符合人机工程学原理,简洁、友好、易操作。
同时要求界面设计必须考虑到用户的多样化需求,实现个性化定制。
二、数据库管理系统1.数据存储设计:GMP要求数据库管理系统的数据存储设计必须安全可靠,避免数据丢失和损坏。
采用分布式存储,定期进行数据备份和恢复测试,确保数据的完整性和可用性。
2.权限管理:GMP要求数据库管理系统的权限管理必须严格,实现用户身份认证、访问控制和操作审计。
同时要求实现数据加密和安全传输,保护敏感数据不被非法获取和篡改。
三、游戏软件1.游戏引擎设计:GMP要求游戏软件的游戏引擎设计必须高性能、稳定,并且支持跨评台。
要求游戏引擎实现游戏资源的高效加载和管理,保证游戏流畅运行。
2.用户体验:GMP要求游戏软件的用户体验必须优秀,包括画面效果、操作流畅性、社交互动等方面。
要求游戏软件的界面设计、音效、互动性都要符合用户心理需求。
四、企业管理软件1.业务流程设计:GMP要求企业管理软件的业务流程设计必须合理、高效,能够满足企业的日常运营需求。
要求对各个业务流程进行精细化分析和优化设计。
2.数据分析:GMP要求企业管理软件能够实现数据的实时采集、分析和报告功能,为企业决策提供有效支持。
要求数据报表清晰明了,能够直观展现数据分析结果。
课堂游戏软件制作教案模板

课堂游戏软件制作教案模板教案标题:课堂游戏软件制作教案模板教学目标:1. 了解游戏软件制作的基本概念和原理。
2. 学习使用相关工具和技术制作简单的课堂游戏软件。
3. 培养学生的创造力、团队合作和解决问题的能力。
教学重点:1. 游戏软件制作的基本原理和步骤。
2. 游戏设计和开发的基本要素。
3. 利用相关工具和技术制作简单的课堂游戏软件。
教学难点:1. 如何设计和开发一个具有教育意义的课堂游戏软件。
2. 如何合理运用游戏元素和互动方式提高学生的学习兴趣和参与度。
教学准备:1. 计算机设备和相关软件工具。
2. 游戏软件制作的教学资源和案例。
3. 学生分组所需的素材和工具。
教学过程:一、导入(5分钟)1. 引入课堂游戏软件制作的概念和意义。
2. 通过展示一些成功的课堂游戏软件案例,引发学生的兴趣。
二、知识讲解(15分钟)1. 介绍游戏软件制作的基本原理和步骤,包括游戏设计、编程开发和测试等。
2. 解释游戏设计和开发的基本要素,如游戏规则、关卡设计、角色设定等。
三、案例分析(15分钟)1. 分析和讨论一款成功的课堂游戏软件案例,包括其设计思路、互动方式和教育意义。
2. 引导学生思考如何将游戏元素和互动方式应用到自己的课堂游戏软件制作中。
四、实践操作(40分钟)1. 将学生分成小组,每个小组设计和开发一个简单的课堂游戏软件。
2. 学生根据自己的兴趣和所学知识,确定游戏主题、规则和关卡设计。
3. 学生利用相关工具和技术进行游戏软件的编程开发。
4. 学生在小组内互相合作,解决遇到的问题和困难。
五、展示和评价(15分钟)1. 学生展示他们设计和开发的课堂游戏软件。
2. 全班共同评价每个小组的作品,包括游戏的创意、可玩性和教育意义。
六、总结和拓展(5分钟)1. 总结课堂游戏软件制作的基本步骤和要素。
2. 引导学生思考如何进一步提高自己的游戏设计和开发能力。
教学延伸:1. 鼓励学生继续探索和学习更复杂的游戏软件制作技术。
某某游戏软件--(设计手册)222

某某游戏软件V1.0(设计手册)游戏软件名称《某某游戏》一、引言1.1编写目的这款游戏属于《某某游戏》开发团队原创作品,所有的界面、场景、人物、对白、玩法等都是团队原创。
复古的人物造型、加上丰富的游戏系统和新颖的游戏设定,让玩家打开网页就能开始某某游戏之旅,是时下角色扮演的精品之作。
1.2项目背景五百年前,人界出现了某某游戏的踪迹,各界高手跨界而来,为夺某某游戏相互厮杀,一场大规模的某某传说之战终于在人界爆发了!史称『变天之战』。
人族孱弱,只能选择众界之中最为强大的仙、妖、魔三大势力,以求自保。
天生拥有星宿命格的人族,在得到仙、妖、魔三大界的力量时,激发了玄武、白虎、朱雀、青龙四大圣兽道统的潜能,修为神速提升,在此役中表现十分惊人!最终,此役的结果却是某某传说的离奇失踪,仙、妖、魔三界乘机吞并其他弱小界面,成为了真正的三大势力。
此后五百年,令人惊奇的是,三界各自的统治者,以前都是拥有四圣兽道统的人族!然而,某某传说之谜依然没有解开,四圣兽道统之谜是什么?三界的平衡又将会如何打破?一切都等待着人族的探索,最终踏上征战某某传说之路。
后裔在华夏大地上演着一出出皇权争霸的大戏。
青龙、白虎、朱雀、玄武等不同职业的属性、功法,可施展出不同的华丽的招式。
以全新的法宝系统为亮点,必会吸引庞大的用户群体!二、软件总体设计2.1软件需求概括服务器需求:建议使用DELL R410CPU E5606 * 2内存16G硬盘SAS 15000转300G千M网卡2个2.2软件整体流程图(结构图)设计和描述说明:玩家进入游戏,通过游戏中的任务,玩家交互,感受愉悦-挫折-强化装备,增强实力-愉悦--挫折-再强化装备,增强实力的过程中,不断体验成功的乐趣!三、软件功能描述2.1 神兽功能流程图和详细流程描述说明:游戏里面玩什么?玩装备?玩副本?别忘了,还有可爱又拉风的神兽!妖神大力推出的神兽系统,从寻常可见的小猫小兔,到神话传说才有的神鸟凤凰,应有尽有。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXXXXX游戏软件设计说明1引言1.1标识本文档是棋牌游戏XXXXXXXXXXXX游戏软件设计说明文档,阅读对象是产品开发,测试和维护人员。
1.2围本文档包括软件产品的系统设计和详细设计两大部分,系统设计部分主要描述产品的模块划分,相互依赖关系和交互接口,详细设计部分通过包图、类图、状态图等描述系统功能的具体实现方法和流程。
1.3定义和缩写1.“本软件”或“本产品”指:(1)XXXXXXXXXXXX游戏软件V1.0。
(2)相关的说明性书面材料、说明书以及电子文档(如果有的话)。
(3)XXXXXX公司许可您使用的本软件的相关的更新程序,或者修改版(如果有的话)。
2.“使用”指对本软件安装、设置或者以其他方式对本软件做功能性使用。
3.“用途”指您使用本软件的限制和围。
4.“XXXXXXXXXXXX游戏软件”缩写“XXXXXXXXXXXX”。
2参考献文【1】软件设计说明:Survivor之新客栈软件设计说明来源于docin.。
3 结构设计3.1 服务端模块分解XXXXXXXXXXXX服务端共分为四个模块:游戏棋盘模块(Chessboard),棋盘服务模块(ChessboardSink2pSuper)游戏桌子模块(TableFrameSink),游戏服务器管理模块(GameServerManager )。
图 3-1-1-1 服务端模块划分3.1.1 模块1 游戏棋盘模块 说明本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove 、CanHorseMove 、CanCannonEat )并提供一个对外部游戏判断棋子是否可行可吃的总接口Action ,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath 、 SearchHorsePath 、SearchCannonEatPath 这三个搜寻可走路径的函数3.1.2 模块 2 棋盘服务模块 说明本模块接手了模块3的功能,定义了服务端游戏控制流程,包括游戏初始化、等待、属性、开始游戏,游戏结束和结算,分别有各自的控制逻辑和交互界面。
3.1.3 模块 3 游戏桌子模块 说明本模定义了棋盘服务的建立,使用棋盘服务控制游戏流程。
3.1.4模块 4游戏服务器管理模块 说明本模块定义了服务端的建立,主要成员函数包括:创建游戏桌(CreateTableFrameSink )。
3.2 客户端模块分解XXXXXXXXXXXX 客户端共分四个模块:游戏对话框模块(GameClientDlg ),游戏视图模块(CGameView ),游戏棋盘模块(ChessboardView ),猜拳模块(GuessView )图 3-2-1-1 客户端模块划分3.2.1 模块 1游戏对话框模块 说明本模块定义了客户端游戏控制流程,如:游戏设置(OnGameOptionSet )用于功能设置,网络消息(OnGameMessage )用于发送用户游戏消息,游戏场景(OnGameSceneMessage )用于发送游戏过程状态3.2.2 模块 2 游戏场景模块 说明本模块定义了游戏进行时的场景,游戏场景包括区域的绘制、场景信息贴图,走棋动画。
3.2.3 模块 3游戏逻辑模块 说明本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove 、CanHorseMove 、CanCannonEat )并提供一个对外部游戏判断棋子是否可行可吃的总接口Action ,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath 、 SearchHorsePath 、SearchCannonEatPath 这三个搜寻可走路径的函数3.2.4 模块4猜拳模块说明本模块定义了猜拳游戏场景的渲染,猜拳动画,用于决定哪个玩家先行棋3.3全局数据结构说明3.3.1 常量(1) 服务端常量WORD g_wGamePlayer; //游戏人数WORD g_wGameMode; //游戏模式ITableFrame * m_pITableFrame; //框架接口const tagGameServiceOption * m_pGameServiceOption; //配置参数static const enStartMode m_GameStartMode; //开始模式ChessboardSink * m_pChessboardSink; //棋盘服务(服务端的网络消息处理和其他变量都交给棋盘服务)棋盘服务常量:static const BYTE m_cbBuyPropsBaseCoin[5]; //购买道具的基数static const BYTE m_cbPropsLimitBuyCount[5]; //限制购买道具数量 (2) 客户端常量CGameView * g_pGameView; //游戏视图CGuessView * g_pGuessView; //猜拳视图3.3.2 变量(1) 服务端变量(棋盘服务变量)所在类:ChessboardSink2pSuperChessboard2pSuper m_chessboard; //棋盘LONG m_lPropsCostCoin[5]; //道具花费LONG m_lBuyPropsCoin[2]; //各个玩家购买道具的金币数bool m_isBoughtProps[2][5]; //玩家是否购买了某个道具BYTE m_cbBoughtPropsCount[2][5]; //购买了某个道具的数量BYTE m_cbFreePropsCount[2][5]; //玩家获得某个免费道具的数量WORD m_wBeLimitedCount[2]; //玩家被人使用了禁锢道具的数量BYTE m_cbPeepCount[2]; //玩家使用马灯的数量PEEP *m_pPeep[2]; //玩家拥有的马灯结构(包括透视周围三颗棋子的坐标) WORD m_wFreePropsUsedCount[2][5]; //免费道具使用数量bool m_isUsedBoughtProps[2]; //是否使用了购买的道具WORD m_wBuyPropsUsedCount[2][5]; //购买道具使用数量WORD m_wBeUsedPropsCount[2][5]; //被道具作用次数LONG m_lUserUsedPropsCoin[2]; //各个玩家使用道具的金币数CMD_S_Guess m_guess; //猜谁先行Chess m_clientChessArr[6][6]; //对应的客户端的棋盘数组Chess m_seizeChessArr[2][16]; //玩家吃子数组BYTE m_cbSeizeChessCount[2]; //玩家吃子数BYTE m_cbPromisePeaceCount[2]; //玩家被答应和棋的数量BYTE m_cbPromiseGiveupCount[2]; //玩家被答应认输的数量WORD m_wBegPeaceStatus[2]; //玩家求和状态WORD m_wBegGiveupStatus[2]; //请求认输状态WORD m_wTimeOutCount[2]; //玩家超时次数WORD m_wThinkTime[2]; //思考时间(可变)bool m_isOver[2]; //玩家是否被吃光棋子或者主动认输bool m_isRevokeOffLine[2]; //是否掉线后回来BYTE m_cbColor[2]; //玩家所执的棋子颜色WORD m_wCurrentUser; //当前玩家WORD m_wStepCount; //当前游戏步数WORD m_wTimeUsed; //每步已用时WORD m_wMoveToNullCount; //空步(只是单纯的移动棋子)数,用于判断和棋WORD m_wFirstRunUser; //先行者BYTE m_cbPlayStatus; //游戏开始后的状态 (2) 客户端变量所在类:CGameViewWORD m_wGamePlayer; //游戏人数WORD m_wCurrentUser; //当前玩家WORD m_wLimitTime; //总时间WORD m_wStepLimitTime; //离超时还剩余的时间WORD m_wTimeOutCount; //超时次数bool m_isLimitTime; //是否限时bool m_isDrawTime; //是否画限时WORD m_wPeaceReqGapTime; //求和间隔时间WORD m_wGiveUpReqGapTime; //认输间隔时间WORD m_wStepCount; //游戏步数bool m_isLookon; //是否旁观bool m_isPeaceAnswered; //求和是否回应了bool m_isGiveUpAnswered; //认输是否回应了所在类:CgameView2pS(派生自CGameView)ChessboardView2pS m_chessboardView; //棋盘视图BYTE m_cbColor[2]; //玩家执子颜色COLORREF m_textColor; //聊天文字颜色bool m_isOver[2]; //玩家是否完了WORD m_wThinkTime[2]; //玩家思考时间PEEP_3INFO *m_pPeep; //马灯结构指针WORD m_wPeepCount; //马灯数量WORD m_wOtherPeepCount; //其他人的马灯数量WORD m_wTrapCount; //陷阱数量BYTE m_cbPropsCount[5]; //各个道具可用数量3.3.3消息结构本软件消息结构包括游戏服务端消息结构和客户端消息结构,数据结构如下:(1)服务端消息结构设计服务端消息结构分为主要分两部分定义,服务端消息定义和消息结构。
消息定义#define SUB_S_GAME_START 100 //游戏开始#define SUB_S_MOVE_CHESS 101 //移动棋子#define SUB_S_REGRET_REQ 102 //悔棋请求#define SUB_S_REGRET_FAILE 103 //悔棋失败#define SUB_S_REGRET_RESULT 104 //悔棋结果#define SUB_S_PEACE_REQ 105 //和棋请求#define SUB_S_PEACE_ANSWER 106 //和棋应答#define SUB_S_GAME_END 107 //游戏结束#define SUB_S_CHESS_MANUAL 108 //棋谱信息#define SUB_S_REQ_SET_RULE 109 //请求设置#define SUB_S_REQ_AGREE_RULE 110 //请求同意#define SUB_S_OPEN_CHESS 111 //翻开棋子#define SUB_S_FIRSTOPEN_CHESS 112 //未确定颜色时,第一次翻开棋子#define SUB_S_CLOSE 114 //强退#define SUB_S_GIVEUP_REQ 115 //认输#define SUB_S_GIVEUP_ANSWER 116 //认输应答#define SUB_S_CURRENT_USER 117 //指派谁走棋#define SUB_S_GUESS 118 //猜谁先走#define SUB_S_START_GUESS 119 //开始猜先#define SUB_S_SOMEONEGUESS 120 //某人已经出手了#define SUB_S_BREAK_END 121 //强退结束#define SUB_S_PEACE_END 122 //和棋结束#define SUB_S_NORMAL_END 123 //正常结束#define SUB_S_GUESSING_END 124 //猜拳状态下结束#define SUB_S_TIME_OUT 125 //玩家超时#define SUB_S_MOVE_STILL 127#define SUB_S_OPEN_PROPS 130 //翻开道具#define SUB_S_USER_OVER 135 //玩家被吃光了#define SUB_S_PROPS_RESTART 140 //重开#define SUB_S_PROPS_BOMB 141 //炸弹#define SUB_S_PROPS_PEEP 142 //走马灯#define SUB_S_PROPS_TRAP 143 //陷阱#define SUB_S_PROPS_LIMIT 144 //禁锢#define SUB_S_PROPS_WINLOST 145 //胜负道具#define SUB_S_OTHER_USER_PEEP 149 //其他玩家设置了马灯#define SUB_S_NOT_ENOUGH_COIN 150 //金币不足#define SUB_S_BUY_SUCCESS 151 //购买成功#define SUB_S_REMOVE_LIMIT 160 //消除禁锢#define SUB_S_IN_TRAP 161 //中陷阱#define SUB_S_NO_EFFECT 162#define SUB_S_MOVING_FOUND_TRAP 163 //移动棋子发现陷阱而无法移动#define SUB_S_LAYPROPS_FOUND_TRAP 164 //放置道具发现陷阱而无法移动 消息结构struct ChessWithCoord{BYTE iBePeeped;BYTE jBePeeped;Chess chess;};struct CHESS_COORD //棋子数组坐标{BYTE i;BYTE j;};struct TRAP{BYTE iTrap;BYTE jTrap;WORD wTrapUser;};struct CMD_S_FirstOpenChess{BYTE i; //棋子数组下标BYTE j;Chess chess; //棋子WORD wCurrentUser; //当前玩家WORD wOpenUser;WORD wOpenUserThinkTime; //翻棋玩家思考时间};struct CMD_S_OpenChess{BYTE i; //棋子数组下标BYTE j;Chess chess; //棋子WORD wCurrentUser; //当前玩家WORD wOpenUser;WORD wOpenUserThinkTime; //翻棋玩家思考时间};struct CMD_S_OpenProps{BYTE i; // BYTE j; // Chess chess; // WORD wCurrentUser; // WORD wOpenUserThinkTime; //翻棋玩家思考时间};struct CMD_S_MoveChess{WORD wMoveUser; //移动棋子的玩家BYTE iSrc; // BYTE jSrc; // BYTE iDst; // BYTE jDst; // WORD wCurrentUser; //当前玩家WORD wMoveUserThinkTime; //翻棋玩家思考时间};struct CMD_S_StartGuess{WORD wGuessUser1; //猜先玩家一WORD wGuessUser2; //猜先玩家二};struct CMD_S_SomeoneGuess{WORD wGuessUser; //已出手的玩家};struct CMD_S_Close{WORD wCloseUser; //强退玩家};struct CMD_S_PeaceRequest{WORD wPeaceRequestUser; //求和玩家};struct CMD_S_GiveUp{WORD wGiveupUser; //认输玩家};struct CMD_S_CurrentUser{WORD wCurrentUser; //服务器指定谁走下一步};typedef struct tagSystemAction{BYTE cbActionType; //系统帮走类型BYTE iSrc;BYTE jSrc;BYTE iDst; //若cbActionType不等于ACTION_MOVE,此值作废BYTE jDst;} SYSTEMACTION;struct CMD_S_TimeOut{WORD wTimeOutUser;WORD wThinkTime;WORD wCurrentUser;};struct CMD_S_Guess{WORD wGuessUser1; //玩家一WORD wGuessUser2; //玩家二BYTE cbGuessUser1Type; //石头剪刀布其中之一BYTE cbGuessUser2Type; //石头剪刀布其中之一};struct CMD_S_GuessResult{CMD_S_Guess guess; // WORD wWinner; //赢家椅子号};struct CMD_S_Over{WORD wOverUser; //被吃光棋子的玩家};struct CMD_S_BuySuccess{BYTE cbPropsType; //道具类型};struct CMD_S_Props_Restart{WORD wCurrentUser; //当前玩家};struct CMD_S_Props_Bomb{BYTE i; //被炸棋子数组下标BYTE j;bool isNoBomb; //是否没有炸弹道具了WORD wCurrentUser; //当前玩家WORD wBombUser; //扔炸弹玩家WORD wBeBombedUser; //被炸玩家};struct CMD_S_Props_Trap{BYTE iTrap; //陷阱下标BYTE jTrap;bool isNoTrapProps; //是否没有陷阱道具了WORD wTrapUser; //设置陷阱的玩家WORD wCurrentUser;};struct CMD_S_InTrap{WORD wMoveUser; //移动棋子的玩家WORD wTrapUser; //设置陷阱的玩家BYTE iSrc; //BYTE jSrc; //BYTE iDst; //BYTE jDst; //WORD wCurrentUser; //当前玩家WORD wMoveUserThinkTime; //移动玩家思考时间};struct CMD_S_Props_Limit{bool isNoLimitProps; //是否没有禁锢道具了WORD wLimitUser; //使用限制道具的玩家WORD wBeLimitUser; //被限制玩家WORD wCurrentUser; //当前玩家};struct CMD_S_RemoveLimit{WORD wBeLimitUser; //被限制玩家};struct CMD_S_No_Effect{BYTE cbPropsType;};/****************************************************************************** *****/struct tagGameAwardData{//奖券奖励条件(局数)WORD wGameNumberOfCrystalAward[CRYSTALAWARD_CONDICTION_COUNT];//服务费的百分比作为奖券奖励BYTE cbPercentOfService[CRYSTALAWARD_CONDICTION_COUNT];//积分等级short sScoreForLevel[SCORE_LEVEL_COUNT];//奖券加成百分比BYTE cbPercentOfCrystalAward[SCORE_LEVEL_COUNT];};struct CMD_S_Guessing_GameEnd{WORD wBreakUser; //猜拳状态下强退的玩家};struct CMD_S_Break_GameEnd_2p{WORD wBreakUser; //强退玩家LONG lFleeGoldCoin; //强退玩家被扣除金币数LONG lFleeScore; //强退玩家被扣除分数LONG lWinnerGameGoldCoin;//赢家赢得的游戏金币LONG lGameRevenue; //服务费用LONG lWinnerGameScore; //赢家游戏分数LONG lWinnerGameExp; //赢家经验值BYTE cbSeizeChessCount[2]; //玩家吃子数};struct CMD_S_Peace_GameEnd_2p{LONG lGameRevenue;BYTE cbSeizeChessCount[GAME_PLAYER_2P];};struct CMD_S_Normal_GameEnd_2p{WORD wWinner; //其中之一赢家LONG lWinnerGameGoldCoin;//赢家赢得的游戏金币LONG lGameRevenue; //服务费用(金币)LONG lWinnerGameScore; //赢家赢得的游戏分数LONG lWinnerGameExp; //赢家经验值LONG lLoserGameExp; //输家经验值BYTE cbSeizeChessCount[2]; //玩家吃子数};struct PEEP{BYTE iPeep;BYTE jPeep;WORD wPeepUser;ChessWithCoord chessWithCoord[3];};struct OTHER_PEEP{BYTE iPeep;BYTE jPeep;WORD wPeepUser;};struct CMD_S_Props_Peep{BYTE iPeep; //走马灯所在数组下标BYTE jPeep;bool isNoPeepProps; //是否没有马灯道具了WORD wCurrentUser; //当前玩家ChessWithCoord chesswithcoord[3];//走马灯透视周围三颗棋子};struct CMD_S_OtherUser_Peep{BYTE iPeep;BYTE jPeep;WORD wPeepUser; //使用马灯的玩家WORD wCurrentUser; //当前玩家};struct CMD_S_StatusFree_2p_Super{WORD wGamePlayer; //玩家数量WORD wGameMode;//游戏模式,0为经典场,1为超级场tagGameRuleInfo GameRuleInfo; //游戏规则tagGameAwardData GameAwardData; //奖券奖励数据LONG lCellScore; //房间倍数void *pServerData; //服务器端的数据BYTE cbBuyPropsBaseCoin[5];//道具购买基数,乘以房间倍率就是道具价格BYTE cbPropsLimitBuyCount[5];//道具限制购买数量};struct CMD_S_StatusGuess_2p_Super{WORD wGamePlayer;WORD wGameMode; //游戏模式,0为经典场,1为超级场tagGameRuleInfo GameRuleInfo; //游戏规则tagGameAwardData GameAwardData; //奖券奖励数据LONG lCellScore; //房间倍数bool isUser1Guess; //玩家数量bool isUser2Guess;bool isRevokeOffLine; //是否是断线重连BYTE cbBuyPropsBaseCoin[5];//道具购买基数,乘以房间倍率就是道具价格BYTE cbPropsLimitBuyCount[5]; //道具限制购买数量};struct CMD_S_StatusPlay_2p_Super{WORD wGamePlayer; //玩家数量WORD wGameMode;//游戏模式,超级场为1,普通场为0 tagGameRuleInfo GameRuleInfo; //游戏规则tagGameAwardData GameAwardData; //奖券奖励数据LONG lCellScore; //房间倍数WORD wCurrentUser; //当前玩家WORD wStepCount; //走棋步数BYTE cbColor[GAME_PLAYER_2P];Chess ChessArr[V_COUNT_2P_S][H_COUNT_2P_S];Chess lostChessArr[GAME_PLAYER_2P][SEIZE_CHESS_COUNT_2P];WORD wThinkTime[GAME_PLAYER_2P]; //思考时间WORD wTimeRemaining;bool isRevokeOffLine; //是否是断线重连bool isLimited[GAME_PLAYER_2P];BYTE cbPeepCount; //马灯数量BYTE cbOtherPeepCount; //其他人的马灯数量BYTE cbTrapCount; //陷阱数量BYTE cbPropsCount[5]; //道具数量BYTE cbBoughtPropsCount[5];//购买过的道具数量bool isOver[GAME_PLAYER_2P];BYTE cbBuyPropsBaseCoin[5];//道具购买基数,乘以房间倍率就是道具价格BYTE cbPropsLimitBuyCount[5];//道具限制购买数量};(2)客户端消息结构设计客户端消息结构主要也分两部分定义,客户端消息定义和消息结构。