[JAVA] [Produktionsfortschritt] Black Jack: 02

Dieser Fortschritt

Es ist eine Fortsetzung von Letztes Mal.

Es ist ein bisschen mehr. Die Details stammen aus den folgenden Artikeln.

Inhalt

Ausdruck einer Karte und Punkteberechnung

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);

Ausdruck der Hand

--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);

Urteil von BJ oder Burst

--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;
		}

Willst du schlagen? Willst du stehen

――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

von jetzt an

Danach denke ich darüber nach, die Aktionen des Händlers hinzuzufügen.

Am Ende

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.

Recommended Posts

[Produktionsfortschritt] Black Jack: 03
[Produktionsfortschritt] Black Jack: 01
[Produktionsfortschritt] Black Jack: 02
[Produktionsfortschritt] Black Jack: 04
"Black Jack" implementiert.