Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以独特的组合投掷球员_Javascript_Arrays - Fatal编程技术网

Javascript 以独特的组合投掷球员

Javascript 以独特的组合投掷球员,javascript,arrays,Javascript,Arrays,我想和两个玩家玩掷骰子游戏。 所以一轮是4局,2对2 一个球员永远不能和一个已经和他打过球的球员在一起 我想建立一个函数,随机所有的游戏 所以我想要这样的东西,但是所有的比赛都在转折点上 然后他们一次玩4个游戏,然后交换玩家,开始4个新游戏 var players = [ { id: 1, name : 'player1'}, { id: 2, name : 'player2'}, { id: 3, name : 'player3'}, { id: 4, name : 'player4'}, {

我想和两个玩家玩掷骰子游戏。 所以一轮是4局,2对2


一个球员永远不能和一个已经和他打过球的球员在一起

我想建立一个函数,随机所有的游戏

所以我想要这样的东西,但是所有的比赛都在转折点上

然后他们一次玩4个游戏,然后交换玩家,开始4个新游戏

var players = [
{ id: 1, name : 'player1'},
{ id: 2, name : 'player2'},
{ id: 3, name : 'player3'},
{ id: 4, name : 'player4'},
{ id: 5, name : 'player5'},
{ id: 6, name : 'player6'},
{ id: 7, name : 'player7'},
{ id: 8, name : 'player8'},
{ id: 9, name : 'player9'},
{ id: 10, name : 'player10'},
{ id: 11, name : 'player11'},
{ id: 12, name : 'player12'},
{ id: 13, name : 'player13'},
{ id: 14, name : 'player14'},
{ id: 15, name : 'player15'},
{ id: 16, name : 'player16'}]

为了获得尽可能多的游戏回合的所有组合(每个玩家只与另一个玩家玩一次),我将其作为灵感

//来自:https://stackoverflow.com/a/12646864/9487478
常量Shuffarray=(数组)=>{
让ShuffleArray=[…数组];
for(设i=shuffledArray.length-1;i>0;i--){
常数j=数学楼层(数学随机()*(i+1));
[ShuffleArray[i],ShuffleArray[j]=[ShuffleArray[j],ShuffleArray[i]];
}
返回随机数组;
}
//注:玩家数量需为偶数。
让createGames=(playerArr)=>{
让玩家=[…玩家角色];
const teamsPerRound=[],
回合数=mod=players.length-1,
GamesPeround=4,
//帮助检查一个玩家与另一个玩家对峙的频率。
对抗=数组(players.length.fill().map(x=>Array(players.length.fill)(0));
//灵感来自:https://math.stackexchange.com/a/3094469
//创建尽可能多的独特团队,而在一轮比赛中,每个球员只出现一次。
for(设i=0;i{
让roundMatches=[];
团队=Shuffleray(团队);
for(设i=0;i({…players[x]})),
team2:second.map(x=>({…players[x]}))
})
//帮助检查一个玩家与另一个玩家对峙的频率。
第一,forEach(x=>second.forEach(y=>(对抗[x][y]++,对抗[y][x]+);
}
复赛;
});
forEach((x,i)=>console.log(`confortations(playerIndex:${i})`,JSON.stringify(x),x.reduce((acc,val)=>acc+=val));
返回游戏;
}
var玩家=[
{id:1,名称:'player1'},
{id:2,名称:'player2'},
{id:3,名称:'player3'},
{id:4,名称:'player4'},
{id:5,名称:'player5'},
{id:6,名称:'player6'},
{id:7,名称:'player7'},
{id:8,名称:'player8'},
{id:9,名称:'player9'},
{id:10,名称:'player10'},
{id:11,名称:'player11'},
{id:12,名称:'player12'},
{id:13,名字:'player13'},
{id:14,名字:'player14'},
{id:15,名字:'player15'},
{id:16,名称:'player16'}
];
const games=createGames(玩家);

控制台日志(“匹配”,游戏)你能告诉我们你到目前为止都做了些什么吗?“一个球员永远不能和一个已经和他一起玩过的球员在一起。”=>这仅仅意味着,同一支球队永远不应该出现,或者说,前一支球队的成员不可能相互竞争?是的,你不能再有同一个队友了。我想要尽可能多的回合,非常多,这给我4轮。但我努力争取更多的机会。我想要尽可能多的回合。@user1199595嘿,我做了返工。请检查我的新解决方案。我认为它应该做这项工作。:)
games = [{ team1: [{ id: 1, name : 'player1'},{ id: 2, name : 'player2'}], team2 :[{ id: 3, name : 'player3'},{ id: 4, name : 'player4'}] }]