匹配算法

游戏中的匹配算法一般都是出现在战斗类功能中,比如说3v3,1v1,50v50,10v10,还有那种划分为3方势力的战斗类功能等。通过一个全局管理器来对参赛玩家进行匹配,生成每场战斗的参赛玩家。匹配规则可以是根据玩家的战力,等级或者报名时间顺序,
或者随机等来进行组合。常见的匹配算法如下:

(1)单循环匹配算法
例如有A B C D 4个玩家,单循环规则下要求的匹配组合有AB,AC,AD,BC,BD,CD,那么:
第一轮比赛为:
AB CD

第二轮比赛为:
AD BC

第三轮比赛为:
AC BD

准备两个队列,从下标为1开始遍历所有参赛玩家数据(假如数组为ABCD),一个队列放下标为奇数的玩家,一个队列存放下标为偶数的玩家,例如 队列1放C,队列2放BD玩家,同时玩家A存在一个变量tmpuser上,
外层循环遍历比赛轮次,内层循环遍历队列2玩家,然后如果下标为0则tmpuser和C打,即A和C打,否则队列1下标为i-1的玩家和队列2下标为i的玩家匹配在一起,即另外一组为B和D打。
该轮匹配结束后更新队列1和队列2中的玩家,更新方法为顺时针循环更新,即:(C移动到队列2的末尾,B移动到队列1的开始)
   C         B
       -> 
B D     D C

然后再匹配第二轮的玩家,即AD BC,以此类推然后更新队列1和队列2中的玩家即:
    B          D
        ->
D C       C B

即第三轮的玩家为AC DB

同时为了可以区分每场比赛,可以为每场比赛设置一个id号,即AB CD AD BC AC BD 的id号可以分别设置为1 2 3 4 5 6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值