我是新來的動作3.0,我試圖做一副牌洗牌,我已經成功了這個,但我的問題是,我的牌正在重複,所以我有52張牌的同一張牌的副本洗牌。我正在嘗試創建一個德州撲克遊戲。actionscript 3.0如何將算法合併到我的代碼中?
我發現這個討論Randomize or shuffle an array但它並沒有告訴我如何將Fisher-Yates算法合併到我的代碼中。我已經嘗試了幾種不同的方法,這裏提出了一些建議,以及在網絡上的什麼地方,沒有任何工作(認爲這個問題肯定是我缺乏經驗)。
有人可以請給我一個如何將其納入我的代碼或鏈接到某個地方,將解釋如何正確地做到這一點的例子。
在此先感謝。
保羅
package src.CardDeck
{
public class CardDeck
{
public var allCards:Array = [];
public var cardNames:Array;
public var cardValues:Array;
public var gameType:String;
public var drawnCards:uint = 0;
public function CardDeck(game:String)
{
gameType = game;
cardNames = ["Ace","Two","Three",
"Four","Five","Six",
"Seven","Eight","Nine",
"Ten","Jack","Queen","King"];
if(gameType == "texasholdem")
{
cardValues = [1,2,3,4,5,6,7,8,9,10,10,10,10];
}
makeSuit("Spade");
makeSuit("Heart");
makeSuit("Diamond");
makeSuit("Club");
}
private function makeSuit(suitString:String):void
{
var card:Object;
for(var i:uint = 0; i < cardNames.length; i++)
{
card = {};
card.cardType = suitString;
card.cardName = cardNames[i];
card.cardValue = cardValues[i];
card.isDrawn = false;
allCards.push(card);
}
}
public function shuffle():Array
{
var shuffledArray:Array = [allCards.length];
var randomCard:Object;
do
{
randomCard = getRandomCard();
if(shuffledArray.indexOf(randomCard) == -1)
{
shuffledArray.push(randomCard);
}
}
while(shuffledArray.length < allCards.length)
return shuffledArray;
}
private function getRandomCard():Object
{
var randomIndex:int = Math.floor(Math.random()* allCards.length);
return allCards[randomIndex];
}
}
}
你的問題必須有數組,洗牌術語? – 2013-03-28 04:41:22