我正在创建一个文字游戏,用户可以将字母图块拖到占位符中并对其进行评估,看看他们是否制作了正确的单词。我需要拼写字母拼贴,以便他们不会拼出单词。
目前,我按照正确的顺序放置字母拼贴,然后添加几个字母。然后我想要拼写字母瓷砖。当我放置字母和额外字母时,我将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();
}
有没有办法只使用数组中的每个值,但每次都选择一个随机位置?
答案 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();
}