Sollte jetzt ohne Fehler alles implementiert sein.

master
s.eser 2024-03-23 20:13:29 +01:00
parent 13defb4014
commit dde68f1784
4 changed files with 116 additions and 30 deletions

View File

@ -4,38 +4,58 @@ import java.util.Scanner;
public class BlackJackSpiel { public class BlackJackSpiel {
public BlackJackSpiel(){ public BlackJackSpiel(){
Scanner sc = new Scanner(System.in);
System.out.println("Willkommen zum BlackJack Trainer"); System.out.println("Willkommen zum BlackJack Trainer");
Kartenstapel ks = new Kartenstapel();
int s = 1;
while(true){ while(true){
System.out.println("BlackJack: Möchten Sie ein neues Spiel anfangen? (Ja/Nein)"); int t = 1;
if (sc.next().equalsIgnoreCase("Ja")) { String eingabe = "";
Kartenstapel ks = new Kartenstapel(); System.out.println("Möchten Sie ein neues Spiel anfangen? (Ja/Nein)");
Scanner sc = new Scanner(System.in);
if (sc.nextLine().equalsIgnoreCase("Ja")) {
if(s != 1) {
System.out.println("Möchten Sie einen neuen Kartenstapel? (Ja/Nein)");
if(sc.nextLine().equalsIgnoreCase("Ja"))
ks = new Kartenstapel();
}
s = 2;
Hand spieler = getNeueHand(ks); Hand spieler = getNeueHand(ks);
System.out.println("Ihre Hand: "+spieler);
if (spieler.isBlackJack()) { if (spieler.isBlackJack()) {
System.out.println("BlackJack: Ihre Hand: "+spieler); System.out.println("Sie haben einen BlackJack!");
System.out.println("BlackJack: Sie haben einen BlackJack!");
} else { } else {
while(spieler.getPunkte()<22) { while(spieler.getPunkte()<22) {
if(t>1)
System.out.println("Ihre Hand: "+spieler);
if(spieler.getPunkte()==21) {
System.out.println("Ihre Endpunktzahl von diesem Spiel beträgt: 21");
eingabe = "Nein";
break;
}
int punkte = spieler.getPunkte(); int punkte = spieler.getPunkte();
System.out.println("BlackJack: Ihre Hand: "+spieler); System.out.println("Ihre Hand ergibt zurzeit: " + punkte + " Punkte.");
System.out.println("BlackJack: Ihre Hand ergibt zurzeit: " + punkte + " Punkte."); System.out.println("Möchten Sie noch eine Karte ziehen? (Ja/Nein)");
System.out.println("BlackJack: Möchten Sie noch eine Karte ziehen? (Ja/Nein)"); t++;
if (sc.next().equalsIgnoreCase("Ja")) eingabe = sc.nextLine();
if (eingabe.equalsIgnoreCase("Ja"))
spieler.addKarte(ks); spieler.addKarte(ks);
else { else {
System.out.println("BlackJack: Ihre Endpunktzahl von diesem Spiel beträgt: " + spieler.getPunkte()); System.out.println("Ihre Endpunktzahl von diesem Spiel beträgt: " + spieler.getPunkte());
break; break;
} }
} }
System.out.println("BlackJack: Ihre Hand: "+spieler);
System.out.println("BlackJack: Ihre Endpunktzahl von diesem Spiel beträgt: "+spieler.getPunkte()); if(eingabe.equalsIgnoreCase("Ja")) {
System.out.println("BlackJack: Damit haben Sie 21 überschritten und verloren."); System.out.println("Ihre Hand: " + spieler);
System.out.println("Ihre Endpunktzahl von diesem Spiel beträgt: " + spieler.getPunkte());
System.out.println("Damit haben Sie 21 überschritten und verloren.");
}
} }
} else { } else {
System.out.println("BlackJack: Damit wäre das Spiel beendet."); System.out.println("Damit wäre das Spiel beendet.");
break; break;
} }
} }

View File

@ -23,7 +23,7 @@ public class Hand {
public int getPunkte(){ public int getPunkte(){
int ergebnis = 0; int ergebnis = 0;
for(int i = 0; i<hand.size(); i++){ for(int i = 0; i<hand.size(); i++){
ergebnis += hand.get(i).getPunkte(); ergebnis += hand.get(i).getPunkte(hand);
} }
return ergebnis; return ergebnis;
} }

View File

@ -1,5 +1,6 @@
package de.hs_mannheim.informatik.blackjack; package de.hs_mannheim.informatik.blackjack;
import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
public class Karte { public class Karte {
@ -19,23 +20,85 @@ public class Karte {
return farbe + " " + karte; return farbe + " " + karte;
} }
public int getPunkte(){ public int getPunkte(ArrayList<Karte> hand){
int counter = 0;
for(int i = 0; i<hand.size(); i++){
if(hand.get(i).karte.equals("Ass"))
counter ++;
}
if(karte.equals("Bube")||karte.equals("Dame")||karte.equals("König")) if(karte.equals("Bube")||karte.equals("Dame")||karte.equals("König"))
return 10; return 10;
else if(karte.equals("Ass")) { else if(karte.equals("Ass")&&counter==1) {
Scanner ass = new Scanner(System.in); int entscheidung = 0;
System.out.print("Soll das Ass als 1 oder 11 Punkte zählen?(1/11):"); for(int i = 0; i<hand.size(); i++) {
int entscheidung = ass.nextInt(); if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
if (entscheidung == 1) { entscheidung += 10;
ass.close(); } else if (!hand.get(i).karte.equals("Ass")) {
return 1; entscheidung += Integer.parseInt(hand.get(i).karte);
} else if (entscheidung == 11) { }
ass.close();
return 11;
} }
} else if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==2) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<1) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==3) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<2) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}else if(karte.equals("Ass")&&counter==4) {
int entscheidung = 0;
int counterAss = 0;
for(int i = 0; i<hand.size(); i++) {
if (hand.get(i).karte.equals("Bube")||hand.get(i).karte.equals("Dame")||hand.get(i).karte.equals("König")) {
entscheidung += 10;
} else if (!hand.get(i).karte.equals("Ass")) {
entscheidung += Integer.parseInt(hand.get(i).karte);
} else if(counterAss<3) {
entscheidung += 1;
counterAss ++;
}
}
if (entscheidung<=10)
return 11;
else
return 1;
}
else
return Integer.parseInt(karte); return Integer.parseInt(karte);
return 0;
} }
} }

View File

@ -42,6 +42,9 @@ public class Kartenstapel {
} }
public Karte getKarte(){ public Karte getKarte(){
if(kartenstapel.isEmpty()){
System.out.println("Es sind keine Karten mehr im Kartenstapel übrig!");
System.exit(0);}
Karte randomKarte = kartenstapel.get((int)(Math.random()*kartenstapel.size())); Karte randomKarte = kartenstapel.get((int)(Math.random()*kartenstapel.size()));
kartenstapel.remove(randomKarte); kartenstapel.remove(randomKarte);
return randomKarte; return randomKarte;