源码、文档、配置齐全十天助力开发简易棋牌游戏
感谢社区 ID:zifely 的友情贡献,内含开源代码、讲解文档、多端配置等素材,已经是个完整游戏,刚接触 Cocos Creator 的新手们或者对棋牌感兴趣但苦于无教程可学的小伙伴不妨进来练练手,要知道有人算出来说一个人口80万的县城,做地方棋牌+地方玩法+方言配音,可以轻松做到一年 100 万流水,而且能够直接火出国界。
文件组成
源码、文档、配置齐全,十天助力开发简易棋牌游戏!
client:客户端,使用 Cocos Creator 打开即可
sever:服务器端,使用 node.js 编写,是一个极简的服务器,只是做了一下简单的封装,仅供学习使用。
client_console:客户端测试程序,可以模拟登陆,进房间。
服务器 Sever 配置
用的是 mysql,所以得先在 mysql 中创建一个名为 hongshi 的 database,然后导入 hongshi.sql。
然后 npm 安装需要的包,主要是 ws,express,别的你运行 node server.js 提示缺什么就 npm install 什么。
如果你有时间可以写一下配置文件,然后直接 npm install 就可以了。
node server.js 运行服务器程序:
进入 IpGet 目录,然后 node socket_io_ip_server.js(这一步不是必需的),它主要用来获取客户端的 IP 地址,因为 ws 库没有找到获取 IP 地址的方法。
理论上可以获得 IP 地址甚至 MAC 地址。
客户端 client 配置
主要场景
主要场景文件位于assets/scenes/ 目录下,包括
Login.fire 游戏的登陆界面
Hall.fire 游戏的大厅界面
Game.fire 正式玩游戏的界面
预制资源
预制资源为主要的弹出界面,保存在 assets/panel/ 目录下包括但不限于以下:
AgentPanel 代理界面
BroadcastPanel 广播界面
ChatPanel 聊天界面
CreateRoomPanel 创建房间界面
EnterRoomPanel 进入房间界面
FinalResultPanel 进行完所有比赛的比赛结算界面
HowToPlayPanel 玩法界面
InviteCodePanel 邀请码界面
RecordDetailPanel 一场房间的比赛里面每一局的数据界面
RecordMainPanel 一场房间的比赛的总的数据界面
ResultPanel 一局结束时候的结算界面
ScreenMessage 弹出系统消息的界面
SettingPanel 设置界面
SharePanel 分享界面
ShopPanel 商城界面
UserInfoPanel 用户信息界面
上述预制资源军通过 uicreator.js中的函数来调用。
其余预制资源
因为一个界面下可能有多个相同 item 组件,所以将这些 item 组件作为预制资源存放在 assets/item/ 目录下。
辅助脚本
辅助脚本均放在 assets/scripts/assist/ 目录下,主要脚本和功能如下:
AnimInAndOut:调用该脚本的节点在 onLoad 的时候会自动进行一个渐现的同时放大的动作,同时脚本中包含关闭的时候渐隐的同时缩小的动作
AnimMoveInAndOut:调用该脚本的节点在 onLoad 的时候会从屏幕的右侧进入,在消失前会进行右移出屏幕的动作
SDKManager:该脚本用于实现 AnySDK 中接入 SDK 的一些通用功能,如:登陆,分享,支付等
ScreenShoter:该脚本用于截屏,并将截屏后的图片保存在本地
基础脚本
audioPlayer:该脚本封装了 Cocos Creator 的音频接口,用于播放音效和音乐,并且可以通过该脚本提供的接口控制音效和音乐的大小
hongshi: 基础的脚本,用户信息以及游戏运行中获得的其他用户的数据都会作为 hongshi 的成员变量保存在整个游戏运行过程中
nativeLoader: 该脚本用于下载远程 url 对应的图片到本地并保存
netEngine: 该脚本用于以 WebSocket 的方式与服务器端进行网络通信
pokerPutHelper:出牌的所有逻辑,包括判断牌的类型,判断几张牌能否跟得上另外几张牌,根据别人出的牌获得我所有的可以出的牌等
uicreator:为所有通过 cc.loader.loadRes 提供的通用的接口
网络通信
客户端主要通过 WebSocket 和服务器进行通信,有关 WebSocket 通信的细节见 netENgine.js 脚本,其中主要以短连接为主(netEngine.send 函数),即客户端发送一条消息给服务器,服务器处理之后会返回消息给客户端,客户端接收到服务器返回的消息后便会断开这个 WebSocket 连接。
另外的一个就是长链接(通过 netEngine.register),目前只有一个长链接(即 'enterroom' 消息),用户进入房间(即 Game 场景)后即与服务器进行一个长连接,即一直不断开 WebSocket 通信,这个时候客户端通过接受服务器端返回的房间数据来更新当前房间的消息,通过继续通过出牌、聊天等向服务器发送聊天消息。
注意事项:
目前的长连接只有一个,后续还需至少增加一个,用于监听网络,当网络断开时自动跳回到 Login 场景
目前服务器返回的数据为没有经过处理的房间数据,所以客户端也是按照这种数据来进行处理的;后期服务端需要更改返回的数据,所以客户端也需要做相应调整。
Game.js
Game.js 是 Game 场景中的主要脚本,游戏场景中主要有四个状态:
'Waiting'状态:房间等待的状态
'ShowRed'状态:亮红状态
'Gaming'状态:打牌阶段的状态
'SomeoneOffline'状态:有人离线的时候的状态
客户端会根据接收到的数据的 type 类型来进行判断,并更新当前客户端的状态。 关于如何处理见 Game.js 脚本中的 handle 函数。
客户端命令行 client_console 配置
源码、文档、配置齐全,十天助力开发简易棋牌游戏!
写这几个程序的原因主要是为了方便进行测试。
因为需要做的是四个人玩的红十,所以需要开三个机器人进入房间一起玩。
目前的功能是:
输入 node game_console.js 123456 100001 就能使 ID 为 100001 的用户进入 roomId 为 123456 的房间。
输入 node assist.js 123456 100001 roomPrepare roomId:123 prepare:true 就能让在 roomId 为 123456 的 ID 为 100001 的玩家进入准备状态
输入 node assist.js 123456 100001 roomPrepare roomId:123 prepare:false 就能让在 roomId 为 123456 的 ID 为 100001 的玩家取消准备状态
参考资料来源
Cocos Creator 官网
http://www.cocos.com/
Cocos Creator 官方教程
http://www.cocos.com/docs/creator/
Cocos Creator 论坛
http://forum.cocos.com/
Cocos Creator Api
http://www.cocos.com/docs/creator/api/
诚然,这个花费了我整整十来天时间制作出来的棋牌游戏还有不少 Bug ,文档、源码和配置都已经开放给大家,希望这套资源能够给小伙伴们尤其是新接触 Cocos Creator 的小萌新带来帮助。
- 上一篇:微信推广引流的技巧
- 下一篇:通过流量清理防御DDoS