几乎所有的棋牌实现都是异步的, 玩家操作全是回调, 代价是更难理解和更复杂的逻辑;
其中一个异步逻辑实现的麻将, 由于异步所以要存储的状态太多,一个文件代码量都达到了4000行, 当然我也得感谢这个项目, 让我吸取了精华并想改进之.
本项目将尝试模拟现实中的同步打牌过程, 更简单易懂. 不过都一切都已经封装好了, 同步思路的优点就是整个框架只有2000行代码不到. 而你要完整写出一个麻将游戏也只要实现框架中几个接口就行了 .
框架由着以下组件组成
- 管理员
牌桌管理员将负责整个打牌逻辑, 控制该谁打牌
- 发牌器
负责生成棋牌, 发牌
- 玩家领导
选举庄家, 获取下家, 生成玩家实体
- 消息通知器
通知玩家应有的动作
- 玩家
生成玩家能够进行的动作(碰杠胡), 处理玩家动作
将整个游戏逻辑分成几个组件, 你只需要实现他们即可.
通信层与麻将逻辑完全分离, 除了通知玩家动作这个通知是程序必须的以外, 其他所有的通知由你自定义.
自动保存牌局快照, 自动保存玩家动作.
断线重连只需要再次发送牌局和需要的动作就行.
整个框架做得事情偏少, 更多的是一种思路. 建议将具体麻将实现一并阅读: /example .