2013-05-09 50 views
3

所以我正在构建一副扑克牌。我将它们屏蔽掉了,并在屏幕上正确显示。现在我需要构建一个数字为1-16的数组,并将它们随机显示在卡片上而不重复任何数字。我的主要问题是我无法弄清楚如何在卡片上显示随机数字。我已经填充了阵列,卡片显示正确,我甚至可以按顺序显示数字,但无法弄清楚随机显示数字的代码。提前致谢。ActionScript 3.0随机化阵列,显示编号和拼接数

以下是我目前使用的代码,它显示具有数字顺序号码的卡片。

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

对于一个新手来说,这是一个非常好的问题 - 您已经展示了您尝试过的所有内容以及您所处的位置,甚至设法设置了您的代码格式。做得好。 – Marty 2013-05-09 01:58:54

回答

0

一个解决方案(definetly不是最好的),将填补另一个数组仅索引,然后随意拼接,就像这样:

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 
} 

但是我敢肯定,有些逻辑怪胎能想出一个更优化/干净的解决方案,并避免需要第二个数组。

+0

哇,我意识到这个问题是相当古老的,我正在浏览未答复的...希望它会帮助别人:) – Nebu 2013-11-09 15:40:52