ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:87.79KB ,
资源ID:22180547      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22180547.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络斗地主服务端项目文档DOC 28页Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络斗地主服务端项目文档DOC 28页Word文档下载推荐.docx

1、进入和退出桌子的方法已经加了线程保护synchronized,所以此方法就不用加线程保护。桌子用户数 i 获取桌子用户数的方法在斗地主桌子类中给玩家找桌子的方法中会用到,主要配合方法k判断当前桌子玩家数有没有满得到桌子用户数j 设置桌子允许最大用户数的方法在初始化桌子信息时,可根据游戏不同传入不同的参数桌子允许最大用户数 k 获取桌子允许最大用户数的方法主要用来判断当前桌子玩家数有没有满得到桌子允许最大用户数l 设置桌子状态的方法如准备中、叫分中、玩牌中桌子的状态 m 获取桌子状态的方法得到桌子的状态n 设置桌子用户列表的方法在桌子初始化时,给每个桌子加一个包含三个空对象的用户列表桌子的用户列

2、表 o 获取桌子用户列表的方法得到一个桌子的用户列表,便于遍历桌子中的每个玩家得到桌子的用户列表p 设置桌子消息队列的方法初始化桌子信息时,每个桌子对象都会new一个消息队列,所以这个方法一般不会用到桌子的消息队列 q 获取桌子消息队列的方法获取到桌子的消息队列,可使用队列的add方法添加消息。得到桌子的消息队列r 将收到的消息加入到桌子的消息队列中将消息加入到桌子的消息队列中,会被处理所有桌子消息队列的线程MessageThread处理消息类型、消息对象实现过程:1创建一个消息队列单元类型MessageUnit的对象unit2把参数消息类型和消息对象打包到unit中3调用方法q得到消息队列对

3、象,用消息队列对象的添加方法,把unit添加到消息队列中s 给桌子的玩家列表中的每个玩家发送消息的方法t 玩家进入桌子的处理(同一时刻只能有一个线程执行此操作)被斗地主房间类中找桌子的方法调用(找桌子的方法是先找有2人的桌子,再找有1人的桌子,最后找无人的桌子)玩家对象是否进入成功传入一个玩家对象,判断桌子是否有空位(被找桌子的方法调用时此判断无用),有空位则遍历桌子用户列表中为空的玩家给替换掉进入成功,否则进入失败u 玩家退出桌子的处理(同一时刻只能有一个线程执行此操作)玩家退出桌子后对桌子的处理遍历桌子的玩家列表,取得每个玩家的用户名与参数的用户名比较,把相同的置空,减少桌子的用户数v 进

4、入桌子所属的房间玩家进入桌子所属的房间后的处理通过方法b获取得到桌子所属的房间ID,来增加当前房间的人数w 退出桌子所属的房间:玩家退出桌子所属的房间后的处理 用户名通过方法b获取得到桌子所属的房间ID,来减少当前房间的人数并且移除此用户x 开始游戏:在子类中会被重写,暂无定义y 结束游戏:在子类中会被重载,暂无定义z 同步信息:nullaa 超时处理:3 玩家Player类用户名、玩家交互、所属的桌子(可能没有桌子),用户ID,昵称 a 构造方法:b 发送给当前玩家消息的方法c 设置当前用户名的方法设置当前用户名d 获取当前用户名的方法获取当前用户名e 设置当前玩家交互的方法设置当前玩家的交

5、互用户交互实例(被服务端用来识别用户)f 获取当前用户交互的方法获取当前玩家交互实例当前玩家交互实例g 设置当前用户所在的桌子方法设置当前用户所在的桌子当前用户所在的桌子h 获取当前用户所在的桌子的方法获取当前用户所在的桌子用户所在的桌子i 设置当前用户ID的方法标记客户端,服务端数据也应该以此为用户信息表的主键当前用户IDj 获取当前用户ID的方法用户IDk 设置当前用户昵称的方法l 获取当前用户昵称的方法4 牌Card类面值、花色、权值a 构造方法1 注释:初始化牌的面值、花色和权值(权值默认初始化为1)数值、花色 b 构造方法2初始化牌的面值、花色和权值 (按传入的参数初始化权值)数值、

6、花色 、权值 c 获取牌面值的方法获取牌的面值面值d 获取牌花色的方法获取牌的花色花色e 获取牌权值的方法获取牌的权值权值f 设置牌权值的方法设置牌的权值5 牌组CardArray类 牌组中牌的张数、牌对象的数组、牌组的权值a 构造方法1 初始化牌的张数、牌对象的数组、牌组的权值 (牌组权值默认初始化为1)牌组中牌的张数、牌对象的数组初始化牌的张数、牌对象的数组、牌组的权值 (按传入的参数初始化牌组的权值)牌组中牌的张数、牌对象的数组、牌组的权值 构造方法3牌对象c 构造方法4初始化牌的张数、牌对象的数组、牌组的权值 (牌组权值默认初始化为1) 无 d 获取牌组中牌的张数方法获取牌组中牌的张数

