From ab6d2f5668032ac1261ff281ffa706362562b1ae Mon Sep 17 00:00:00 2001 From: obaya Date: Sun, 18 Aug 2024 01:01:36 +0200 Subject: [PATCH] Blackjack --- .../src/JunitTest/EinführungTest.java | 1 + .../src/Übungen/BlackJack/BlackJack.java | 220 ++++++++++++++++++ .../src/Übungen/BlackJack/Test.java | 86 +++++++ 3 files changed, 307 insertions(+) create mode 100644 Programmierung2/src/Übungen/BlackJack/BlackJack.java create mode 100644 Programmierung2/src/Übungen/BlackJack/Test.java diff --git a/Programmierung2/src/JunitTest/EinführungTest.java b/Programmierung2/src/JunitTest/EinführungTest.java index 3b8c1c0..ae95c59 100644 --- a/Programmierung2/src/JunitTest/EinführungTest.java +++ b/Programmierung2/src/JunitTest/EinführungTest.java @@ -1,6 +1,7 @@ package JunitTest; import static org.junit.jupiter.api.Assertions.assertEquals; + import org.junit.jupiter.api.Test; public class EinführungTest { diff --git a/Programmierung2/src/Übungen/BlackJack/BlackJack.java b/Programmierung2/src/Übungen/BlackJack/BlackJack.java new file mode 100644 index 0000000..19b2f3d --- /dev/null +++ b/Programmierung2/src/Übungen/BlackJack/BlackJack.java @@ -0,0 +1,220 @@ +package Übungen.BlackJack; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; +import java.util.Scanner; + +public class BlackJack { + private String name; + private int guthaben; + private int handKartenAnzahl; + private int speicherErstEinsatz; + + public BlackJack(String name, int guthaben) { + this.name = name; + this.guthaben = guthaben; + this.handKartenAnzahl = 0; + this.speicherErstEinsatz = 0; + + } + + public void setspeicherErstEinsatz(int speicherErstEinsatz) { + this.speicherErstEinsatz = speicherErstEinsatz; + } + + public int getspeicherErstEinsatz() { + return speicherErstEinsatz; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getGuthaben() { + return guthaben; + } + + public void setGuthaben(int guthaben) { + this.guthaben += guthaben; + } + + public void subtrahiereGuthaben(int guthaben) { + this.guthaben -= guthaben; + } + + public int getHandKartenAnzahl() { + return handKartenAnzahl; + } + + public void setHandKartenAnzahl(int handKartenAnzahl) { + this.handKartenAnzahl += handKartenAnzahl; + } + + @Override + public String toString() { + return "Spieler [name=" + name + ", Guthaben=" + guthaben + "€]"; + } + +} + +class Spiel { + + private BlackJack spieler1; + private BlackJack spieler2; + private ArrayList KartenSpiellist; + private Random random; + private ArrayList erlaubteEinsätze; + private Scanner scan; + private int wähleEinsatz; + + public Spiel(BlackJack spieler1, BlackJack spieler2) { + this.spieler1 = spieler1; + this.spieler2 = spieler2; + this.random = new Random(); + this.wähleEinsatz = 0; + this.scan = new Scanner(System.in); + this.erlaubteEinsätze = new ArrayList<>(); + KartenSpiellist = new ArrayList<>(); + setAlleKartenspiele(); + + } + + private boolean guthabenAufladen(BlackJack spieler) { + System.out.println("Du hast kein Genug Guthaben\nMöchtest du Guthaben Aufladen? Ja/Nein"); + scan.nextLine(); + String guthabenAufladen = scan.nextLine(); + if (guthabenAufladen.equalsIgnoreCase("ja")) { + System.out.println("Wie Viel?"); + int aufladen = scan.nextInt(); + if (aufladen > 0) { + spieler.setGuthaben(aufladen); + System.out.println("Deine neue Guthaben= " + spieler.getGuthaben()); + return true; + } + } + return false; + } + + public boolean bestimmEinsätze(BlackJack spieler) { + erlaubteEinsätze.add(5); + erlaubteEinsätze.add(10); + erlaubteEinsätze.add(25); + erlaubteEinsätze.add(100); + boolean check = false; + System.out.println("Hallo " + spieler.getName() + " dein aktuelles Guthaben: " + spieler.getGuthaben()); + while (!check) { + if (spieler.getGuthaben() < 5) + if (guthabenAufladen(spieler)) + continue; + else + return false; + + System.out.println("Wähle einen Einsatz von: [5€,10€,25€,100€]"); + wähleEinsatz = scan.nextInt(); + if (!erlaubteEinsätze.contains(wähleEinsatz)) { + System.out.println("Falsche Eingabe"); + continue; + } + if (wähleEinsatz > spieler.getGuthaben()) { + if (guthabenAufladen(spieler)) + continue; + else + return false; + } + + if (erlaubteEinsätze.contains(wähleEinsatz)) { + int speicherErstEinsatz = spieler.getGuthaben(); + spieler.setspeicherErstEinsatz(speicherErstEinsatz); + spieler.subtrahiereGuthaben(wähleEinsatz); + System.out.println( + "Neu Guthaben = " + speicherErstEinsatz + " - " + wähleEinsatz + " = " + spieler.getGuthaben()); + check = true; + } + + } + return check; + } + + public void giveTwoRandomKarts() { + // Karten für Spieler 1 + int speicher1 = zieheZweiKarten(spieler1); + System.out.println(spieler1.getName() + " hat " + speicher1 + " Punkte."); + + // Karten für Spieler 2 + int speicher2 = zieheZweiKarten(spieler2); + System.out.println(spieler2.getName() + " hat " + speicher2 + " Punkte."); + } + + private int zieheZweiKarten(BlackJack spieler) { + int ersteKarte = KartenSpiellist.get(random.nextInt(KartenSpiellist.size())); + int zweiteKarte = KartenSpiellist.get(random.nextInt(KartenSpiellist.size())); + int summe = ersteKarte + zweiteKarte; + spieler.setHandKartenAnzahl(summe); + return summe; + } + + public void checkGewinner(BlackJack gewinner1, BlackJack gewinner2) { + int speicher = 0; + if (gewinner1.getHandKartenAnzahl() < 22) + if (gewinner1.getHandKartenAnzahl() > gewinner2.getHandKartenAnzahl() + || gewinner2.getHandKartenAnzahl() > 21) { + speicher = gewinner1.getspeicherErstEinsatz() * 2;// 100 + gewinner1.setspeicherErstEinsatz(speicher);// hier = 100 + gewinner1.setGuthaben(gewinner1.getspeicherErstEinsatz()); + System.out.println(gewinner1.getName() + " hat gewonnen!"); + System.out.println(gewinner1.getName() + " neue Guthaben " + gewinner1.getspeicherErstEinsatz()); + System.out.println(gewinner2.getName() + " neue Guthaben " + gewinner2.getGuthaben()); + + return; + } + + if (gewinner2.getHandKartenAnzahl() < 22) + if (gewinner2.getHandKartenAnzahl() > gewinner1.getHandKartenAnzahl() + || gewinner1.getHandKartenAnzahl() > 21) { + speicher = gewinner2.getspeicherErstEinsatz() * 2;// 100 + gewinner2.setspeicherErstEinsatz(speicher);// hier = 100 + gewinner2.setGuthaben(gewinner2.getspeicherErstEinsatz()); + System.out.println(gewinner2.getName() + " hat gewonnen!"); + System.out.println(gewinner2.getName() + " neue Guthaben " + gewinner2.getspeicherErstEinsatz()); + System.out.println(gewinner1.getName() + " neue Guthaben " + gewinner1.getGuthaben()); + + return; + } else + System.out.println("Unetschieden!"); + + } + + public void setAlleKartenspiele() { + for (int i = 1; i <= 11; i++) + KartenSpiellist.add(i); + + Collections.shuffle(KartenSpiellist); + } + + public void printAlleKartenspiele() { + for (int i : KartenSpiellist) + System.out.print(i); + } + + public ArrayList getKartenSpiel() { + return KartenSpiellist; + } + + public void giveRandomKart(BlackJack spieler) { + int randomKart = KartenSpiellist.get((random.nextInt(KartenSpiellist.size()))); + spieler.setHandKartenAnzahl(randomKart); + } + + public void printHandAnzahlKartenSpieler1() { + System.out.println(spieler1.getName() + " hat " + spieler1.getHandKartenAnzahl() + " Punkte"); + } + + public void printHandAnzahlKartenSpieler2() { + System.out.println(spieler2.getName() + " hat " + spieler2.getHandKartenAnzahl() + " Punkte"); + } +} diff --git a/Programmierung2/src/Übungen/BlackJack/Test.java b/Programmierung2/src/Übungen/BlackJack/Test.java new file mode 100644 index 0000000..f3be450 --- /dev/null +++ b/Programmierung2/src/Übungen/BlackJack/Test.java @@ -0,0 +1,86 @@ +package Übungen.BlackJack; +import java.util.ArrayList; +import java.util.Scanner; + +public class Test { + + public static void main(String[] args) { + + BlackJack spieler1 = new BlackJack("Obai", 50); + BlackJack spieler2 = new BlackJack("Lena", 100); + Scanner scan = new Scanner(System.in); + + + System.out.println(spieler1); + System.out.println(spieler2); + System.out.println(); + + boolean bestimmespieler; + + Spiel newSpiel = new Spiel(spieler1, spieler2); + bestimmespieler = newSpiel.bestimmEinsätze(spieler1); + if (bestimmespieler) + bestimmespieler = newSpiel.bestimmEinsätze(spieler2); + + + + + if (bestimmespieler) { + System.out.println("Willkommen im Blackjack-Spiel:"); + newSpiel.giveTwoRandomKarts(); + boolean hitSpieler1 = true; + boolean hitSpieler2 = true; + + while (hitSpieler1 || hitSpieler2) { + System.out.println("------------------------------------------"); + + if (spieler1.getHandKartenAnzahl() > 21) hitSpieler1 = false; + + if (hitSpieler1) { + System.out.println(spieler1.getName() + " : Möchten Sie hit oder stand? Aktuelle Hand: " + spieler1.getHandKartenAnzahl()); + String auswahl = scan.nextLine(); + + if (auswahl.equalsIgnoreCase("hit")) { + newSpiel.giveRandomKart(spieler1); + newSpiel.printHandAnzahlKartenSpieler1(); + } else if (auswahl.equalsIgnoreCase("stand")) { + hitSpieler1 = false; + newSpiel.printHandAnzahlKartenSpieler1(); + } else { + System.out.println("Falsche Eingabe: Bitte geben Sie entweder 'hit' oder 'stand' ein."); + continue; + } + } + + if (spieler2.getHandKartenAnzahl() > 21) hitSpieler2 = false; + + if (hitSpieler2) { + System.out.println(spieler2.getName() + " : Möchten Sie hit oder stand? Aktuelle Hand: " + spieler2.getHandKartenAnzahl()); + String auswahl = scan.nextLine(); + + if (auswahl.equalsIgnoreCase("hit")) { + newSpiel.giveRandomKart(spieler2); + newSpiel.printHandAnzahlKartenSpieler2(); + } else if (auswahl.equalsIgnoreCase("stand")) { + hitSpieler2 = false; + newSpiel.printHandAnzahlKartenSpieler2(); + } else { + System.out.println("Falsche Eingabe: Bitte geben Sie entweder 'hit' oder 'stand' ein."); + continue; + } + } + + if (!hitSpieler1 && !hitSpieler2) { + System.out.println("Das Spiel ist zu Ende"); + System.out.println(spieler1.getName() + " : " + spieler1.getHandKartenAnzahl() + " Punkte"); + System.out.println(spieler2.getName() + " : " + spieler2.getHandKartenAnzahl() + " Punkte"); + newSpiel.checkGewinner(spieler1,spieler2); + break; + } + } + } + + scan.close(); // Scanner schließen + } + +}