让玩家进入下一场比赛-锦标赛支架(需要一些逻辑)

Advance players to next match - Tournament Brackets (Need some Logic)

本文关键字:玩家 下一场 锦标赛      更新时间:2023-09-26

我很难想出一种合理的方法来让玩家进入我的锦标赛括号中的新比赛。您可以在此处看到示例:http://www.stickyflames.com/brackets.php?id=3

比赛从1开始到比赛人数结束。(示例中为1-8)。使用问题的第一部分来查看我的比赛是如何设置的:如何按树中的元素(锦标赛括号)确定回合?

下面是一个演示场景:示例1赢得了他的比赛,所以他被扔进了第5场比赛的第1位。而Example2赢得了他的胜利,进入了第5场比赛的第2位。另一方面,Example3和Example4被放入M6插槽中。

你们中有谁知道一些数学算法,可以计算出他们应该在哪里结束比赛吗?(插槽可以使用模数来确定,所以不用担心)

非常感谢。

编辑:这是他想要的答案。根据匹配计算轮次:
Math.round(match# / 2) + Round-1-match-count

很高兴你能自己解决:]

另一种看待它的方式:

让我们重新设计这里的问题。现在看来你正在适应这种树

1 
      5       
2
          7
3 
      6  
4   

类似的事情,你有点想要一个算法,它会得到1/2到5,3/4到6,等等。我敢打赌你可以为此制定一个公式,但它可能比必要的要复杂一点。如果你仔细想想,1/2从不需要输入6,3/4从不需要输入5,等等。事实上,我认为这样看会更容易,也更准确:

0a 
      2a       
1a
          3a
0b 
      2b  
1b   

我知道你的代码现在是如何格式化的,但如果你想区分它们,你可以做a和b。

现在向上移动的算法只是

if (spot == 0) { 
    spot=spot+2;     //we'll move it to the next because 0 is the only exception
} else {             //if odd  
    spot=spot+1;     //ideally we only need to add one to move to the next bracket
}

您只能使用parseInt来获取号码。但是等一下!因为它们是同一个号码,它怎么知道该去哪个插槽?这就是为什么我们可以使用字母。字符串最酷的地方在于,它们只是一串串在一起的字符。示例:

var word = "Hello";
word[0] = "H";

所以你可以通过做spot[1]来访问字母,这样你就可以确保a和a保持一致,b和b保持一致。希望这能有所帮助。

哦还有最后一件事。你可能想知道3a怎么样?那里没有b。好吧,我不完全确定你是否想要一个字母,但如果你确实想要,你可以制作你的代码,看看是否存在b。如果没有,那就把它放在一个地方,因为那是它唯一能去的地方。