-
Notifications
You must be signed in to change notification settings - Fork 1
/
CardDeck.java
62 lines (55 loc) · 1.28 KB
/
CardDeck.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.util.*;
/**
* Implementation of a card deck with functionality such as shuffling and
* drawing cards.
*/
class CardDeck {
protected List<Card> deck;
/**
* Constructor, no argumets
*/
public CardDeck (){
deck = new ArrayList<Card>();
for (int nbr = 1; nbr <= 13; nbr++) {
for (int suit = 1; suit <= 4; suit++) {
Card card = new Card(nbr, suit);
deck.add(card);
}
}
}
/**
* Shuffles the card deck to a random order.
*/
public void shuffle() {
/* Make a copy of the list. */
List<Card> tmp = new ArrayList<Card>();
for (Card c: deck) {
tmp.add(c);
}
/*
* Put a random card from the tmp list at each pos.
* in the original list.
*/
Random rng = new Random();
for (int k = 0; k < 52; k++) {
Card pickedCard = tmp.remove(rng.nextInt(52-k));
deck.set(k, pickedCard);
}
}
/**
* Draw the top card. The card is removed from the card deck.
*
* @return the Card placed first in the card deck
*/
public Card drawCard() {
return deck.remove(0);
}
/**
* Check whether the card deck is empty.
*
* @return true if the card deck is empty, otherwise false
*/
public boolean isEmpty() {
return deck.size() == 0;
}
}