匹配算法
游戲中的匹配算法一般都是出現在戰斗類功能中,比如說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
總結
- 上一篇: C语言栈括号匹配算法
- 下一篇: Linux串口驱动分析及移植