Previous Code: public class Cards { /** Array of suit names, in order. */ public
ID: 3840329 • Letter: P
Question
Previous Code:
public class Cards
{
/** Array of suit names, in order. */
public static final String[] SUITS =
{"Clubs", "Diamonds", "Hearts", "Spades"};
/** Array of rank names, in order. */
public static final String[] RANKS =
{"Ace", "Deuce", "3", "4", "5", "6", "7", "8", "9", "10",
"Jack", "Queen", "King"};
// Symbolic constants.
public static final int NCARDS = SUITS.length * RANKS.length;
public static final int CARDS_PER_HAND = 5;
/**
* Main method.
*
* @param args Name of player.
*/
public static void main(String[] args)
{
checkUsage(args);
String name = args[0];
System.out.printf("Hello, %s%n", name);
int[] deck = initializeDeck();
display(deck);
shuffle(deck);
display(deck);
int[] hand = dealHand(deck);
display(hand);
displayHand(hand);
}
public static void checkUsage(String[] args)
{
if (args.length < 1) {
System.out.println("usage: java Cards <yourName>");
System.exit(-1);
}
}
public static int[] initializeDeck()
{
int[] deck = new int[NCARDS];
for (int i = 0; i < deck.length; ++i) {
deck[i] = i;
}
return deck;
}
public static void display(int[] array)
{
System.out.println(Arrays.toString(array));
}
public static void shuffle(int[] deck)
{
Random rand = new Random();
for (int i = 0; i < NCARDS; ++i) {
int j = rand.nextInt(NCARDS);
swap(deck, i, j);
}
}
public static void swap(int[] array, int from, int to)
{
int temp = array[from];
array[from] = array[to];
array[to] = temp;
}
public static int[] dealHand(int[] deck)
{
int[] hand = new int[CARDS_PER_HAND];
for (int i = 0; i < CARDS_PER_HAND; ++i) {
hand[i] = deck[i];
}
return hand;
}
public static void displayHand(int[] hand)
{
String[] cards = new String[CARDS_PER_HAND];
for (int i = 0; i < CARDS_PER_HAND; ++i) {
cards[i] = cardToString(hand[i]);
}
System.out.println("Hand: " + Arrays.toString(cards));
}
public static String cardToString(int card)
{ return RANKS[rank(card)] + " of " + SUITS[suit(card)]; }
public static int rank(int card)
{ return card % RANKS.length; }
public static int suit(int card)
{ return card / RANKS.length; }
}
Explanation / Answer
Below is the code, please rate the answer if satisfied, else comment :
Card.java
package cards;
public class Card {
/** Array of suit names, in order. */
public static final String[] SUITS = { "Clubs", "Diamonds", "Hearts", "Spades" };
/** Array of rank names, in order. */
public static final String[] RANKS = { "Ace", "Deuce", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen",
"King" };
// Symbolic constants.
public static int NSUITS = SUITS.length;
public static int NRANKS = SUITS.length;
public static final int NCARDS = SUITS.length * RANKS.length;
public static int cardNum;
public Card(int cardNum) {
this.cardNum = cardNum;
}
private int rank() {
return NSUITS;
}
private int suit() {
return NRANKS;
}
public String toString(int card) {
return RANKS[rank(card)] + " of " + SUITS[suit(card)];
}
public static int rank(int card) {
return card % RANKS.length;
}
public static int suit(int card) {
return card / RANKS.length;
}
public static void main(String[] args) {
Card card = new Card(0);
card.rank();
card.suit();
System.out.println(card.toString(0));
}
}
Deck.java
package cards;
import java.util.Random;
import java.util.Arrays;
import java.util.NoSuchElementException;
import static cards.Card.*;
public class Deck {
private Card[] deck;
private static int nextCard;
private Random rand;
public Deck() {
deck = new Card[NCARDS];
for (int i = 0; i < deck.length; i++) {
if (cardNum == i) {
deck[i] = new Card(cardNum);
}
}
nextCard = 0;
rand = new Random();
}
public static void shuffle(int[] deck) {
Random rand = new Random();
for (int i = 0; i < NCARDS; ++i) {
int j = rand.nextInt(NCARDS);
swap(deck, i, j);
}
}
public static void swap(int[] array, int from, int to) {
int temp = array[from];
array[from] = array[to];
array[to] = temp;
}
public String toString(int card) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < NRANKS; i++) {
for (int j = 0; j < NSUITS; j++) {
builder.append("%-17.0f " + " ");
}
}
return builder.toString();
}
public Card dealHand(int[] deck) {
if (nextCard >= NCARDS) {
throw new NoSuchElementException(String.valueOf(this.nextCard));
}
nextCard = nextCard + 1;
return new Card(nextCard);
}
public static int[] initializeDeck() {
int[] deck = new int[NCARDS];
for (int i = 0; i < deck.length; ++i) {
deck[i] = i;
}
return deck;
}
public static void main(String[] args) {
Deck deck = new Deck();
deck.dealHand(deck.initializeDeck());
deck.shuffle(deck.initializeDeck());
System.out.println(deck.toString(2));
}
}
Hand.java
package cards;
import java.util.Arrays;
public class Hand {
static final int CARDS_PER_HAND = 5;
Card[] hand;
int nCards;
public Hand() {
hand = new Card[CARDS_PER_HAND];
nCards = 0;
}
public void addCard(Card card) {
hand[nCards] = card;
nCards++;
}
public String toString() {
return Arrays.toString(this.hand);
}
}
Poker.java
package cards;
/**
* Class represents single card. Maintain's card number.
*
* @author Piduruchetan_Reddy
*
*/
public class Poker {
private static final int NHANDS = 4;
private static Hand[] hand = new Hand[NHANDS];
public static void main(String[] args) {
Deck deck = new Deck();
int[] decks = deck.initializeDeck();
for (int i = 0; i < hand.length; i++) {
hand[i] = new Hand();
}
deck.shuffle(decks);
deck.toString(NHANDS);
for (int i = 0; i < Hand.CARDS_PER_HAND; i++) {
for (int j = 0; j < NHANDS; j++) {
Hand temp = new Hand();
temp.addCard(deck.dealHand(decks));
hand[j] = temp;
System.out.printf("Hand %d: %s%n", j + 1, hand[j]);
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.