7、牌组中牌的张数e 获取一个排序后的全部数值数组1获取一个排序后的全部数值数组(默认按照面值递增排序)一个排序后的牌组f 获取一个排序后的全部数值数组2获取一个排序后的全部数值数组(按照传入参数方式排序)排序方式(面值正排序1、面值逆排序2、权值大小正排序3或权值大小逆排序4)一个排序后的数值数组g 添加牌对象1添加牌对象一个添加后的牌组h 添加牌对象2添加牌对象的数组牌对象的数组i 删除牌对象1删除牌对象删除后的数值数组j 删除牌对象2删除牌对象的数组k 比较面值是否相同1比较数值是否相同是否相同l 比较面值是否相同2m 比较数值是否相同3比较数值是否相同 牌组类的对象n 比较数值是否包含1比

8、较牌对象数值是否包含 是否包含o 比较数值是否包含2比较牌对象的数组的数值是否包含p 比较数值是否包含3比较牌类对象的数值是否包含牌组对象q 是否清一色比较牌对象是否相同花色是、否r 获取牌组对象的权值获取牌组对象的权值牌组对象的权值s 设置牌组对象的权值 设置牌组对象的权值t 比较牌组对象权值的大小 比较牌组对象权值的大小要比较的牌组对象的权值1(大于)、0(等于)、-1(小于)/斗地主游戏框架6 斗地主房间RoomDdz3类 继承Room类房间底注b 设置斗地主房间底注的方法设置斗地主房间底注要设置的底注的值c 获取斗地主房间底注的方法获取斗地主房间底注d 重写父类自动分配桌子的方法给玩家

9、找到一个有位置的桌子,先找已经有2人的桌子,如果没有再找已经有1人的桌子,如果没有再找已经有0人的桌子,如果没有则返回null分配到的桌子调用找桌子方法e 找桌子的方法桌子的人数,玩家对象找到的桌子7斗地主桌子TableDdz3类 继承Table类 桌子底注、倍数、谁是地主、最高分数、叫分次数 当前操作人、当前出的牌、牌型、用户的牌(Map) 已准备的人数、叫分人、上一轮出的牌(Map) 、炸弹 春天、时间、时间限制、不出次数a 构造方法 初始化属性用户的牌、上一轮出的牌为 初始化倍数默认为1.b 准备游戏线程MessageThread处理准备游戏时调用此函数玩家状态,玩家对象c 叫分线程Me

10、ssageThread处理叫分时调用此函数叫分的消息包,玩家对象d 不叫分线程MessageThread处理不叫分时调用此函数e 出牌线程MessageThread处理出牌时调用此函数出牌的消息包,玩家对象f 换桌线程MessageThread处理换桌时调用此函数快速游戏的消息包,玩家对象g 托管/取消托管线程MessageThread处理托管/取消托管时调用此函数托管的消息包,玩家对象h 退出游戏线程MessageThread处理退出游戏时调用此函数退出游戏的消息包,玩家对象i 打牌结果处理线程ResultThread处理打牌结果时调用此函数斗地主玩家对象,玩家列表,斗地主桌子对象j 计算金

11、币斗地主桌子对象,用户名,结果消息包,是否赢,是否是地主结果消息包k 开始游戏线程ResultThread处理打牌结果时调用此函数,包括调用洗牌发牌,随机叫分方法l 游戏结束重置斗地主桌子属性和玩家列表m 离开游戏 n 斗地主桌子属性的获取和设置方法8 斗地主玩家PlayerDdz3类 继承Player类 金币数、角色名称、胜数、输数、 状态、得分、叫分、是否是地主、 是否准备、打牌超时次数、操作时间、托管、打牌次数 b 发送消息给自己消息类型,消息对象c 斗地主玩家属性的获取和设置/游戏数据9 数据库连接池管理类DbManager 创建连接数据库的方法 数据源 (2)方法 a 初始化读取配置

12、文件,获取数据库的位置,连接用户名和密码等信息,并加载到数据源。 b 加载配置信息的方法把配置信息加载到数据源要加载的信息实例 c 同步配置信息的方法如果数据源为空,就重新加载 返回值 : 无 d 修改保存的方法修改数据库内容并保存数据库名,要修改内容对象修改结果 e 获取与数据库的连接实例的方法得到数据库连接的实例 f 关闭与数据库的连接实例的方法数据库连接的实例10 房间数据库管理方法类RoomDao:(1)属性: (2)方法: a 加载数据库中房间信息的方法根据游戏类型获取数据库中的房间信息加载到每个新建的房间对象中游戏类型(三人斗地主或者其他)加载好的房间列表 b 加载数据库中用户的信

