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