init
commit
18c40b22ca
|
@ -0,0 +1,55 @@
|
|||
package Uni.semester03.BlackJack;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class BlackJackSpiel {
|
||||
private Kartenstapel kartenstapel;
|
||||
private Hand hand;
|
||||
|
||||
public BlackJackSpiel() {
|
||||
kartenstapel = new Kartenstapel();
|
||||
hand = getNeueHand();
|
||||
|
||||
Scanner sc = new Scanner(System.in);
|
||||
|
||||
while (true) {
|
||||
System.out.println("Deine aktuelle Hand: \n" + hand);
|
||||
System.out.println("Du hast aktuell " + hand.getPunkte() + " Punkte.");
|
||||
|
||||
if (hand.isBlackJack()) {
|
||||
System.out.println("JA!! BLACKJACK!!");
|
||||
System.out.println("Du beendest mit " + hand.getPunkte() + " Punkten.");
|
||||
break;
|
||||
}
|
||||
|
||||
System.out.println("Soll eine weitere Karte gezogen werden? (j/n)");
|
||||
String antwort = sc.nextLine().toLowerCase();
|
||||
|
||||
if (antwort.equals("j")) {
|
||||
Karte neueKarte = kartenstapel.getKarte();
|
||||
hand.addWeitereKarte(neueKarte);
|
||||
System.out.println("Neue Karte gezogen: " + neueKarte);
|
||||
|
||||
if (hand.getPunkte() > 21) {
|
||||
System.out.println("Überkauft! Du hast verloren.");
|
||||
break;
|
||||
}
|
||||
} else if (antwort.equals("n")) {
|
||||
System.out.println("Du beendest mit " + hand.getPunkte() + " Punkten.");
|
||||
break;
|
||||
} else {
|
||||
System.out.println("Ungültige Eingabe. Bitte 'j' oder 'n' eingeben.\n");
|
||||
}
|
||||
}
|
||||
sc.close();
|
||||
}
|
||||
|
||||
|
||||
public Hand getNeueHand() {
|
||||
return new Hand(kartenstapel);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new BlackJackSpiel();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package Uni.semester03.BlackJack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Hand {
|
||||
private ArrayList<Karte> hand;
|
||||
|
||||
protected Hand(Kartenstapel ks) {
|
||||
hand = createHand(ks);
|
||||
}
|
||||
|
||||
private ArrayList<Karte> createHand(Kartenstapel ks) {
|
||||
ArrayList<Karte> neueHand = new ArrayList<>();
|
||||
neueHand.add(ks.getKarte());
|
||||
neueHand.add(ks.getKarte());
|
||||
return neueHand;
|
||||
}
|
||||
|
||||
public void addWeitereKarte(Karte karte) {
|
||||
hand.add(karte);
|
||||
}
|
||||
|
||||
public int getPunkte() {
|
||||
int punkte = 0;
|
||||
int anzahlAss = 0;
|
||||
|
||||
// Durchlaufe die Karten in der Hand
|
||||
for (Karte karte : hand) {
|
||||
punkte += karte.getPunkte(); // Addiere die Punkte der aktuellen Karte zur Gesamtpunktzahl
|
||||
|
||||
// Wenn die aktuelle Karte ein Ass ist, erhöhe den Zähler
|
||||
if (karte.getKarte().equals("ASS")) {
|
||||
anzahlAss++;
|
||||
}
|
||||
}
|
||||
|
||||
// Berücksichtige die möglichen Werte für Asse
|
||||
// Füge 10 Punkte für jedes Ass hinzu, solange der Gesamtwert der Hand (ohne Asse) plus 10 nicht über 21 liegt
|
||||
while (anzahlAss > 0 && punkte + 10 <= 21) {
|
||||
punkte += 10;
|
||||
anzahlAss--;
|
||||
}
|
||||
|
||||
return punkte;
|
||||
}
|
||||
|
||||
public boolean isBlackJack() {
|
||||
return hand.size() == 2 && getPunkte() == 21;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String ausgabe = "";
|
||||
for (Karte karte : hand) {
|
||||
ausgabe += karte.toString() + "\n";
|
||||
}
|
||||
return ausgabe;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package Uni.semester03.BlackJack;
|
||||
|
||||
public class Karte {
|
||||
private String farbe;
|
||||
private String karte;
|
||||
|
||||
protected Karte(String farbe, String karte) {
|
||||
this.farbe = farbe;
|
||||
this.karte = karte;
|
||||
}
|
||||
|
||||
public String getKarte() {
|
||||
return karte;
|
||||
}
|
||||
|
||||
public int getPunkte() {
|
||||
switch (karte) {
|
||||
case "ASS": return 1;
|
||||
case "2": return 2;
|
||||
case "3": return 3;
|
||||
case "4": return 4;
|
||||
case "5": return 5;
|
||||
case "6": return 6;
|
||||
case "7": return 7;
|
||||
case "8": return 8;
|
||||
case "9": return 9;
|
||||
case "10":
|
||||
case "J":
|
||||
case "Q":
|
||||
case "K": return 10;
|
||||
default:
|
||||
throw new RuntimeException("Wert der Karte ist ungültig");
|
||||
}
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "Karte: " + this.karte + " " + this.farbe;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package Uni.semester03.BlackJack;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class KarteTest {
|
||||
|
||||
@Test
|
||||
void testValidGetPunkte() {
|
||||
Karte karteAss = new Karte("Karo", "ASS");
|
||||
assertEquals(1, karteAss.getPunkte());
|
||||
|
||||
Karte karteZwei = new Karte("Herz", "2");
|
||||
assertEquals(2, karteZwei.getPunkte());
|
||||
|
||||
Karte karteZehn = new Karte("Pik", "10");
|
||||
assertEquals(10, karteZehn.getPunkte());
|
||||
|
||||
Karte karteBube = new Karte("Kreuz", "J");
|
||||
assertEquals(10, karteBube.getPunkte());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testToString() {
|
||||
Karte karte = new Karte("Karo", "3");
|
||||
assertEquals("Karte: 3 Karo", karte.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testUngueltigeKarte() {
|
||||
// Überprüfe, ob eine Exception geworfen wird, wenn eine ungültige Karte erstellt wird
|
||||
assertThrows(RuntimeException.class, () -> new Karte("Herz", "13").getPunkte());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package Uni.semester03.BlackJack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
public class Kartenstapel {
|
||||
private ArrayList<Karte> karten;
|
||||
|
||||
protected Kartenstapel() {
|
||||
karten = createStapel();
|
||||
}
|
||||
|
||||
public Karte getKarte() {
|
||||
Karte neachsteKarte = karten.getFirst();
|
||||
karten.removeFirst();
|
||||
return neachsteKarte;
|
||||
}
|
||||
|
||||
public int getZahlUebrigerKarten() {
|
||||
return karten.size();
|
||||
}
|
||||
|
||||
public static ArrayList<Karte> createStapel() {
|
||||
ArrayList<Karte> stapel = new ArrayList<>();
|
||||
|
||||
String[] farben = {"Karo", "Herz", "Pik", "Kreuz"};
|
||||
String[] karten = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "ASS"};
|
||||
|
||||
for (String farbe : farben) {
|
||||
for (String karte : karten) {
|
||||
Karte neueKarte = new Karte(farbe, karte);
|
||||
stapel.add(neueKarte);
|
||||
}
|
||||
}
|
||||
|
||||
Collections.shuffle(stapel);
|
||||
return stapel;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String ausgabe = "Kartenstapel: \n";
|
||||
for (Karte karte : karten) {
|
||||
ausgabe += karte.toString() + "\n";
|
||||
}
|
||||
return ausgabe;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue