The objective of this assignment is to implement a basic API for Card games, and
ID: 3711780 • Letter: T
Question
The objective of this assignment is to implement a basic API for Card games, and then code a imple Card game. Card.iava Define a Card class with the following API public Card(Suit suit, int rank) public int getRank() public Suit getSuit() public String toStringI "Ace of Spades" Note that Suit is an enumerated type. Your Card class should also implement the Comparable interface. Order cards in ascending order of their rank within a Suit, with the different Suits ranked, from lowest to highest, as CLUBS, DIAMONDS, HEARTS, SPADES. Deck.java Implement a Deck class that keeps an ArrayList of cards. Provide the following API: public Deck() public String toString) // print all cards in deck public boolean isDeckEmpty() public Card deal() //deals the topmost card in deck public void shuffle() //shuffles cards in deckExplanation / Answer
public class Card
{
String cardSuit, cardRank, cardColor;
Random generator = new Random();
String[] suits = {"hearts", "spades", "diamonds", "clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "Jack", "Queen", "King"};
int randomSuits = generator.nextInt(suits.length);
int randomRanks = generator.nextInt(ranks.length);
Card() {
cardSuit = suits[randomSuits];
cardRank = ranks[randomRanks];
if (cardSuit.equals("hearts") || cardSuit.equals("diamonds")) {
cardColor = "red";
}
else {
cardColor = "black";
}
}
public Card(Suit suit, int rank)
public int getRank()
{
System.out.println(cardRank);
}
public Suit getSuit()
{
System.out.println(cardSuit);
}
public String toString()
}
public class Deck
{
private ArrayList<Card> cards;
deck()
{
cards = new ArrayList<Card>();
int index_1, index_2;
Random generator = new Random();
Card temp;
short jokerSuit=5;
short jokerRank = 0;
cards.add(new Card(jokerSuit, jokerRank));
cards.add(new Card(jokerSuit,jokerRank));
for (short suit=0; suit<=3; suit++)
{
for (short rank=0; rank<=12; rank++)
{
cards.add(new Card(suit,rank));
}
}
int deckSize = 54;
for (int i=0; i<1000; i++)
{
index_1 = generator.nextInt( cards.size() );
index_2 = generator.nextInt( cards.size() );
temp = cards.get( index_2 );
cards.set( index_2 , cards.get( index_1 ) );
cards.set( index_1, temp );
}
}
public String tostring()
{
int z=0;
public MyCard printDeck2(int y)
{
MyCard temp = cards[y];
return temp;
}
while(z<=12)
{
c = d1.printDeck2(z);
System.out.print(c.toString() + " ");
z++;
}
System.out.println();
while(z<=25)
{
c = d1.printDeck2(z);
System.out.print(c.toString() + " ");
z++;
}
System.out.println();
while(z<=38)
{
c = d1.printDeck2(z);
System.out.print(c.toString() + " ");
z++;
}
System.out.println();
while(z<=51)
{
c = d1.printDeck2(z);
System.out.print(c.toString() + " ");
z++;
}
if(z>51)
break;
}
System.out.println();
}
public void shuffle()
{
Random randomNumber = new Random();
int index = 0;
while(z>0)
{
index = randomNumber.nextInt(q);
break;
}
MyCard temp = cards[index];
cards[index] = cards[z];
cards[z] = temp;
MyCard temp2 = temp;
z--;
q--;
return temp2;
}
public class Hand implements Comparable<Hand>
{
private ArrayList<Card> hand;
private int[] values;
private String[] suits;
public Hand(ArrayList<Card> cards)
{
hand = cards;
values = values();
suits = suits();
Arrays.sort(values);
Arrays.sort(suits);
}
public ArrayList<Card> cards()
{
return hand;
}
public Hand(int m)
{@RequiredArgsConstructor enum HandValue implements Predicate<Hand> {
HIGH_CARD {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(1, 1, 1, 1, 1));
}
@Override List<Card> reorderedCards(Hand hand) {
return ImmutableList.copyOf(hand.cards());
}
},
PAIR {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(1, 1, 1, 2));
}
@Override List<Card> reorderedCards(Hand hand) {
final List<Card> result = Lists.newArrayList();
final Rank rank = findRepeatedRank(hand.cards());
for (final Card c : hand.cards()) {
if (!c.rank().equals(rank)) result.add(c);
}
for (final Card c : hand.cards()) {
if (c.rank().equals(rank)) result.add(c);
}
assert ImmutableSet.copyOf(result).equals(ImmutableSet.copyOf(hand.cards()));
return result;
}
private Rank findRepeatedRank(Iterable<Card> cards) {
final EnumSet<Rank> set = EnumSet.noneOf(Rank.class);
for (final Card c : cards) {
if (!set.add(c.rank())) return c.rank();
}
throw new RuntimeException("Impossible.");
}
},
TWO_PAIRS {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(1, 2, 2));
}
},
THREE_OF_A_KIND {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(1, 1, 3));
}
},
STRAIGHT {
@Override public boolean apply(Hand input) {
return input.isStraight();
}
},
FLUSH {
@Override public boolean apply(Hand input) {
return input.suitHistogram().equals(ImmutableMultiset.of(5));
}
},
FULL_HOUSE {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(2, 3));
}
},
FOUR_OF_A_KIND {
@Override public boolean apply(Hand input) {
return input.rankHistogram().equals(ImmutableMultiset.of(1, 4));
}
},
STRAIGHT_FLUSH {
@Override public boolean apply(Hand input) {
return input.isStraight() && input.suitHistogram().equals(ImmutableMultiset.of(5));
}
}
}
class Custom_Exception
{
checkArgument(hand.toHandValue().equals(this));
throw new RuntimeException("Not implemented: " + this);
}
Abstract class CardGame
{
public abstract void play()
{
Player winningPlayer = players.get(0);
for (Player player : players)
{
if (player.getOverallHandValue() > winningPlayer.getOverallHandValue()){
winningPlayer = player;
}
if (player.getOverallHandValue() == winningPlayer.getOverallHandValue()){
return "draw!";
}
return winningPlayer.getName();
}
public abstract String winChecker()
{
boolean many = false;
boolean initial = true;
Player winningPlayer = players.get(0);
for (Player player : players)
{
if (player.getOverallHandValue() > winningPlayer.getOverallHandValue())
{
winningPlayer = player;
many = false;
}
if (player.getOverallHandValue() == winningPlayer.getOverallHandValue())
{
if (initial)
{
initial = false;
} else
{
many = true;
}
}
}
if (many)
{
return "draw";
}
return winningPlayer.getName();
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.