Es ist eine Fortsetzung von Letztes Mal.
Es ist ein bisschen mehr. Die Details stammen aus den folgenden Artikeln.
BlackJack_main.java
//
List<String> bills = new ArrayList<String>();
//Bis zum letzten Mal wurde es unter Berücksichtigung der Punkteberechnung in der Anordnung ["Diamant", "A"], ["Diamant", "2"] ... ["Klee", "K"] ausgedrückt. .. Aus diesem Grund haben wir uns entschieden, HasMap zur Berechnung der Punktzahl zu verwenden. Durch Verwendung der Karte als Schlüssel der assoziativen Anordnung wurde eine Karte in die Zeichenketten "Diamant A" und "Diamant 2" geändert. Erstellen der Deck-Array-Rechnungen und der Punkte des assoziativen Arrays zur Berechnung der Punktzahl zusammen mit der For-Anweisung. Collection.shuffle wurde verwendet, um das Deck zu Beginn des Spiels zu mischen und zufällig zu sortieren. Deckliste Hash Map zur Punkteberechnung
HashMap<String, Integer> points = new HashMap<String, Integer>();
//Kartengenerierungsarray
String[] strMark={"Diamant","Herz","Spaten","Kleeblatt"};
String[] strNumber={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//Erstellen Sie eine Karte mit For-Anweisung und fügen Sie sie der Deckliste hinzu
//Fügen Sie Karten und Punkte zur Hashmap hinzu
for (int i=0;i<strMark.length;i++){
for (int j=0;j<strNumber.length;j++){
String card = strMark[i]+"von"+strNumber[j];
bills.add(card);
if(j>9) {
points.put(card, 10);
}else {
points.put(card, j+1);
}
}
}
//Deck mischen
Collections.shuffle(bills);
--Drücken Sie die Karten in Ihrer Hand mit ArrayList als Array aus
Wenn ich eine Karte ziehe, ziehe ich sie einzeln aus den Scheinen heraus, also habe ich ArrayList verwendet, um die gezogenen Karten in einer Liste namens handCard zu speichern. Ich habe Listen anstelle von Arrays verwendet, weil ich nicht sicher bin, wie viele Karten ich ziehen werde. Wir haben auch eine Variable vom Typ int cardPoitns definiert, um die Punktzahl aus Punkten mithilfe der Karten in der Hand zu berechnen und zusammenzufassen. Beide definieren auch eine Liste / Variable, wobei "_dealer" wie ein Händler hinzugefügt wird.
BlackJack_main.java
//Starte das Spiel
//Spielerhand
ArrayList<String> handCard =new ArrayList<String>();
handCard.add(bills.get(0));
System.out.println("Ihre erste Karte ist["+handCard.get(0)+"]ist");
int cardPoints = points.get(bills.get(0));
bills.remove(0);
handCard.add(bills.get(0));
System.out.println("Ihre zweite Karte ist["+handCard.get(1)+"]ist");
cardPoints += points.get(bills.get(0));
bills.remove(0);
System.out.println("Deine Hand ist"+handCard+"ist");
System.out.println("Dein Ergebnis ist"+cardPoints+"Ist ein Punkt");
//Händlerhand
ArrayList<String> handCard_dealer = new ArrayList<String>();
handCard_dealer.add(bills.get(0));
System.out.println("Die erste Karte des Dealers ist["+handCard_dealer.get(0)+"]ist");
int cardPoints_dealer = points.get(bills.get(0));
bills.remove(0);
handCard_dealer.add(bills.get(0));
System.out.println("Ich kenne die zweite Karte des Dealers nicht");
cardPoints_dealer += points.get(bills.get(0));
bills.remove(0);
--Erstellen Sie eine JUDGE-Klasse, um auf cardPoints zu verweisen und festzustellen, ob BJ oder Burst
Ich möchte jedes Mal beurteilen, ob es BJ oder Burst ist, wenn der Spieler und der Dealer eine Karte ziehen. Deshalb habe ich eine JUDGE-Klasse erstellt und sie als Methode zur Verfügung gestellt. Außerdem haben wir in der JUDGE-Klasse ein globales variables Ergebnis definiert, damit das Spiel bedingt beendet werden kann.
JUDGE.java
public class JUDGE {
public static String result = "";
public static void judge(int cardPoints,int cardPoints_dealer) {
if(cardPoints>=22) {
System.out.println("----Burst!!!----");
System.out.println("----Du verlierst----");
result="lose";
} else if(cardPoints==21){
System.out.println("☆★☆★☆★☆★BLACKJACK!!!☆★☆★☆★☆★");
System.out.println("----Ist dein Sieg----");
result="win";
} else if(cardPoints_dealer>=22) {
System.out.println("----DEALER'S Burst!!!----");
System.out.println("Die Punktzahl des Dealers ist"+cardPoints_dealer+"Weil es ein Punkt ist, platzte es");
System.out.println("----Du gewinnst----");
result="win";
} else if(cardPoints_dealer==21){
System.out.println("☆★☆★☆★☆★DEALER'S BLACKJACK!!!☆★☆★☆★☆★");
System.out.println("----Du verlierst----");
result="lose";
}
} //Beurteilungsmethode schließen
} //Klassenstraffung
BlackJack_main.java
//BlackJack- oder Burst-Verarbeitung
JUDGE.judge(cardPoints,cardPoints_dealer);
if(JUDGE.result!="") {
return;
}
――Nachdem beide Hände fertig sind, entscheidet der Spieler, ob er schlägt oder steht.
Von hier an ist es der Teil, in dem der Spieler die Aktion tatsächlich auswählt. Wählen Sie je nach Punktzahl zwischen Treffer (Karte ziehen) oder Stehen (Spielzug an den Dealer übergeben, ohne eine Karte zu ziehen). Wenn Treffer ausgewählt ist, wird eine Karte aus den Scheinen herausgenommen, eine Handkarte hinzugefügt und die Punktzahl der gezogenen Karte wird ebenfalls zu cardPoints hinzugefügt. Danach wird das Urteil auch unter Verwendung der obigen Richtermethode getroffen. Schließlich werden die Aktionsauswahl und das Trefferverhalten in der While-Anweisung wiederholt.
BlackJack_main.java
//Hit?Stand?
Scanner scanner = new Scanner(System.in);
int PlayerRoop = 0;
while(PlayerRoop==0) {
int choice_roop =0;
String choicePlay ="";
while (choice_roop==0) {
System.out.print("Willst du schlagen? Willst du stehen(H/S?)>");
String choice = scanner.next();
if (choice.contains("H") || choice.contains("h")) {
System.out.println("Ich habe Hit gewählt");
choice_roop+=1;
choicePlay="Hit";
}else if(choice.contains("S") || choice.contains("s")){
System.out.println("Ich habe mich für Stand entschieden");
choice_roop+=1;
choicePlay="Stand";
}else {
System.out.println("Bitte wählen Sie Hit oder Stand");
}
} //während Satzschluss
//Ergebnis der Aktionsauswahl
if (choicePlay.contains("Hit")) {
handCard.add(bills.get(0));
System.out.println("Die Karte, die Sie gezogen haben["+handCard.get(handCard.size()-1)+"]ist");
cardPoints += points.get(handCard.get(handCard.size()-1));
bills.remove(0);
System.out.println("Die aktuelle Punktzahl ist"+cardPoints+"Ist ein Punkt");
System.out.println("Deine Hand ist"+handCard+"ist");
JUDGE.judge(cardPoints,cardPoints_dealer);
if(JUDGE.result != "") {
return;
}
}else {
System.out.println("Fahren Sie fort, bis der Dealer an der Reihe ist");
PlayerRoop+=1;
} //if-Anweisung wird geschlossen
} //während Satzschluss
Danach denke ich darüber nach, die Aktionen des Händlers hinzuzufügen.
Der Code ist ziemlich lang geworden, aber ich bin erleichtert, wenn das Ende sichtbar ist. Diesmal gab es zu viele Updates und es war ziemlich lang, aber ich würde gerne einen Rat hören.