游戏中的匹配算法一般都是出现在战斗类功能中,比如说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