在文字游戏中使用数组

时间:2014-06-03 15:31:44

标签: javascript arrays

我正在创建一个文字游戏,用户可以将字母图块拖到占位符中并对其进行评估,看看他们是否制作了正确的单词。我需要拼写字母拼贴,以便他们不会拼出单词。

目前,我按照正确的顺序放置字母拼贴,然后添加几个字母。然后我想要拼写字母瓷砖。当我放置字母和额外字母时,我将x位置推入数组。

有没有办法我可以循环通过数组并定位字母拼贴,以便它们不会相互重叠? Math.floor(Math.random)通常会生成重复项,因此字母图块会相互叠加,如下图所示。


var arr = [0,30,60,90];

for(i=0;i<arr.length;i++){
 var num = Math.floor(Math.random()*arr.length);
 var bmp = new createjs.Bitmap("image");
 stage.addChild(bmp);

 bmp.x = arr[num];

stage.update();
}

有没有办法只使用数组中的每个值,但每次都选择一个随机位置?

3 个答案:

答案 0 :(得分:0)

考虑制作一个瓷砖字母对象。

在此对象内跟踪其位置。然后添加一个碰撞检查并跟踪对象的所有位置。

还要考虑数组的shuffle方法。

帮助链接:

答案 1 :(得分:0)

听起来你只是想改组阵列。如果是这样,this解决方案可能会对您有所帮助。

答案 2 :(得分:0)

一种简单的方法是使用arr上的Knuth shuffle:

var arr = [0,30,60,90];

for(var i=0;i<arr.length;i++){
 var num = Math.floor(Math.random()*i);
 var x = arr[i];
 arr[i] = arr[num];
 arr[num] = x;
}

for(var i=0;i<arr.length;i++) {
 var bmp = new createjs.Bitmap("image");
 stage.addChild(bmp);

 bmp.x = arr[i];

 stage.update();
}