Ja, diesmal werde ich endlich ein Deck machen. Lassen Sie uns die Papierbündelschnittstelle, die wir das letzte Mal erstellt haben, fest verwenden.
public class Deck{
private Stack<Card> deck = new Stack();
}
Ja, wir haben ein Deck.
Das ist ein Witz, aber jetzt haben wir eine Deck-Klasse mit Karten als Stapel. Java Stack ist übrigens eine Unterklasse von List.
Da das Deck im Grunde nur von oben herausgenommen wird, habe ich den Stapel anstelle des Arrays oder der linearen Liste verwendet.
public class Deck implements CardSheaf {
private Stack<Card> deck = new Stack<>();
public Deck(List<Card> deck) {
this.deck.addAll(deck);
}
public Deck(Card... deck) {
this.deck.addAll(Arrays.asList(deck));
}
@Override
public int indexOf(Card card) {
return CardSheaf.indexOf(deck, card);
}
//Die CardSheaf-Klasse bietet keine Standardimplementierung von cardSize, daher haben wir sie implementiert.
//Rufen Sie einfach die Anzahl der Elemente ab.
@Override
public int cardSize() {
return deck.size();
}
@Override
public void addCard(Card card) {
CardSheaf.addCard(deck, card);
}
@Override
public void removeCard(Card card) {
CardSheaf.removeCard(deck, card);
}
@Override
public void removeCard(int index) {
CardSheaf.removeCard(deck, index);
}
@Override
public Card find(int number, Card.Mark mark) {
return CardSheaf.find(deck, number, mark);
}
@Override
public int indexOf(int number, Card.Mark mark) {
return CardSheaf.indexOf(deck, number, mark);
}
@Override
public Card getCard(int index) {
return CardSheaf.getCard(deck, index);
}
@Override
public Card takeCard(int index) {
return CardSheaf.takeCard(deck, index).getValue();
}
}
In der Deck-Klasse wird die statische Methode von CardSheaf unverändert verwendet, da die Karte als Liste behandelt wird.
import java.util.*;
public class Deck implements CardSheaf {
private Stack<Card> deck = new Stack<>();
/**
*Initialisieren Sie das Deck mit den Karten in der Liste.
* @param deck Eine Liste aller Karten, die Sie zuerst in Ihr Deck legen möchten
*/
public Deck(List<Card> deck) {
this.deck.addAll(deck);
}
/**
*Initialisieren Sie das Deck mit den Karten im Array.
* @param deck Eine Reihe aller Karten, die Sie zuerst in das Deck legen möchten
*/
public Deck(Card... deck) {
this.deck.addAll(Arrays.asList(deck));
}
//Abkürzung
/**
*Nimm die oberste Karte des Decks heraus.
*/
public Card take_top() {
return deck.pop();
}
/**
*Wird verwendet, um den ersten Angriff zu Beginn des Spiels zu beurteilen.
* @return Die oberste Karte im Deck
*/
public Card first_step() {
return this.take_top();
}
/**
*Ziehe eine Karte.
* @return Die oberste Karte im Deck
*/
public Card draw() {
return this.take_top();
}
/**
*Wird bei Beschädigung aufgerufen.
* @return Die oberste Karte im Deck
*/
public Card damage() {
return this.take_top();
}
/**
*Mische das Deck.
*/
public void shuffle() {
Collections.shuffle(deck);
}
/**
*Bestimmen Sie, ob sich Karten im Deck befinden.
* @Geben Sie true zurück, wenn sich Karten im Deck befinden, andernfalls false
*/
public boolean hasCard() {
return cardSize() > 0;
}
}
Das war's für diese Zeit.
Recommended Posts