Vedo un sacco di domande simili a questa ma a cui viene risposto un codice che non ho ancora appreso. Dovrei essere in grado di svolgere questo compito senza un arraylist, quindi è una sfida per me. Ho bisogno di giocare a un gioco di guerra: creare una classe di carte, creare un mazzo e poi generare casualmente la prima carta, "rimuovere" la carta dal mazzo e produrre una seconda carta per vedere quale carta ha vinto, continuare questo confronto fino a il mazzo è esaurito. Ecco quello che ho finora:Codice Java per la selezione e il confronto delle carte (senza Arraylist)
public class Card
{
private int cardValue;
private String cardSuit;
private String stringValue;
static final String[] SUIT = {"Clubs", "Diamonds", "Hearts", "Spades"};
static final String[] VALUE = {"Ace","Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
/**
*CONSTRUCTOR for Card class
*contains the arrays for both suit and values
**/
public Card (int cardS, int cardV)
{
cardSuit = SUIT[cardS];
stringValue = VALUE[cardV];
}
/**
*Get method for card suit, access the value of cardSuit
**/
public String getCardSuit()
{
return cardSuit;
}
/**
*get method for card's VALUES
**/
public String getValue()
{
return stringValue;
}
//in order to display string value of cards
public String toString()
{
return String.format("%s of %s", stringValue, cardSuit);
}
}
public class Deck
{
private final int HIGH_SUIT=3;
private final int HIGH_VALUE=12;
int i = 0;
int cardCount;
Card[] fullDeck = new Card[52];
public Deck()
{
for(int s = 0; s <= HIGH_SUIT; s++)
{
//for loop to determine the suit
for (int v = 0; v <= HIGH_VALUE; v++)
{
//construct all 52 cards and print them out
fullDeck[i] = new Card(s, v);
cardCount = (i + 1);
i++;//increment the card counter
}
}
}
}
public class War3
{
public static void main(String[] args)
{
int i=0;
Deck[] fullDeck = new Deck[52]; //set up the deck
//create a random value for the first card
int r = ((int) (Math.random() * 100) % 51);//create random number
Card[] playerCard = new Card[r];//create the player's card
System.out.println("The card is: " + playerCard.toString());
}
Come potete vedere, non ho avuto molto lontano con War 3 perché io don sapere come visualizzare la prima carta Quando viene eseguito mostra questo: La carta è: [LCard; @ 4a5ab2random # 1 Come posso visualizzare la prima carta nell'array? Ho bisogno di aiuto per capire come assegnare la prima carta e la seconda carta, visualizzarli entrambi e poi confrontarli. Ho una lunga strada da percorrere per fare un passo alla volta.
Il problema è che si sta tentando di stampare l'oggetto 'giocatoreCard'. Di default, sta usando l'implementazione 'Object.toString()', quindi dovresti sovrascrivere quel metodo nella tua classe 'Card'. –
Che cos'è esattamente "un gioco di guerra"? Suggerirei di lasciare che il mazzo si occupi di pescare la prima carta. – Behe
Stai iniziando una serie di carte invece di una sola carta. Sostituisci le parentesi quadre con quelle normali per ottenere una chiamata al costruttore e rimuovile dalle specifiche del tipo in questo modo: 'Card playerCard = new Card (r)'. – s1lence