13、息根据用户名获取数据库中的用户信息加载到每个新建的用户对象中加载好的用户对象11 任务数据库管理方法类TaskDao 任务数据库管理方法类实例(2)方法: a 构造方法:空 b 获取任务数据库管理方法类实例 参数: 返回值:得到任务数据库管理方法类实例c 新建一个任务数据库管理方法类实例d 获取任务列表任务列表e 检测任务是否完成任务类型,用户名完成或未完成 f 查询用户的任务列表 g 创建用户名和任务的键值MAP一组用户名用户名和任务的键值MAPh 更新任务列表 参数:打牌结果处理包实例 返回值:12 玩家信息数据库管理方法类UserDao:属性:方法:a 添加一个用户用户信息包实例b 验证

14、用户是否注册(暂时不用)存在或不存在c用户登录验证(暂时不用) 注释:在登录成功后就新建个用户信息包来保存当前数据库中的用户信息。包括金币,输数,赢数,等级和网名用户详细信息实例13数据库数据初始化到内存的方法类 定义一个房间列表的引用(用来只想新建的房间列表)roomList a、初始化房间到内存方法初始化房间信息,桌子信息和每个桌子一个空用户列表 实现过程:使用MINA为我们提供的编解码器工厂来对字符串进行编解码处理,组装编解码器EncoderBeanBaseMessageEncoderBaseMessageDecoder三个类5注册ServerHandler处理client传过来的数据6

15、绑定端口号c 服务端启动的入口函数:main服务端启动输入行参数argsnew了一个Server类的对象调用bindServer初始化服务端配置查询数据库初始化房间信息、桌子信息和用户交互信息HeartBeatThread 线程发送心跳信息MessageThread 线程处理所有桌子的消息队列CounterThread线程处理打牌超时,或者准备超时的处理ResultThread 线程处理显示打牌结果记录房间和桌子信息于文件(调试使用) 15编码包类EncoderBean类发送消息时将要发送的信息放入EncoderBean类对象中编码类型(有默认编码类型)、要编码的内容、自定义编码类型b 获取编

16、码类型的方法: 获取编码类型无 编码类型c 设置编码类型的方法:设置编码类型 编码类型 d 获取要编码内容的方法:获取要编码的内容编码的内容e 设置要编码内容的方法:设置要编码的内容编码的内容 f 获取自定义编码类型的方法:获取自定义编码类型自定义编码类型g 设置自定义编码类型的方法:设置自定义编码类型16 编码打包方法类BaseMessageEncoder类发送消息写入缓冲区实例之后将调用此类中的encode函数b 编码方法encode:把写入到缓冲IoBuffer中的编码包类对象编码并发送session实例、编码包对象、encode输出方法类对象17 解码方法类BaseMessageDec

17、oder类收到client数据后调用此类中的decode方法解包 定义一个保存在IoSession中的对象的键值b 判断是否可解码的方法:decodable是否可解码当前session实例,输入缓冲buffer实例 是否可解码c 解码的方法:decode对收到的数据解码 session实例,输入缓冲buffer实例,decode输出方法类实例 解码结果(解码完成、还需要数据)18 服务端处理数据ServerHandler类a 构造函数注册StringHandler处理client传过来的数据 b 发送消息的方法:sendBeanMsg把要发送的消息实例和协议传入,然后发送session实例,协

18、议值,消息对象创建数据包PackData类的对象把传入的参数协议值和消息对象set到packdata对象中调用方法发送消息方法写入IoBuffer缓冲区c 发送消息方法:sendMsg 把消息对象参数解释成json的String,再由参数session对象的write方法写入缓冲区,框架会调用enconde函数将缓冲区内的buffer编码打包并发送。session实例,消息对象创建编码对象bean把消息对象参数解释成json的String,打包到编码对象bean中再由参数session对象的write方法把bean写入缓冲区,由框架调用encode编码发送。19 服务端处理数据StringHa

19、ndler类 用户服务类对象,房间服务类对象,桌子服务类对象,聊天服务类对象目前将接收到的数据分成这4类来处理,用户服务类单独提出来提供测试使用的注册和登录服务,房间服务类单独提出来提供测试使用的游戏大厅的服务a 处理客户端发来的数据handleMessage客户端发来数据经解码后由ServerHandler发过来,此功能就是从数据中找到消息类型(即协议),根据不同的数据类型执行对应的操作。当前交互实例,消息实例 实现过程: 把传过来的json型String对象转成数据包类型PackData类对象使用数据包PackData类的获取数据类型的方法得到数据类型根据不同的数据类型选择不同的执行方法/游戏交互数据处理20 心跳线程HeartBeatThread类a 构造函数:b 线程运行函数:客户端会持续

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1