在对战游戏中使用榜单,可以鼓励棋友与别人进行比较,从而激发他更多的提升自己的分数的热情。
本节概要
- 实现象棋游戏的积分机制
- 上报玩家积分
- 呈现玩家排行
现在实现一个榜单,我们有三个方面的问题要面对:
- 积分方案的设计
- 服务端实现榜单查询云服务
- 积分查询和上报
对于我们目前阶段的中国象棋游戏,我们鼓励对战,这是我们游戏的主要内容。所以我们的积分体系中对在「单机对战」中获胜的事件、以及在「挑战云主机」获胜事件进行积分奖励:
- 战胜手机 AI + 5分
- 战胜云服务器 + 30分
现在我们先来处理用户的积分问题!
实现积分机制
为了能给每个用户一个唯一的 ID,我们需要添加一个新的三方插件 uuid,在 pubspec.yaml
中添加 uuid 的最新版本,保存后 vscode 会自动开始插件 pub get 指令下载插件代码:
...
dependencies:
...
uuid: ^2.0.4
...
接着,我们在 lib/services 文件夹下新建 ranks.dart 文件,在其中首先创建一个 RankItem 类:
class RankItem {
//
String name;
int winCloudEngine, winPhoneAi;
RankItem(Map<String, dynamic> values) {
name = values['name'] ?? '无名英雄';
winCloudEngine