Package spiel_logik
Class Spiel
java.lang.Object
spiel_logik.Spiel
public class Spiel
extends java.lang.Object
Die Klasse
Spiel
repräsentiert ein aktuell laufendes Spiel.
Die Klasse Spiel
ist die Hauptklasse im paket spiel_logik
.
Sie kann in den grafischen Implementierung verwendet werden um die Spiellogik
abzubilden.
In ein Spiel werden zu Beginn Fragen in die einfach verkettete Liste
unbeantworteteFragen
geladen. Mit der Methode gibNächsteFrage()
wird eine Frage entnommen, die dann mit der Methode beantworteFrage(int)
beantwortet werden kann. Ist die Frage beantwortet wird sie aus der Liste
unbeantworteteFragen
entfernt und in die Liste
beantworteteFragen
gesetzt.-
Constructor Summary
-
Method Summary
Modifier and Type Method Description boolean
beantworteFrage(int antwortNummer)
Beantworte die aktuelle Frage.void
beende()
Beende ein Spiel.void
erzeugeFrage(java.lang.String fragenText, java.lang.String richtigeAntwort, java.lang.String falscheAntwort1, java.lang.String falscheAntwort2, java.lang.String falscheAntwort3, java.lang.String schwierigkeit)
Erzeuge eine neue Frage anhand von mehreren String-Argumenten und füge diese Frage zufällig ein.void
fügeFragenAlsFeldEin(java.lang.String[][] fragen)
Füge mehrere Fragen zufällig als zweidimensionales Feld ein.Frage
gibAktuelleFrage()
Gib die aktuelle Frage.int
gibAnzahlBeantworterFragen()
Gib die Anzahl der beantworteten Fragen zurück.int
gibAnzahlFragen()
Gib die Anzahl der ins Spiel geladenen Fragen.int
gibAnzahlUnbeantworterFragen()
Gib die Anzahl der noch unbeantworteten Fragen, die ins Spiel geladen wurden zurück.FragenListe
gibBeantworteteFragen()
Gib eine Liste der bereits beantworteten Fragen.java.lang.String
gibDateiPfad()
Gib den Dateipfad der XML-Datei, der das aktuelle Spiel gestartet hat.java.lang.String
gibFormatierteGewinnSumme()
Gib die formatiere Gewinnsumme mit Währungs-Zeichen und Tausenderpunkt und im konfigurierten Zahlenformat.int
gibFragenNummer()
Gib die aktuelle Fragennummer zurück. 1 ist die erste Fragennummer und so weiter.long
gibGewinnSumme()
Gib die aktuelle Gewinnsumme aus.Frage
gibNächsteFrage()
Entnimm eine Frage.java.lang.String
gibThemenBereich()
Gib den Namen des aktuellen Themenbereichs (z.java.lang.String
gibThemenGebiet()
Gib das Thema des aktuellen Themengebiets (z.boolean
istAktuelleFrageBeantwortet()
Zeige an, ob die aktuelle Frage beantwortet (egal ob falsch oder richtig) wurde.boolean
istAntwortRichtig(int antwortNummer)
Überprüfe, ob die Antwort zur aktuellen Frage richtig oder flasch ist.boolean
istBeendet()
Zeige an, ob das Spiel beendet wurde.boolean
istVerloren()
Zeige an, ob das Spiel gewonnen oder verloren wurde.void
ladeThemenGebiet(java.lang.String dateiPfad)
Lade ein Themengebiet ins Spiel.void
setzeThemenBereich(java.lang.String name)
Setze den Namen des aktuellen Themenbereichs (z.void
setzeThemenGebiet(java.lang.String thema)
Setze das Thema des aktuellen Themengebiets (z.
-
Constructor Details
-
Spiel
public Spiel()Dieser Konstruktor startet ein neues Spiel ohne Fragen. Es müssen erst Fragen ins Spiel geladen werden. -
Spiel
public Spiel(java.lang.String dateiPfad)Dieser Konstruktor lädt gleich zum Start des neuen Spiels Fragen.- Parameters:
dateiPfad
- Ein Pfad zu einer Themengebiets-XML-Datei. Relativer Pfad zum Projektverzeichnis, beispielsweise"/FRAGEN/informatik/6_jahrgangsstufe.xml"
.
-
-
Method Details
-
gibAnzahlFragen
public int gibAnzahlFragen()Gib die Anzahl der ins Spiel geladenen Fragen.- Returns:
- Gib die Anzahl der ins Spiel geladenen Fragen.
-
erzeugeFrage
public void erzeugeFrage(java.lang.String fragenText, java.lang.String richtigeAntwort, java.lang.String falscheAntwort1, java.lang.String falscheAntwort2, java.lang.String falscheAntwort3, java.lang.String schwierigkeit)Erzeuge eine neue Frage anhand von mehreren String-Argumenten und füge diese Frage zufällig ein. Die Argumente können direkt aus dem CSVLeser eingelesen werden.- Parameters:
fragenText
- Der Text der Frage (Der eigentliche Fragensatz).richtigeAntwort
- Die richtige Antwort.falscheAntwort1
- Die falsche Antwort Nr. 1.falscheAntwort2
- Die falsche Antwort Nr. 2.falscheAntwort3
- Die falsche Antwort Nr. 3.schwierigkeit
- Die Schwierigkeit (1-5).
-
fügeFragenAlsFeldEin
public void fügeFragenAlsFeldEin(java.lang.String[][] fragen)Füge mehrere Fragen zufällig als zweidimensionales Feld ein. Die Methode wird an die gleichnamige Methode der Klasse Jahrgangsstufe weitergegeben.- Parameters:
fragen
- Mehrere Fragen als zweidimensionales Feld.
-
gibNächsteFrage
Entnimm eine Frage. Diese Methode wird an die KlasseFragenListe
weitergeleitet.- Returns:
- Die nächste Frage
-
istAntwortRichtig
public boolean istAntwortRichtig(int antwortNummer)Überprüfe, ob die Antwort zur aktuellen Frage richtig oder flasch ist.- Parameters:
antwortNummer
- Eine Antwortnummer (0 = A, 1 = B, 2 = C, 3 = D).- Returns:
- Wahr, wenn die Frage richtig beantwortete wurde.
-
gibBeantworteteFragen
Gib eine Liste der bereits beantworteten Fragen. Diese getter-Methode kann beispielsweise dazu verwendet werden, um am Ende des Spiels eine Übersicht über die bisherigen Fragen anzuzeigen.- Returns:
- Eine Liste der bereits beantworteten Fragen.
-
gibAktuelleFrage
Gib die aktuelle Frage.- Returns:
- Die aktuelle Frage.
-
beantworteFrage
public boolean beantworteFrage(int antwortNummer)Beantworte die aktuelle Frage.- Parameters:
antwortNummer
- Eine Antwortnummer (0 = A, 1 = B, 2 = C, 3 = D).- Returns:
- Wahr, wenn die Frage richtig beantwortet wurde.
-
gibFragenNummer
public int gibFragenNummer()Gib die aktuelle Fragennummer zurück. 1 ist die erste Fragennummer und so weiter.- Returns:
- Die Fragennummer. 1 ist die erste Fragennummer.
-
gibAnzahlUnbeantworterFragen
public int gibAnzahlUnbeantworterFragen()Gib die Anzahl der noch unbeantworteten Fragen, die ins Spiel geladen wurden zurück.- Returns:
- Die Anzahl der noch unbeantworteten Fragen.
-
gibAnzahlBeantworterFragen
public int gibAnzahlBeantworterFragen()Gib die Anzahl der beantworteten Fragen zurück.- Returns:
- Die Anzahl der beantworteten Fragen.
-
gibGewinnSumme
public long gibGewinnSumme()Gib die aktuelle Gewinnsumme aus.- Returns:
- Die aktuelle Gewinnsumme.
-
gibFormatierteGewinnSumme
public java.lang.String gibFormatierteGewinnSumme()Gib die formatiere Gewinnsumme mit Währungs-Zeichen und Tausenderpunkt und im konfigurierten Zahlenformat.- Returns:
- Die formatierte Gewinnsumme.
-
istVerloren
public boolean istVerloren()Zeige an, ob das Spiel gewonnen oder verloren wurde.- Returns:
- Wahr, wenn das Spiel verloren wurde.
-
istBeendet
public boolean istBeendet()Zeige an, ob das Spiel beendet wurde. Wenn das Spiel verloren wurde, ist das Spiel immer beendet. Man kann ein Spiel vorzeitig beenden und die Gewinnsumme mitnehmen.- Returns:
- Wahr, wenn das Spiel beendet wurde.
-
istAktuelleFrageBeantwortet
public boolean istAktuelleFrageBeantwortet()Zeige an, ob die aktuelle Frage beantwortet (egal ob falsch oder richtig) wurde. Diese Methode wird gebraucht, um zu überprüfen, ob eine neue Frage angezeigt werden kann.- Returns:
- Wahr, wenn die Frage beantwortete wurde.
-
beende
public void beende()Beende ein Spiel. -
ladeThemenGebiet
public void ladeThemenGebiet(java.lang.String dateiPfad)Lade ein Themengebiet ins Spiel.- Parameters:
dateiPfad
- Ein Pfad zu einer Themengebiets-XML-Datei. Relativer Pfad zum Projektverzeichnis, beispielsweise"/FRAGEN/informatik/6_jahrgangsstufe.xml"
.
-
setzeThemenBereich
public void setzeThemenBereich(java.lang.String name)Setze den Namen des aktuellen Themenbereichs (z. B. Unterrichtsfach „Informatik“)- Parameters:
name
- Der Namen des aktuellen Themenbereichs.
-
gibThemenBereich
public java.lang.String gibThemenBereich()Gib den Namen des aktuellen Themenbereichs (z. B. Unterrichtsfach „Informatik“)- Returns:
- Der Namen des aktuellen Themenbereichs.
-
setzeThemenGebiet
public void setzeThemenGebiet(java.lang.String thema)Setze das Thema des aktuellen Themengebiets (z. B. Jahrgangsstufe („6. Jahrgangsstufe“)).- Parameters:
thema
- Das Thema des aktuellen Themengebiets.
-
gibThemenGebiet
public java.lang.String gibThemenGebiet()Gib das Thema des aktuellen Themengebiets (z. B. Jahrgangsstufe („6. Jahrgangsstufe“)).- Returns:
- Das Thema des aktuellen Themengebiets.
-
gibDateiPfad
public java.lang.String gibDateiPfad()Gib den Dateipfad der XML-Datei, der das aktuelle Spiel gestartet hat. Die getter-Methode kann dazu benutzt werden, das gleiche Spiel nochmal zu starten.- Returns:
- Der Dateipfad der XML-Datei, der das aktuelle Spiel gestartet hat.
-