【发布时间】:2016-01-30 15:08:59
【问题描述】:
我正在构建一个在 4x4 网格墙上有答案的游戏,答案最初将是四个一组,需要在每场游戏开始时随机分配。然后玩家必须将答案重新排列成组(如果这没有意义,http://www.puzzgrid.com/grid/7279 会显示我正在尝试实现的示例)。
我已经建立了一个包含答案数组的网格,如下所示:
var grid = [
['oak','cedar','fir','pine'],
['red','blue','green','yellow'],
['villa','spurs','city','united'],
['table','chair','door','stool']
];
使用 Fisher-Yates 洗牌如下,我可以让网格随机化数组:
function shuffle(grid){
var i = grid.length;
var j;
var temp;
while(--i>0){
j = Math.floor(Math.random()*(i+1));
temp = grid[j];
grid[j] = grid[i];
grid[i] = temp;
}
return grid;
}
问题在于它只对整行进行打乱,而不是对每个数组中的项目进行打乱,例如,“chair”永远不会与“city”相邻。有人对如何做到这一点有任何建议吗?
【问题讨论】:
-
在
grid数组的每个元素(每一行)上调用您的shuffle()函数。 -
也许把它全部放在一个数组中随机播放然后重建?
标签: javascript jquery arrays random