- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Socket安卓棋牌类对战游戏设计与实现
基于Socket安卓棋牌类对战游戏设计与实现
摘 要:随着安卓设备和4G网络的迅猛发展,安卓棋牌类网络对战游戏成为休闲娱乐的热门应用,相对于单机游戏越来越受到用户的青睐。设计并实现了应用Socket协议的棋牌类网络对战游戏。设计了游戏的整体架构,分析了服务器端和客户端Socket通讯过程,阐述了通讯数据接收发送模块、客户端图形绘制模块、客户端操作控制模块、棋牌类规则加载模块等核心内容的实现。在局域网环境及Android真机上调试并实现了该游戏。
关键词:Android;Socket;手机游戏;棋牌;网络对战
DOIDOI:10.11907/rjdk.1511153
中图分类号:TP319
文献标识码:A 文章编号文章编号:1672-7800(2015)012-0099-02
0 引言
据最新IDC移动游戏市场分析数据显示,2015年第二季度游戏市场规模达到98.32亿元,环比增长6.37%,较2014年第二季度同比增长56.74%,越来越多的手机用户已经把手机游戏作为休闲娱乐的主要方式[1]。棋牌游戏具有学习成本低、玩法认同度高等特点,其单局时长一般控制在5分钟左右,适合移动端用户对碎片化时间利用的需求。相对于移动单机类游戏,移动网络对战类棋牌游戏7日留存比例高于整体水平,具有坚实的玩家基础。在此背景下,本文提出了基于Socket网络协议的安卓棋牌类网络对战游戏,通过对Socket协议、C/S开发模式以及SurfaceView框架的应用,对Android棋牌类网络对战游戏的开发方法和实现过程进行了探索。
1 游戏架构
本文中的棋牌类对战游戏采用C/S架构,在服务端专门构建了一个面向连接的SocketServer服务,采用了多线程技术对多个Android客户端进行相应的管理,服务端和客户端之间通过Socket网络协议进行稳定的连接及相应数据的接收、发送以及解析工作[2]。服务端采用Java程序实现了Socket端口监听,处理客户端连接请求,创建客户端处理线程。客户端采用Android自带的SurfaceView架构,通过双缓冲技术的使用,实现游戏内容无闪烁刷新显示。客户端由总控模块MyActivity、主游戏界面GameView、辅助游戏界面GameHelp、音乐控制模块GameMusic、游戏规则类GameGuize、客户端数据接收和发送类ClientAgent组成。客户端各模块之间通过handler进行相应内容的切换显示。整个对战游戏架构如图1所示。
图1 游戏架构
2 服务器端模块实现
2.1 服务器端和客户端Socket通讯过程分析
服务器端主要提供SocketServer服务,其与客户端通讯的一般流程为:循环监听指定的Socket端口,等待客户端连接;第一个客户端通过Socket连接,获取数据输入输出流,同时在服务器端启动一个客户端服务线程ServerAgent1,并告知该客户端等待;第二个客户端通过Socket连接,同样获取数据输入输出流以及ServerAgent2,同时判断是否可以开局游戏;若可以开局,则给连接上的每个客户端发送开始游戏指令,若有更多客户端加入,则循环上述过程直至开局;游戏过程中,各客户端按棋牌规则转换控制权,同时发送游戏数据至服务器端,服务器端在收到游戏数据后同步转发至所有客户端,从而实现所有客户端数据的同步刷新显示。
2.2 数据接收和发送自定义协议分析
棋牌游戏中所有交换数据都通过Socket协议,以数据流的形式在服务器端和客户端之间接收和发送,服务器端在接收到数据后,将数据转发到相应的客户端,客户端根据接收到的数据实现相应的操作,如开始游戏、等待其他用户加入、走棋、出牌、结束游戏等。
数据流分析:发送数据流时不是发送无规则的数据流,而是发送自定义协议的数据流,以便通知客户端接收到数据后采取何种操作[3]。本文棋牌类游戏设计了如下自定义协议:
服务器端到客户端:
num //告知连接上的客户端是第几个玩家
//告知客户端开始游戏,显示游戏开始画面
//告知该客户端获得控制权,可以走棋出牌
客户端到服务器端:
d,d,d,d //客户端走的棋或出的牌
//客户端跳过走棋或出牌
//该客户端获胜
通知各客户端开始游戏的接收和发送数据代码如下:
发送:p1.dout.writeUTF(); //给玩家1发送开始游戏信息
p2.dout.writeUTF(); //给玩家2发送开始游戏信息
p1.dout.writeUTF(); //给玩家1发送获取控制权信息
接收:String msg=din.readUTF(); /
您可能关注的文档
- 基于SERVQUAL GAP模型独立学院人力资源管理专业实践教学体系构建研究.doc
- 基于SERVQUAL奉贤校区图书馆服务质量评价及实证研究.doc
- 基于SERVQUAL和LSQ模型邮政EMS快递服务质量模糊评价研究.doc
- 基于SERVQUAL模型养老机构服务质量测量模型研究.doc
- 基于SERVQUAL模型供电服务质量评价及应用.doc
- 基于SERVQUAL模型通信企业EAP服务质量评估.doc
- 基于Servqual模型肝胆外科围术期护理质量影响因素研究.doc
- 基于SERVQUAL模型零售药店服务质量评价内容研究.doc
- 基于SERVQUAL模型西安农家乐服务质量提升研究.doc
- 基于SERVQUAL模型星级酒店服务质量提升研究.doc
文档评论(0)