package blackjack;
/**
* Un mazzo di carte francesi senza jolly.
* @author paolo
*/
public class Deck {
/**
* L'insieme delle carte.
*/
private Card[] deck = new Card[52];
/**
* Costruttore di default del mazzo, ritorna un mazzo ordinato.
*/
public Deck() {
for (int i = 0; i < 52; i++) {
int num;
if (i < 13) {
suit = "Picche";
num = i + 1;
} else if (i < 26) {
suit = "Fiori";
num = i + 1 - 13;
} else if (i < 39) {
suit = "Quadri";
num = i + 1 - 26;
} else {
suit = "Cuori";
num = i + 1 - 39;
}
int valore = num;
if (num == 1) {
valore = 11;
}
if (num == 11 || num == 12 || num == 13) {
valore = 10;
}
this.deck[i] = new Card();
this.deck[i].setSuit(suit);
this.deck[i].setValue(valore);
this.deck[i].setNumber(num + "");
}
}
/**
* Mischia il mazzo.
*/
public void shuffle() {
Card[] shuffled = new Card[52];
boolean[] control = new boolean[52];
for (int i = 0; i < this.deck.length; i++) {
int rand = 0;
do {
rand
= (int) (Math.
random() * this.
deck.
length);
} while (control[rand]);
shuffled[i] = this.deck[rand];
control[rand] = true;
}
for (int i = 0; i < shuffled.length; i++) {
this.deck[i] = shuffled[i];
}
}
/**
* Ritorna una specifica carta del mazzo.
* @param pId La posizione al quale prelevare la carta, deve essere minore<br>
* di 52.
* @return la Carta scelta.
*/
public Card getCard(int pId) {
if (pId < 52) {
return this.deck[pId];
}
return this.deck[0];
}
}