/* CLASS: Deck
PURPOSE: Emulate a deck of cards.
*/
class Deck
{
// Class variables
private var numCards:Number; // Store total number of cards
private var shuffledCards:Array; // Store shuffled cards
// Instantiate class variables
public function Deck(_numCards:Number)
{
numCards = _numCards;
// Organize the deck
shuffledCards = new Array(numCards);
for (var i:Number=0; i<numCards; i++)
{
shuffledCards[i] = Math.round(Math.random()*10000);
}
}
// "Shuffle" cards
public function shuffle():Void
{
var tempShuffledCards:Array = new Array(numCards);
// Find the largest random number
var tempLargeNumber:Number = 0;
var tempLargeNumberIndex:Number = 0;
for (var i:Number=0; i<numCards; i++)
{
tempLargeNumber = 0;
for (var n:Number=0; n<numCards; n++)
{
if (tempLargeNumber < shuffledCards[n])
{
tempLargeNumber = shuffledCards[n];
tempLargeNumberIndex = n;
}
}
shuffledCards[tempLargeNumberIndex] = 0;
tempShuffledCards[i] = tempLargeNumberIndex;
}
shuffledCards = tempShuffledCards;
// Tack a 1 onto each array member to get rid of the chance of showing a cards back
for (i=0; i<numCards; i++)
{
shuffledCards[i] = shuffledCards[i]+2;
}
}
// Recieve an index and return a card at that given index, does not remove from array
public function getCardByIndex(_index:Number):Number
{
return shuffledCards[_index];
}
// Return the last array index and remove it
public function getCard():Number
{
return Number(shuffledCards.pop());
}
// Recieve a hand size and return an array containing cards from the shuffled array
public function getHand(_handSize:Number):Array
{
var hand:Array = new Array(_handSize);
for (var i:Number=0; i<_handSize; i++)
{
hand[i] = shuffledCards.pop();
}
return hand;
}
// Find out who's dealer
public function getDealer(_numPlayers:Number):Number
{
return Math.round(Math.random()*_numPlayers);
}
// Return a "cut - card"
public function getCutCard():Number
{
return Number(shuffledCards.pop());
}
}