Package uk.co.iscoding.freecell.cards

Source Code of uk.co.iscoding.freecell.cards.DeckOfCards

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.co.iscoding.freecell.cards;

import uk.co.iscoding.freecell.cards.PlayingCard.Rank;
import uk.co.iscoding.freecell.cards.PlayingCard.Suit;
import uk.co.iscoding.freecell.random.SRandom;

import java.util.ArrayList;



/**
*
* @author   Stuart David James McHattie
* @version  1.0 2011-06-29
* @since    2011-06-29
*/
public class DeckOfCards {

    private ArrayList<PlayingCard> deck;
    private byte currentCard = 0;

    public DeckOfCards() {
        deck = new ArrayList<PlayingCard>(52);

        Suit[] suits = {Suit.CLUBS, Suit.DIAMONDS, Suit.HEARTS, Suit.SPADES};
        Rank[] ranks = {Rank.ACE, Rank.TWO, Rank.THREE, Rank.FOUR, Rank.FIVE, Rank.SIX, Rank.SEVEN,
                        Rank.EIGHT, Rank.NINE, Rank.TEN, Rank.JACK, Rank.QUEEN, Rank.KING};
        for (Rank rank : ranks) {
            for (Suit suit : suits) {
                deck.add(new PlayingCard(suit, rank));
            }
        }
    }

    public void shuffle() {
        PlayingCard temp;
        for (int i = deck.size() - 1; i > 0; i--) {
            int j = (int) Math.floor(Math.random() * i);
            temp = deck.get(i);
            deck.set(i, deck.get(j));
            deck.set(j, temp);
        }
    }

    public void msShuffle(int seed) {
        ArrayList<PlayingCard> newDeck = new ArrayList<PlayingCard>(52);
        SRandom rand = new SRandom(seed);
        int j, wLeft = 52;

        for (int i = 0; i < 52; i++) {
            j = rand.nextRand() % wLeft;
            newDeck.add(deck.get(j));
            deck.set(j, deck.get(--wLeft));
        }

        deck = newDeck;
    }

    public PlayingCard nextCard() {
        if (currentCard < deck.size()) {
            return deck.get(currentCard++);
        } else {
            return null;
        }
    }

    public void display() {
        System.out.println("Displaying Deck:");
        for (PlayingCard card : deck) {
            System.out.println(card.toString());
        }
        System.out.println();
    }
}
TOP

Related Classes of uk.co.iscoding.freecell.cards.DeckOfCards

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.