當前位置:編程學習大全網 - 編程語言 - java--card games

java--card games

int?deal?

enum Suit {

SPADE { public String toString() { return "Spade"; } },

HEART { public String toString() { return "Heart"; } },

CLUB { public String toString() { return "Club"; } },

DIAMOND { public String toString() { return "Diamond"; } }

}

enum Face {

ACE { public String toString() { return "A"; } },

DEUCE { public String toString() { return "2"; } },

THREE { public String toString() { return "3"; } },

FOUR { public String toString() { return "4"; } },

FIVE { public String toString() { return "5"; } },

SIX { public String toString() { return "6"; } },

SEVEN { public String toString() { return "7"; } },

EIGHT { public String toString() { return "8"; } },

NINE { public String toString() { return "9"; } },

TEN { public String toString() { return "10"; } },

JACK { public String toString() { return "J"; } },

QUEEN { public String toString() { return "Q"; } },

KING { public String toString() { return "K"; } }

}

class Card {

private final Suit suit;

private final Face face;

public Card(Suit suit, Face face) {

this.suit = suit;

this.face = face;

}

public String toString() {

return suit.toString() + " " + face.toString();

}

}

class Deck {

private Card[] cards = new Card[52];

private int currentCardIndex = 0;

public Deck() {

int index = 0;

for (Suit suit : Suit.values()) {

for (Face face : Face.values()) {

cards[index++] = new Card(suit, face);

}

}

}

public void shuffle() {

java.util.Random random = new java.util.Random();

for (int i = 0; i < cards.length; ++i) {

ArrayUtilities.swap(cards, i, random.nextInt(cards.length));

}

}

public Card deal() {

if (currentCardIndex > cards.length)

return null;

Card card = cards[currentCardIndex];

cards[currentCardIndex++] = null;

return card;

}

}

class CardPlayer {

private java.util.List<Card> cards;

public CardPlayer() {

cards = new java.util.ArrayList<Card>();

}

public void getCard(Card card) {

cards.add(card);

}

public void showCards() {

System.out.println(cards);

}

}

abstract class CardGame {

protected Deck deck;

protected int numberOfCard;

protected int numberOfPlayer;

protected CardGame(int numberOfCard, int numberOfPlayer) {

deck = new Deck();

this.numberOfCard = numberOfCard;

this.numberOfPlayer = numberOfPlayer;

}

public void shuffle() {

deck.shuffle();

}

public abstract void displayDescription();

public abstract void deal(CardPlayer player);

}

class CardGameA extends CardGame {

protected CardGameA() {

super(5, 4);

}

public void deal(CardPlayer player) {

for (int i = 0; i < 5; ++i) {

player.getCard(deck.deal());

}

}

public void displayDescription() {

System.out.println("Card Game A");

}

}

class CardGameB extends CardGame {

protected CardGameB() {

super(13, 4);

}

public void deal(CardPlayer player) {

for (int i = 0; i < 13; ++i) {

player.getCard(deck.deal());

}

}

public void displayDescription() {

System.out.println("Card Game B");

}

}

public class PlayCardGames {

public static void main(String[] args) {

testCardGame(new CardGameA());

testCardGame(new CardGameB());

}

static void testCardGame(CardGame game) {

CardPlayer[] players = {new CardPlayer(), new CardPlayer(),

new CardPlayer(), new CardPlayer(), };

game.shuffle();

for (CardPlayer player : players) {

game.deal(player);

}

game.displayDescription();

for (CardPlayer player : players) {

player.showCards();

}

}

}

class ArrayUtilities {

public static <T> void swap(T[] array, int i1, int i2) {

T temp = array[i1];

array[i1] = array[i2];

array[i2] = temp;

}

}

  • 上一篇:什麽是電子墨水和電子書?
  • 下一篇:開發壹個APP上傳到安卓市場需要自己購買服務器嗎?
  • copyright 2024編程學習大全網