Go语言实现--定局积分赛制

mb5fdb0a1b25659 · · 975 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

比赛服的部分结构设计:

// 分数结构
type RoleScore struct {
    RoleId int
    Wheels int
    Score  int
}

// 奖励结构
type RewardsInfo struct {
    rewardType int // 奖励type
    number     int // 将励数量
}


竞赛详情设计:

// 竞赛详情
type RaceInfo struct {
    Types           int    // 竞赛type 1. 常规赛 2. 循环赛
    RaceName        string // 竞赛名字
    GameType        int    // 游戏type 1. 麻将 2. 斗地主
    RaceType        string // 比赛type 1.打立出局 2.定局积分 3.瑞士移位
    StartMode       int    // 比赛方式 1. 人满即开 2.每二十分钟循环 3.每半小时循环
    StartNumber     int    // 开赛人数
    NowNumber       int    // 已经报名人数
    RegistCondition int    // 开赛条件 1.gold 2.开赛券 3.两者都可以
    GoldsNumber     int    // 金币数量
    RollType        int    // 参赛券类型 1. 大米券
    RollNumber      int    // 参赛券数量
    StartTime       int64  // 开赛时间  备注 定时开赛为 unix 时间
    RandTime        int    // 循环时间 单位分钟
    EndTime         int64  // 结束时间
    IsStart         bool   // 是否开始 true 开始 false 没有开始
    curRace         int    // 当前轮数
    RaceTimes       int    // 总轮数
}


晋级排名代码(项目策划需求):

func SortToScore(infos []RoleScore, raceid int) (up, down []RoleScore, rankingTable map[int]int) {
    rankingTable = make(map[int]int)
    sort.Sort(ByScore{infos})
    out := len(infos) / 2              
    up = append(up, infos[0:out]...)    
    down = append(down, infos[out:]...) 
    var randInfo map[int][]RoleScore = make(map[int][]RoleScore)
    if len(outRoleNum[raceid]) > 0 {
        outRole := outRoleNum[raceid]
        for _, val := range outRole {
            randInfo[val.RoleId] = append(randInfo[val.RoleId], val)
        }
        for _, val := range infos {
            if _, ok := randInfo[val.RoleId]; ok {
                randInfo[val.RoleId] = infos
            }
        }
        sort.Sort(ByScore{randInfo[raceid]})
        for num, info := range infos {
            rankingTable[info.RoleId] = num + 1
        }
    } else {
        for num, info := range infos {
            rankingTable[info.RoleId] = num + 1
            outRoleNum[raceid] = append(outRoleNum[raceid], info)
        }
    }
    return
}


比赛服数据库配置设计(数据通过大厅,DB服传递):

图片



有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:mb5fdb0a1b25659

查看原文:Go语言实现--定局积分赛制

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

975 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传