2。相关技术背景
2。1 Cocos2d-x简介
Cocos2d-x中“x”有几个含义 :首先是C++的文件扩展,“X”表示程序由C++编写的,另一面表示着相互穿插编译,开源源码的目标是让一切初学者能够很快地接受源码学习。Cocos2d是用C++写的的底层引擎。因Cocos2d-x引擎编码具有跨平台的优点,另外Cocos2d源码容易掌握、能够使得最大程度的接受学习。所以Cocos2d-x能够长期驻足于初学者的手上。
Cocos2d是一个建立在MIT协议的开源框架上,用于创建游戏、使用程序和其余UI界面交互。是一个C++编写的版本。能用Cocos2d作为编码的核心是它本身具备跨平台以及其提供的开放源码。手游可以用C++及Lua编码,利用其核心代码可以使其全部兼备。Cocos2d-X的编码可以很方便地创建、调试在苹果、安卓、黑莓等操作系统上。Cocos2d-x还支持微软、Mac和Linux等电脑端操作系统,因而程序员们编写的代码有大部分功夫都是电脑上Coding及Debug。
Cocos2d-x的重要特性:Flow control(流程管制):容易管理差异。Scenes(场景)之间的流程切换;Sprites(精灵):容易好学的Sprites;Actions(动作):传递给精灵需要干什么。组合动作:Move(移动)、Rotate(旋转)和Scale(缩放);Effects(特效):包含Waves(波浪)、Twirl(旋转)和Lens(透镜)等;Tiled Maps(平面地图):支持矩形和多边形平面地图;Transitions(转换):从一个场景跳转到另一个页面;Menus(菜单):新建内部菜单;Text Rendering(文本渲染):支持Lable和HTML标签动作;Documents(文档):编码指导、程序编码参考还有许多教用户怎么去学的测试案例源码;OpenGL:支持硬件加速;脚本语言:支持Lua、JavaScript语言。
2。2数据结构及算法
2。2。1顺序容器vector
Vector是C++标准模板库中的部分,是一个多功能的库函数,能够完成多种数据结构和算法的模板类函数库。Vector就是一个像容器一样得,就是因为能够像杯子一样寄存不同种类的对象,通俗的讲,Vector是一个能够存放不限类型的动态数组,可以运用一些容易的方法来对数据进行增查改删操作。
2。2。2关联容器Map
Map是键值对的汇集,Map是一类型的关联容器:可使用它的下标来获取值,就和内嵌数组类型相同。而关联的本身在于元素的值与某个特定的键相联系,而不是通过某元素在数组中的排序来得到。往map容器里添加成员或取成员值时,假定成员为空就自动添加成员,在统计同样的类型牌的大小的时候,可以利用Map容器对牌来计数,最后找出牌的大小类型。
3。系统的总体设计
3。1软件的需求分析
该软件设计的是一款棋牌类斗地主游戏,用户登录之后看到人工智能自动发牌,在发牌之后可以进行选择是否叫地主,根据用户的叫分情况来判断是否为地主,进行出牌选牌。在进行玩牌过程中,要实现机器智能玩家快速的识别出牌。
软件功能模块图,如图1所示。
图1 软件功能模块图
3。2模块的构建
依照Cocos2d-x的棋牌类斗地主游戏的需求剖析来看,设计功能模块包括重玩模块、自动发牌模块、玩家叫分模块、出牌选牌模块、人工智能模块等。
3。2。1自动发牌
自动发牌可以理解为:当有3个玩家连接到服务器时,服务器自动洗牌分发给玩家,玩家收到牌数据后利用客户端的绘图函数动态的绘制牌,绘制牌的函数可以利用vector容器的一些增删查改操作结合Cocos2d-x自带的定时器,每隔一段时间Action一张牌,即可完成动态发牌的效果。文献综述