From eb75d9f924ee04c01ee4a38591b62b7ea40d6c42 Mon Sep 17 00:00:00 2001 From: hummel Date: Tue, 14 May 2024 12:02:38 +0200 Subject: [PATCH] Spielstart implementiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spielstart mit Anzeige einer rudimentären Gewinnkarte für den ersten Spieler implemetiert. --- .../games/kniffel/domain/Gewinnkarte.java | 32 +++++++++++++ .../games/kniffel/domain/Kategorie.java | 40 ++++++++++++++++ .../games/kniffel/domain/Spiel.java | 29 +++++++++++ .../games/kniffel/domain/Spieler.java | 20 ++++++++ .../games/kniffel/domain/Würfel.java | 10 +++- .../games/kniffel/domain/Würfelbecher.java | 21 ++++++++ .../games/kniffel/facade/KniffelApi.java | 17 +++++-- .../games/kniffel/tui/SpielStart.java | 48 +++++++++++++++++++ .../games/kniffel/tui/SpielrundeSpielen.java | 21 ++++++++ .../informatik/games/kniffel/tui/TuiMain.java | 6 +-- 10 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Gewinnkarte.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Kategorie.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spiel.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spieler.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfelbecher.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielStart.java create mode 100644 MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielrundeSpielen.java diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Gewinnkarte.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Gewinnkarte.java new file mode 100644 index 0000000..5f181d4 --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Gewinnkarte.java @@ -0,0 +1,32 @@ +package de.hs_mannheim.informatik.games.kniffel.domain; + +public class Gewinnkarte { + private Kategorie[] kategorien; + private final int KATEGORIE_ANZAHL = 6; + + public Gewinnkarte() { + kategorien = new Kategorie[KATEGORIE_ANZAHL]; + + for (int i = 1; i <= kategorien.length; i++) { + kategorien[i-1] = new Kategorie(i); + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + + for (Kategorie k : kategorien) { + sb.append(k.getName() + ": "); + + if (k.isOffen()) + sb.append("offen"); + else + sb.append(k.getPunkte()); + + sb.append(System.lineSeparator()); + } + + return sb.toString(); + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Kategorie.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Kategorie.java new file mode 100644 index 0000000..46643da --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Kategorie.java @@ -0,0 +1,40 @@ +package de.hs_mannheim.informatik.games.kniffel.domain; + +public class Kategorie { + private String name; + private final int AUGEN; + private int punkte; + + public Kategorie(int augen) { + this.AUGEN = augen; + this.name = this.AUGEN + "er"; + this.punkte = -1; + } + + public int punkteErmitteln(Würfel[] würfel) { + int punkte = 0; + + for (Würfel w : würfel) { + if (w.getAugen() == AUGEN) + punkte += AUGEN; + } + + return punkte; + } + + public String getName() { + return name; + } + + public int getPunkte() { + if (punkte == -1) + return 0; + + return punkte; + } + + public boolean isOffen() { + return punkte == -1; + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spiel.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spiel.java new file mode 100644 index 0000000..d037264 --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spiel.java @@ -0,0 +1,29 @@ +package de.hs_mannheim.informatik.games.kniffel.domain; + +import java.util.ArrayList; + +public class Spiel { + private Spieler[] spieler; + private int spieleranzahl; + private int aktuellerSpieler; + private Würfelbecher becher; + + public Spiel(ArrayList spielernamen) { + spieleranzahl = spielernamen.size(); + spieler = new Spieler[spieleranzahl]; + + for (int i = 0; i < spielernamen.size(); i++) { + spieler[i] = new Spieler(spielernamen.get(i)); + } + + aktuellerSpieler = (int)(Math.random() * spieleranzahl); + + becher = new Würfelbecher(); + becher.würfle(); + } + + public Gewinnkarte getGewinnkarteAktuellerSpieler() { + return spieler[aktuellerSpieler].getGewinnkarte(); + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spieler.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spieler.java new file mode 100644 index 0000000..3876fa6 --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Spieler.java @@ -0,0 +1,20 @@ +package de.hs_mannheim.informatik.games.kniffel.domain; + +public class Spieler { + private String name; + private Gewinnkarte gewinnkarte; + + public Spieler(String name) { + this.name = name; + this.gewinnkarte = new Gewinnkarte(); + } + + public String getName() { + return name; + } + + public Gewinnkarte getGewinnkarte() { + return gewinnkarte; + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfel.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfel.java index c9a9b15..faa7d97 100644 --- a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfel.java +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfel.java @@ -2,6 +2,7 @@ package de.hs_mannheim.informatik.games.kniffel.domain; public class Würfel { private final int SEITEN; + private int augen; public Würfel() { this(6); @@ -12,8 +13,13 @@ public class Würfel { } public int würfle() { - //return 1 + (int)(Math.random() * SEITEN); - return 3; + augen = 1 + (int)(Math.random() * SEITEN); + + return augen; + } + + public int getAugen() { + return augen; } } diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfelbecher.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfelbecher.java new file mode 100644 index 0000000..516aa66 --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/domain/Würfelbecher.java @@ -0,0 +1,21 @@ +package de.hs_mannheim.informatik.games.kniffel.domain; + +public class Würfelbecher { + private final int WÜRFELANZAHL = 5; + private Würfel[] würfel; + + public Würfelbecher() { + würfel = new Würfel[5]; + + for (int i = 0; i < WÜRFELANZAHL; i++) { + würfel[i] = new Würfel(); + } + } + + public void würfle() { + for (int i = 0; i < WÜRFELANZAHL; i++) { + würfel[i].würfle(); + } + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/facade/KniffelApi.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/facade/KniffelApi.java index 7c880e2..3453647 100644 --- a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/facade/KniffelApi.java +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/facade/KniffelApi.java @@ -1,12 +1,21 @@ package de.hs_mannheim.informatik.games.kniffel.facade; -import de.hs_mannheim.informatik.games.kniffel.domain.Würfel; +import java.util.ArrayList; + +import de.hs_mannheim.informatik.games.kniffel.domain.Gewinnkarte; +import de.hs_mannheim.informatik.games.kniffel.domain.Spiel; public class KniffelApi { - Würfel w = new Würfel(); + private Spiel spiel; - public int würfle() { - return w.würfle(); + public void starteSpiel(ArrayList spielernamen, boolean starWarsModus) { + + // TODO: StarWars über Vererbung einbauen? + spiel = new Spiel(spielernamen); + } + + public Gewinnkarte getGewinnkarte() { + return spiel.getGewinnkarteAktuellerSpieler(); } } diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielStart.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielStart.java new file mode 100644 index 0000000..7e70c92 --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielStart.java @@ -0,0 +1,48 @@ +package de.hs_mannheim.informatik.games.kniffel.tui; + +import java.util.ArrayList; +import java.util.Scanner; + +import de.hs_mannheim.informatik.games.kniffel.facade.KniffelApi; + +public class SpielStart { + private Scanner kb; + private KniffelApi api; + + public SpielStart(Scanner kb, KniffelApi api) { + this.kb = kb; + this.api = api; + } + + public void verarbeiteEingabe() { + ArrayList spielernamen = new ArrayList<>(); + + System.out.println("Bitte Spielernamen (max. 6, leere Eingabe für Abbruch) eingeben:"); + System.out.println(); + + for (int i = 1; i <= 6; i++) { + System.out.print("Spieler " + i + ": "); + String name = kb.nextLine(); + + if (name.isEmpty()) + break; + + spielernamen.add(name); + } + + if (spielernamen.size() == 0) { + System.out.println("Keine Spieler eingegeben, zurück zum Hauptmenü."); + return; + } + + System.out.println(spielernamen.size() + " Mitspieler eingeben."); + System.out.print("Möchten Sie den StarWars-Modus spielen? (j/n): "); + + String sw = kb.nextLine(); + + api.starteSpiel(spielernamen, sw.toLowerCase().equals("j")); + + new SpielrundeSpielen(kb, api).verarbeiteEingabe(); + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielrundeSpielen.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielrundeSpielen.java new file mode 100644 index 0000000..0e86c6d --- /dev/null +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/SpielrundeSpielen.java @@ -0,0 +1,21 @@ +package de.hs_mannheim.informatik.games.kniffel.tui; + +import java.util.Scanner; + +import de.hs_mannheim.informatik.games.kniffel.facade.KniffelApi; + +public class SpielrundeSpielen { + private Scanner kb; + private KniffelApi api; + + public SpielrundeSpielen(Scanner kb, KniffelApi api) { + this.kb = kb; + this.api = api; + } + + public void verarbeiteEingabe() { + System.out.println("Gewinnkarte"); + System.out.println(api.getGewinnkarte().toString()); + } + +} diff --git a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/TuiMain.java b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/TuiMain.java index 0b539c3..87206c7 100644 --- a/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/TuiMain.java +++ b/MyKniffel/src/de/hs_mannheim/informatik/games/kniffel/tui/TuiMain.java @@ -25,13 +25,13 @@ public class TuiMain { do { System.out.println(); System.out.println("Auswahlmöglichkeiten (Zifferneingabe):"); - System.out.println("1 -> Würfeln"); - System.out.println("9 -> Spiel beenden."); + System.out.println("1 -> Spiel starten"); + System.out.println("9 -> Spiel beenden"); System.out.println(); System.out.print("Eingabe > "); switch (kb.nextLine()) { - case "1" -> System.out.println("Gewürfelt: " + api.würfle()); + case "1" -> new SpielStart(kb, api).verarbeiteEingabe(); case "9" -> { break mainLoop; } default -> System.out.println("Eingabe nicht erkannt, bitte wiederholen."); }