a program that simulates the \"war\" card game that For example: 2. Requirements
ID: 3767491 • Letter: A
Question
a program that simulates the "war" card game that
For example: 2. Requirements:
--PROCESSING:
pre-game:
input from file warScoreData.txt, 2 lines at a time until you reach the end of file,
count each user,
input user name,
input user score.
find user with the highest score
if count = 0 and reached end of file then go play game
if count > 0 then output the user name with the highest score and their score
play game:.
For the computer player:
generate a random number from 2-14 to represent a card value for the computer
Output the computer's card's value, outputting 2-10 as that value, but output 11 as Jack, 12 as Queen, 13 as King, and 14 as Ace
generate a random number from 0-3 to represent a card's suit for the computer
Output the computer's card's suit, but output 0 as Spades, 1 as Diamonds, 2 as Hearts, and 3 as Clubs
For the human player:
generate a random number from 2-14 to represent a card value for the user
Output the user's card's value, outputting 2-10 as that value, but output 11 as Jack, 12 as Queen, 13 as King, and 14 as Ace
generate a random number from 0-3 to represent a card's suit for the user
Output the user's card's suit, but output 0 as Spades, 1 as Diamonds, 2 as Hearts, and 3 as Clubs
Determine the winner:
If the computer's card's value is LESS than the human's card's value, output "Human wins!"
If the computer's card's value is EQUAL TO the human's card's value, output "It's a tie."
If the computer's card's value is GREATER than the human's card's value, output "Computer wins!"
***always input each user's name and append output each user's name on one line in the file and their final score on the next line in the file.
For example:
Computer's card is a Jack of Spades
Human's card is a 10 of Clubs
Computer wins!
Replay if there is a tie and deal 2 new cards, one for the computer and one for the user.
Keep track of the score: number of computer wins and number of user wins.
Use a structure specification named PlayingCard, with two whole number data members named suit
and value. Create two PlayingCard records, one for the human player
and one for the computer player.
Write a void function to take a PlayingCard object as a parameter, and output its value and suit, like this: Jack of
Clubs.
Write a value-returning function named getYesOrNo, to prompt the user for the "Continue? [Y/N]"
input. It needs no parameters. It should include the validation loop, moved into it from main. It can
return either an int, char, or bool -- your choice.
For example:
Computer's card is a 2 of Diamonds
Human's card is a 8 of Hearts
--<< Human wins! >>--
Computer wins: 0, Human wins: 1
Continue? [Y/N] x
Continue? [Y/N] 100
Continue? [Y/N] y
Computer's card is a 2 of Spades
Human's card is a Ace of Hearts
--<< Human wins! >>--
Computer wins: 0, Human wins: 2
Continue? [Y/N] y
Computer's card is a Queen of Diamonds
Human's card is a 7 of Diamonds
--<< Computer wins! >>--
Computer wins: 1, Human wins: 2
Continue? [Y/N] Q
Continue? [Y/N] n
What is your name? John
***output John on one line at the end of the warScoreData.txt file and John's final score on the next line at the end of the file.
Explanation / Answer
// import needed classes and packages
import java.util.Scanner;
import java.text.NumberFormat;
import java.io.IOException;
import java.util.Locale;
import java.text.DecimalFormat;
public class Card
{public static void main(String[] args) throws IOException
{
Card heartCard;
Card diamondCard;
Card spadeCard;
Card clubCard;
int countingPlays = 0;
Scanner keyboard = new Scanner(System.in);
CardPile deckOfCards = new CardPile();
CardPile player1Pile = new CardPile();
CardPile player2Pile = new CardPile();
for(int i = 2; i < 15; i++)
{
char heart = 'u0003';
char diamond ='u0004';
char spade = 'u0005';
char club = 'u0006';
deckOfCards.add(heartCard = new Card(heart, i));
deckOfCards.add(diamondCard = new Card(diamond, i));
deckOfCards.add(spadeCard = new Card(spade, i));
deckOfCards.add(clubCard = new Card(club, i));
}
System.out.println("Deck Of Cards: " + deckOfCards);
deckOfCards.shuffle();
System.out.println("Deck of Cards after shuffled: " + deckOfCards);
System.out.println("" + deckOfCards.size());
for(int i = 0; i < 26; i++)
{
player1Pile.add(deckOfCards.getTopCard());
player2Pile.add(deckOfCards.getTopCard());
}
System.out.println("Deck of Cards after removing cards into two piles: " + deckOfCards);
System.out.println("Player 1's Cards: " + player1Pile);
System.out.println("Player 2's Cards: " + player2Pile);
System.out.println("" + player1Pile.size());
System.out.println("" + player2Pile.size());
System.out.println("Lets have a war!!!");
System.out.println(" Player 1 Player 2");
System.out.println(" ----------------");
try
{
do
{
Card player1RemovedTopCard = player1Pile.getTopCard();
Card player2RemovedTopCard = player2Pile.getTopCard();
if(player1RemovedTopCard.compareTo(player2RemovedTopCard) < player2RemovedTopCard.compareTo(player1RemovedTopCard))
{
System.out.println("Player 1: " + player1RemovedTopCard + " Player 2: " + player2RemovedTopCard);
System.out.println("Player 2 is the Winner");
player2Pile.add(player1RemovedTopCard);
player2Pile.add(player2RemovedTopCard);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has:" + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else if(player1RemovedTopCard.compareTo(player2RemovedTopCard) > player2RemovedTopCard.compareTo(player1RemovedTopCard))
{
System.out.println("Player 1: " + player1RemovedTopCard + " Player 2: " + player2RemovedTopCard);
System.out.println("Player 1 is the Winner");
player1Pile.add(player1RemovedTopCard);
player1Pile.add(player2RemovedTopCard);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has:" + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else
{
System.out.println("Player 1: " + player1RemovedTopCard + " Player 2: " + player2RemovedTopCard);
System.out.println("WAR!!!!!!!");
if(player1Pile.size() == 1 || player2Pile.size() == 1)
{
Card player1RemovedTopCard2 = player1Pile.getTopCard();
Card player2RemovedTopCard2 = player2Pile.getTopCard();
System.out.println("Player1's 2nd card is: " + player1RemovedTopCard2 + " Player2's 2nd card is: " + player2RemovedTopCard2);
if(player1RemovedTopCard2.compareTo(player2RemovedTopCard2) > player2RemovedTopCard2.compareTo(player1RemovedTopCard2))
{
System.out.println("Player 1 is the winner of the War! ");
player1Pile.add(player1RemovedTopCard);
player1Pile.add(player1RemovedTopCard2);
player1Pile.add(player2RemovedTopCard);
player1Pile.add(player2RemovedTopCard2);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else if(player1RemovedTopCard2.compareTo(player2RemovedTopCard2) < player2RemovedTopCard2.compareTo(player1RemovedTopCard2))
{
System.out.println("Player 2 is the winner of the War! ");
player2Pile.add(player1RemovedTopCard);
player2Pile.add(player1RemovedTopCard2);
player2Pile.add(player2RemovedTopCard);
player2Pile.add(player2RemovedTopCard2);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else
{
if(player2Pile.size() == 0)
{
player1Pile.add(player2RemovedTopCard2);
player1Pile.add(player2RemovedTopCard);
player1Pile.add(player1RemovedTopCard2);
player1Pile.add(player1RemovedTopCard);
}
else
{
player2Pile.add(player2RemovedTopCard2);
player2Pile.add(player2RemovedTopCard);
player2Pile.add(player1RemovedTopCard2);
player2Pile.add(player1RemovedTopCard);
}
}
}
else if(player1Pile.size() == 2 || player2Pile.size() == 2)
{
Card player1RemovedTopCard2 = player1Pile.getTopCard();
Card player1RemovedTopCard3 = player1Pile.getTopCard();
Card player2RemovedTopCard2 = player2Pile.getTopCard();
Card player2RemovedTopCard3 = player2Pile.getTopCard();
do
{
System.out.println("Player1's 3rd card is: " + player1RemovedTopCard3 + " Player2's 3rd card is: " + player2RemovedTopCard3);
if(player1RemovedTopCard3.compareTo(player2RemovedTopCard3) > player2RemovedTopCard3.compareTo(player1RemovedTopCard3))
{
System.out.println("Player 1 is the winner of the War! ");
player1Pile.add(player1RemovedTopCard);
player1Pile.add(player1RemovedTopCard2);
player1Pile.add(player1RemovedTopCard3);
player1Pile.add(player2RemovedTopCard);
player1Pile.add(player2RemovedTopCard2);
player1Pile.add(player2RemovedTopCard3);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else if(player1RemovedTopCard3.compareTo(player2RemovedTopCard3) < player2RemovedTopCard3.compareTo(player1RemovedTopCard3))
{
System.out.println("Player 2 is the winner of the War! ");
player2Pile.add(player1RemovedTopCard);
player2Pile.add(player1RemovedTopCard2);
player2Pile.add(player1RemovedTopCard3);
player2Pile.add(player2RemovedTopCard);
player2Pile.add(player2RemovedTopCard2);
player2Pile.add(player2RemovedTopCard3);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
}while(player1RemovedTopCard3.compareTo(player2RemovedTopCard3) == player2RemovedTopCard3.compareTo(player1RemovedTopCard3));
}
else if(player1Pile.size() == 3 || player2Pile.size() == 3)
{
Card player1RemovedTopCard2 = player1Pile.getTopCard();
Card player1RemovedTopCard3 = player1Pile.getTopCard();
Card player1RemovedTopCard4 = player1Pile.getTopCard();
Card player2RemovedTopCard2 = player2Pile.getTopCard();
Card player2RemovedTopCard3 = player2Pile.getTopCard();
Card player2RemovedTopCard4 = player2Pile.getTopCard();
do
{
System.out.println("Player1's fourth card is: " + player1RemovedTopCard4 + " Player2's fourth card is: " + player2RemovedTopCard4);
if(player1RemovedTopCard4.compareTo(player2RemovedTopCard4) > player2RemovedTopCard4.compareTo(player1RemovedTopCard4))
{
System.out.println("Player 1 is the winner of the War! ");
player1Pile.add(player1RemovedTopCard);
player1Pile.add(player1RemovedTopCard2);
player1Pile.add(player1RemovedTopCard3);
player1Pile.add(player1RemovedTopCard4);
player1Pile.add(player2RemovedTopCard);
player1Pile.add(player2RemovedTopCard2);
player1Pile.add(player2RemovedTopCard3);
player1Pile.add(player2RemovedTopCard4);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else if(player1RemovedTopCard4.compareTo(player2RemovedTopCard4) < player2RemovedTopCard4.compareTo(player1RemovedTopCard4))
{
System.out.println("Player 2 is the winner of the War! ");
player2Pile.add(player1RemovedTopCard);
player2Pile.add(player1RemovedTopCard2);
player2Pile.add(player1RemovedTopCard3);
player2Pile.add(player1RemovedTopCard4);
player2Pile.add(player2RemovedTopCard);
player2Pile.add(player2RemovedTopCard2);
player2Pile.add(player2RemovedTopCard3);
player2Pile.add(player2RemovedTopCard4);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
}
while(player1RemovedTopCard4.compareTo(player2RemovedTopCard4) == player2RemovedTopCard4.compareTo(player1RemovedTopCard4));
}
else if(player1Pile.size() >= 4 || player2Pile.size() >= 4)
{
Card player1RemovedTopCard2 = player1Pile.getTopCard();
Card player1RemovedTopCard3 = player1Pile.getTopCard();
Card player1RemovedTopCard4 = player1Pile.getTopCard();
Card player1RemovedTopCard5 = player1Pile.getTopCard();
Card player2RemovedTopCard2 = player2Pile.getTopCard();
Card player2RemovedTopCard3 = player2Pile.getTopCard();
Card player2RemovedTopCard4 = player2Pile.getTopCard();
Card player2RemovedTopCard5 = player2Pile.getTopCard();
do
{
System.out.println("Player1's 5th card is: " + player1RemovedTopCard5 + " Player2's 5th card is: " + player2RemovedTopCard5);
if(player1RemovedTopCard5.compareTo(player2RemovedTopCard5) > player2RemovedTopCard5.compareTo(player1RemovedTopCard5))
{
System.out.println("Player 1 is the winner of the War! ");
player1Pile.add(player1RemovedTopCard);
player1Pile.add(player1RemovedTopCard2);
player1Pile.add(player1RemovedTopCard3);
player1Pile.add(player1RemovedTopCard4);
player1Pile.add(player1RemovedTopCard5);
player1Pile.add(player2RemovedTopCard);
player1Pile.add(player2RemovedTopCard2);
player1Pile.add(player2RemovedTopCard3);
player1Pile.add(player2RemovedTopCard4);
player1Pile.add(player2RemovedTopCard5);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
else if(player1RemovedTopCard5.compareTo(player2RemovedTopCard5) < player2RemovedTopCard5.compareTo(player1RemovedTopCard5))
{
System.out.println("Player 2 is the winner of the War! ");
player2Pile.add(player1RemovedTopCard);
player2Pile.add(player1RemovedTopCard2);
player2Pile.add(player1RemovedTopCard3);
player2Pile.add(player1RemovedTopCard4);
player2Pile.add(player1RemovedTopCard5);
player2Pile.add(player2RemovedTopCard);
player2Pile.add(player2RemovedTopCard2);
player2Pile.add(player2RemovedTopCard3);
player2Pile.add(player2RemovedTopCard4);
player2Pile.add(player1RemovedTopCard5);
System.out.println("Player 1 has: " + player1Pile.size() + " cards left.");
System.out.println("Player 2 has: " + player2Pile.size() + " cards left.");
System.out.println(" ");
keyboard.nextLine();
}
}while(player1RemovedTopCard5.compareTo(player2RemovedTopCard5) == player2RemovedTopCard5.compareTo(player1RemovedTopCard5));
}
}
countingPlays++;
if(countingPlays >= 10)
{
player1Pile.shuffle();
player2Pile.shuffle();
System.out.println("Cards Shuffled");
countingPlays = 0;
}
}while(player1Pile.size() > 0 || player2Pile.size() > 0);
}
catch (IndexOutOfBoundsException theException)
{
if(player1Pile.size() == 0)
{
System.out.println("Winner is Player 2" );
}
else
System.out.println("Winner is Player 1" );
}
}
import java.util.*;
public class CardPile
{
private ArrayList<Card> pile;
public CardPile()
{
pile = new ArrayList<Card>();
}
public void add(Card aCard)
{
pile.add(aCard);
}
public Card getTopCard()
{
return pile.remove(0);
}
public String toString()
{
return pile.toString();
}
public int size()
{
return pile.size();
}
public void clear()
{
pile.clear();
}
public void shuffle()
{
Random rand = new Random();
for (int i=0; i<2000; i++)
{
if (size() > 0)
{
Card topCard = pile.remove(0);
int newPosition = rand.nextInt(pile.size());
pile.add(newPosition, topCard);
}
}
}
}
import java.util.*;
public class Card implements Comparable
{
private int rank;
private char suit;
public Card()
{
suit = 'u0003';
rank = 0;
}
public Card(char theSuit, int theRank)
{
this.suit = theSuit;
this.rank = theRank;
}
public int getRank()
{
return rank;
}
public char getSuit()
{
return suit;
}
public String toString()
{
if(rank == 11)
{
return suit + "" + 'J';
}
else if(rank == 12)
{
return suit + "" + 'Q';
}
else if(rank == 13)
{
return suit + "" + 'K';
}
else if(rank == 14)
{
return suit + "" + 'A';
}
else
return suit + "" + rank;
}
public int compareTo(Object anotherCard)
{
Card another = (Card)anotherCard;
if(this.rank > another.rank)
{
return 1;
}
else if(this.rank < another.rank)
{
return -1;
}
else
return 0;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.