所以我正在建造一副纸牌。我把它们封锁了,并在屏幕上正确显示。现在我需要构建一个数字为1-16的数组,并在卡上随机显示它们而不重复任何数字。我的主要问题是我无法弄清楚如何在卡上显示随机数。我已经填充了阵列,正确显示了卡片,我甚至可以按顺序显示数字,但无法找出随机显示数字的代码。提前谢谢。
下面是我到目前为止的代码,它显示了数字排序的卡片。
var numberOfColumns=8;
var cardNumber:Array = new Array();
//---"for" function to display card columns---\\
for(var i:int = 1; i < 17; i++) {
var card = new Card();
cardNumber[i]= i;
card.x = ((i-1) % numberOfColumns) * 70;
card.y = (Math.floor ((i-1)/numberOfColumns) * 80);
card.cardTxt.text = i;
trace(i);//trace card count in Output
addChild(card);//add object to display list
}
trace(cardNumber);
答案 0 :(得分:0)
一个解决方案(绝对不是最好的)将只用索引填充另一个数组,然后随机拼接它,如下所示:
var cardCount:int = 17;
var indexesArray:Array = [];
for(var j:int = 1; j < cardCount; j++)
indexesArray.push(j)
for(var i:int = 1; i < cardCount; i++) {
var card = new Card();
//Use a random index inside the array length
var randIndex:int = Math.round(Math.random()*indexesArray.length);
cardNumber[i]= indexesArray[idIndex];
//Strip out our used index so we can't use it again
indexesArray.splice( randIndex, 1 );
//... your code
}
但是我很确定一些逻辑怪物可以提出更优化/更干净的解决方案,并且避免使用第二个阵列。