To see the rules of the card game, click here.
Card Class
//Jordan Kestler & Calvin Hawkes //Nov 8 //has all of the values for the card class public class Card { private String suit; private int value; public Card(int initValue) { value = findCard(initValue); suit = findSuit(initValue); } public Card(String initSuit, int initValue) { suit = initSuit; value = initValue; } //pre: takes a number from the array //post: returns what suit it is public String getSuit() { return suit; } //pre: takes number from array //post: returns a numerical value for it public int getValue() { return this.value; } //pre: enter an integer //post: finds the number of the card public int findCard(int cardNum) { int card = (cardNum % 13); return card; } //pre: enter an integer //post: finds the suit of the card public String findSuit(int cardNum) { String suit = ""; if ((cardNum / 13) == 0) //If the card is a Diamond suit = "DIAMOND"; else if((cardNum / 13) == 1) //If card is a Heart suit = "HEART"; else if((cardNum / 13) == 2) //If card is a Spade suit = "SPADE"; else if((cardNum / 13) == 3) //If card is a Club suit = "CLUB"; else System.out.println("INVALID CARD: " + cardNum); return suit; } //pre: takes two cards //post: returns which 1 if THIS card is bigger. -1 if second is bigger. 0 if equal public int compare(Card a) { int compared; if (this.value != 0 && a.value != 0) //if neither cards are aces { if (this.value > a.value) compared = 1; else if (this.value < a.value) compared = -1; else compared = 0; } else if(this.value == 0 && a.value != 0) //if the first card is an ace compared = 1; else if(this.value != 0 && a.value == 0) //if the second card is an ace compared = -1; else //if both cards are aces compared = 0; return compared; } //pre: takes its value //post: converts it to a name. ie jack, king, queen, ace public String toString() { String name = ""; if (value >= 10 || value == 0) { if (value == 12) name = "king"; else if (value == 11) name = "queen"; else if (value == 10) name = "jack"; else if (value == 0) name = "ace"; return name + suit; } else return "" + (value + 1) + suit; } }
Hand Class
//Jordan Kestler & Calvin Hawkes //Nov 8 //makes two decks for each player import java.util.*; public class Hand { ArrayListDeck ClasscardList = new ArrayList (53); //pre: takes top card off deck //Post: returns top card public Card playCard() { return cardList.remove(0); } //pre: takes cards that are won //Post: puts cards won on bottom public void addCard(Card a) { cardList.add(a); } //pre: takes the array of the hand //post: returns how many cards are in it and checks if its empty public int numCards() { int numCards = cardList.size(); return numCards; } //pre: none //post: prints out hand public void printHand() { for(int i=0; i < cardList.size(); i++) System.out.println(i + ". " + cardList.get(i)); } }
/*Calvin Hawkes & Jordon Kestler *Nov. 8 2007 *Deck Class That should work with any card game */ import java.util.*; public class Deck { private final int CARDS = 52; //amount of cards in a deck private Card [] deck; //creating an array of cards private int top = 0; //the top of the deck public Deck() { deck = new Card[CARDS]; //Creates all 52 cards for(int i=0; i < CARDS; i++) deck[i] = new Card(i); } //pre: must be passed a deck of cards //post: returns the deck with cards in random order public void shuffle() { Random rand = new Random(); for (int i=0; i < CARDS; i++) { int ranCard = rand.nextInt(52); //random number 0-51 Card temp; temp = deck[i]; deck[i] = deck[ranCard]; deck[ranCard] = temp; } } //pre: must be passed a deck of cards //post: returns true if the deck is empty else false public boolean isEmpty() { boolean empty = false; if (top == 52) empty = true; return empty; } //pre: must be passed a deck of cards //post: returns the top card on the deck and removes it from the deck public Card deal() { int temp = top; top ++; return deck[temp]; } //pre: must be passed a deck of cards //post: prints out every card in the deck in order. Used for testing public void printDeck() { for(int i=0; i < CARDS; i++) System.out.println(i + ". " + deck[i]); } }Game Class
/*Calvin Hawkes & Jordon Kestler *Nov. 9 2007 *The Game Class for a Card Game Called War */ public class Game { public static void main(String[] args) { Deck warDeck = new Deck(); //Creating the Deck of Cards Hand player1 = new Hand(); //Creating player 1's hand Hand player2 = new Hand(); //Creating player 2's hand warDeck.shuffle(); //Shuffling the Deck boolean done = false; while(!done) //Dealing the Cards { if(!(warDeck.isEmpty())) player1.addCard(warDeck.deal()); else done = true; if(!(warDeck.isEmpty())) player2.addCard(warDeck.deal()); else done = true; } while(player1.numCards() != 0 && player2.numCards() != 0) { //Playing the Game Card p1Card = player1.playCard(); Card p2Card = player2.playCard(); if (p1Card.compare(p2Card) == 1) //if player1 wins { System.out.println("Player 1 Wins!"); player1.addCard(p1Card); player1.addCard(p2Card); } else if (p1Card.compare(p2Card) == -1) //if player2 wins { System.out.println("Player 2 Wins!"); player2.addCard(p1Card); player2.addCard(p2Card); } else //if a war is declared { if (player1.numCards() >= 4 && player2.numCards() >= 4) war(player1 , player2); else if (player1.numCards() == 3 || player2.numCards() == 3) war2(player1 , player2); else if (player1.numCards() == 2 || player2.numCards() == 2) war3(player1 , player2); else war4(player1 , player2); } } //Declaring the Winner if(player2.numCards() == 0) System.out.println("PLAYER 1 WINS THE GAME!!!"); else System.out.println("PLAYER 2 WINS THE GAME!!!"); } //pre: if two hands are created and both users have 4 or more cards //post: plays war when two cards are equal public static void war(Hand player1, Hand player2) { System.out.println("WAR!!!"); //Playing 3 Cards Facedown Card p1Card1 = player1.playCard(); Card p1Card2 = player1.playCard(); Card p1Card3 = player1.playCard(); Card p1Card4 = player1.playCard(); Card p2Card1 = player2.playCard(); Card p2Card2 = player2.playCard(); Card p2Card3 = player2.playCard(); Card p2Card4 = player2.playCard(); if (p1Card4.compare(p2Card4) == 1) //if player1 wins { System.out.println("Player 1 Wins!"); player1.addCard(p1Card1); player1.addCard(p1Card2); player1.addCard(p1Card3); player1.addCard(p1Card4); player1.addCard(p2Card1); player1.addCard(p2Card2); player1.addCard(p2Card3); player1.addCard(p2Card4); } else if (p1Card4.compare(p2Card4) == -1) //if player2 wins { System.out.println("Player 2 Wins!"); player2.addCard(p1Card1); player2.addCard(p1Card2); player2.addCard(p1Card3); player2.addCard(p1Card4); player2.addCard(p2Card1); player2.addCard(p2Card2); player2.addCard(p2Card3); player2.addCard(p2Card4); } else //if a war is declared { if (player1.numCards() >= 4 && player2.numCards() >= 4) war(player1 , player2); else if (player1.numCards() == 3 || player2.numCards() == 3) war2(player1 , player2); else if (player1.numCards() == 2 || player2.numCards() == 2) war3(player1 , player2); else war4(player1 , player2); } } //pre: if two hands are one user has 3 cards //post: plays war when two cards are equal public static void war2(Hand player1, Hand player2) { System.out.println("WAR!!!"); //Playing 2 Cards Facedown Card p1Card1 = player1.playCard(); Card p1Card2 = player1.playCard(); Card p1Card4 = player1.playCard(); Card p2Card1 = player2.playCard(); Card p2Card2 = player2.playCard(); Card p2Card4 = player2.playCard(); if (p1Card4.compare(p2Card4) == 1) //if player1 wins { System.out.println("Player 1 Wins!"); player1.addCard(p1Card1); player1.addCard(p1Card2); player1.addCard(p1Card4); player1.addCard(p2Card1); player1.addCard(p2Card2); player1.addCard(p2Card4); } else if (p1Card4.compare(p2Card4) == -1) //if player2 wins { System.out.println("Player 2 Wins!"); player2.addCard(p1Card1); player2.addCard(p1Card2); player2.addCard(p1Card4); player2.addCard(p2Card1); player2.addCard(p2Card2); player2.addCard(p2Card4); } else //if a war is declared { if (player1.numCards() >= 4 && player2.numCards() >= 4) war(player1 , player2); else if (player1.numCards() == 3 || player2.numCards() == 3) war2(player1 , player2); else if (player1.numCards() == 2 || player2.numCards() == 2) war3(player1 , player2); else war4(player1 , player2); } } //pre: if two hands are one user has 2 cards //post: plays war when two cards are equal public static void war3(Hand player1, Hand player2) { System.out.println("WAR!!!"); //Playing 1 Cards Facedown Card p1Card1 = player1.playCard(); Card p1Card4 = player1.playCard(); Card p2Card1 = player2.playCard(); Card p2Card4 = player2.playCard(); if (p1Card4.compare(p2Card4) == 1) //if player1 wins { System.out.println("Player 1 Wins!"); player1.addCard(p1Card1); player1.addCard(p1Card4); player1.addCard(p2Card1); player1.addCard(p2Card4); } else if (p1Card4.compare(p2Card4) == -1) //if player2 wins { System.out.println("Player 2 Wins!"); player2.addCard(p1Card1); player2.addCard(p1Card4); player2.addCard(p2Card1); player2.addCard(p2Card4); } else //if a war is declared { if (player1.numCards() >= 4 && player2.numCards() >= 4) war(player1 , player2); else if (player1.numCards() == 3 || player2.numCards() == 3) war2(player1 , player2); else if (player1.numCards() == 2 || player2.numCards() == 2) war3(player1 , player2); else war4(player1 , player2); } } //pre: if two hands are one user has 1 card //post: plays war when two cards are equal public static void war4(Hand player1, Hand player2) { System.out.println("WAR!!!"); //Playing 1 Card Faceup Card p1Card4 = player1.playCard(); Card p2Card4 = player2.playCard(); if (p1Card4.compare(p2Card4) == 1) //if player1 wins { System.out.println("Player 1 Wins!"); player1.addCard(p1Card4); player1.addCard(p2Card4); } else if (p1Card4.compare(p2Card4) == -1) //if player2 wins { System.out.println("Player 2 Wins!"); player2.addCard(p1Card4); player2.addCard(p2Card4); } else //if a war is declared { System.out.println("Game is tied. We all win!"); } } }
/* OUTPUT --------------------Configuration: War - JDK version 1.6.0_02- -------------------- Player 1 Wins! Player 1 Wins! Player 2 Wins! WAR!!! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 2 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 2 Wins! Player 2 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 1 Wins! Player 2 Wins! Player 2 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 2 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! WAR!!! Player 1 Wins! Player 1 Wins! Player 2 Wins! Player 2 Wins! Player 2 Wins! Player 1 Wins! Player 2 Wins! Player 1 Wins! ...EDITED FOR SIZE... PLAYER 2 WINS THE GAME!!! Process completed. */
0 comments:
Post a Comment