/** * Verarbeitet den Klick auf den Button "Aufgeben" aus der GUI, wobei dabei der Spieler, welcher * aufgeben geklickt hat, noch ermittelt werden muss. Da der Spieler, welcher aufgeben geklickt * hat, auf jedenfall verloren hat. Wird das Ergebnis des Spiels sofort in die Statistik * eingetragen. */ @SuppressWarnings("static-access") public void aufgegebenGeklickt() { try { this.lnkStatistik = lnkStatistik.gibStatistik(); } catch (StatistikException e) { lnkGUI.zeigeFehlerAn( "Die Statistikdatei ist fehlerhaft, Ihre Statistik wurde zurückgesetzt."); } Spieler spieler1, spieler2; spieler1 = lnkSpielstand.gibSpieler1(); spieler2 = lnkSpielstand.gibSpieler2(); if (spieler1.equals(lnkSpielstand.gibAktuellenSpieler())) { lnkStatistik.aktualisiereEintrag( spieler2, Spielausgang.sieg, this.gibStatistikunterteilung()); lnkStatistik.aktualisiereEintrag( spieler1, Spielausgang.aufgegeben, this.gibStatistikunterteilung()); this.lnkSpielstand.setzeSpielAusgang(Zustand.weiss); } else { lnkStatistik.aktualisiereEintrag( spieler1, Spielausgang.sieg, this.gibStatistikunterteilung()); lnkStatistik.aktualisiereEintrag( spieler2, Spielausgang.aufgegeben, this.gibStatistikunterteilung()); this.lnkSpielstand.setzeSpielAusgang(Zustand.schwarz); } lnkSpiel.setzeEnde(true); lnkGUI.actionPerformed(new java.awt.event.ActionEvent(this, 0, "Spiel_MenueEnde")); }
/** * Verarbeitet den Klick auf den Button "speichern" aus der GUI, indem die GUI diese Methode * aufruft. Der Klick wird durch Delegation an die Spielstandklasse aufgelöst. */ @SuppressWarnings("static-access") public void speichern() { if (lnkSpiel.istSpielZuEnde() == true) { if (this.gibSpielausgang(lnkSpielstand.gibSpieler1()) == Spielausgang.sieg) { lnkSpielstand.setzeSpielAusgang(Zustand.schwarz); } else if (this.gibSpielausgang(lnkSpielstand.gibSpieler1()) == Spielausgang.sieg) { lnkSpielstand.setzeSpielAusgang(Zustand.weiss); } else { lnkSpielstand.setzeSpielAusgang(Zustand.frei); } } lnkSpielstand.setzeKommentar(lnkGUI.speichern_gibKommentar()); lnkSpielstand.setzeTitel( lnkSpielstand.gibSpieler1().gibName() + " vs " + lnkSpielstand.gibSpieler2().gibName()); java.util.Date date = new java.util.Date(); java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); lnkSpielstand.setzeDatum(formatter.format(date)); formatter.applyPattern("yyyy-MM-dd_hh-mm-ss"); try { lnkSpielstand.speichern(this.SPEICHER_ORDNER + formatter.format(date) + ".xml"); this.lnkGUI.speichern_erfolgreich(); } catch (SpeichernException e) { this.lnkGUI.zeigeFehlerAn("Konnte nicht speichern!"); } }
/** * Verarbeitet den Klick auf den Button "laden" aus der GUI, indem die GUI diese Methode aufruft. * Der Klick wird durch Delegation an die Spielklasse aufgelöst. */ public void laden() { this.lnkSpielstand = this.lnkGUI.laden_gibSpielstand(); // Laden des Spielstandes in Spiel this.lnkSpiel = new Spiel(this.lnkSpielstand); Variante var = this.lnkSpielstand.gibVariante(); Spieler spieler1 = this.lnkSpielstand.gibSpieler1(); Spieler spieler2 = this.lnkSpielstand.gibSpieler2(); if (var instanceof Steinschlag) { this.lnkGUI.spiel_buttonsFuerSteinschlagKonfigurieren(); if (this.lnkSpielstand.gibSpieler1().gibTyp() == SpielerTyp.leicht) { this.lnkKIHaupt = new KI( spieler1, new Leicht(lnkSpielstand.gibSpieler1().gibFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } else if (this.lnkSpielstand.gibSpieler1().gibTyp() == SpielerTyp.schwer) { this.lnkKIHaupt = new KI( spieler1, new Schwer(lnkSpielstand.gibSpieler1().gibFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } if (this.lnkSpielstand.gibSpieler2().gibTyp() == SpielerTyp.leicht) { this.lnkKIHaupt = new KI( spieler2, new Leicht(lnkSpielstand.gibSpieler1().gibFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } else if (this.lnkSpielstand.gibSpieler2().gibTyp() == SpielerTyp.schwer) { this.lnkKIHaupt = new KI( spieler2, new Schwer(lnkSpielstand.gibSpieler2().gibFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } } else { // Spieler auf Mensch setzen, da unsere KI kein Klassisch kann. spieler1.setzeTyp(SpielerTyp.mensch); spieler2.setzeTyp(SpielerTyp.mensch); } // Observer setzen this.lnkSpiel.gibSpielbrett().addObserver(lnkGUI); this.lnkSpielstand.addObserver(this); if (this.lnkKIHaupt != null) { this.lnkKIHaupt.addObserver(this); } // Update vom Spielbrett machen, falls Spieler hinzugefügt wurden. this.lnkSpiel.gibSpielbrett().updateUI(); this.kiDarfNichtSetzen = false; this.update(lnkSpielstand, lnkSpielstand.gibAktuellenSpieler()); }
/** * fragt das Spiel nach den erlangten Punkten der einzelnen Spieler und entscheidet wer gewonnen * hat und trägt das Ergebniss in die Statistik ein. Hilfsmethode von Update. */ @SuppressWarnings("static-access") private void aktualisiereStatistik() { try { this.lnkStatistik = lnkStatistik.gibStatistik(); } catch (StatistikException e) { this.lnkGUI.zeigeFehlerAn( "Die Statistikdatei ist fehlerhaft, Ihre Statistik wurde zurückgesetzt."); } this.lnkGUI.setzeSteinNichtSetzbar(true); Spieler spieler1, spieler2; spieler1 = lnkSpielstand.gibSpieler1(); spieler2 = lnkSpielstand.gibSpieler2(); this.lnkStatistik.aktualisiereEintrag( spieler1, this.gibSpielausgang(spieler1), this.gibStatistikunterteilung()); this.lnkStatistik.aktualisiereEintrag( spieler2, this.gibSpielausgang(spieler2), this.gibStatistikunterteilung()); /* if (this.lnkSpiel.gibPunkte(spieler1) > this.lnkSpiel.gibPunkte(spieler2)) { this.lnkStatistik.aktualisiereEintrag(spieler1, Spielausgang.sieg, Statistikunterteilung.Steinschlag); this.lnkStatistik.aktualisiereEintrag(spieler2, Spielausgang.niederlage, Statistikunterteilung.Steinschlag); this.lnkGUI.spiel_setzeNachricht(spieler1.gibName() + " hat gewonnen!"); this.lnkSpielstand.setzeSpielAusgang(Zustand.schwarz); } else if (this.lnkSpiel.gibPunkte(spieler1) < this.lnkSpiel .gibPunkte(spieler2)) { this.lnkStatistik.aktualisiereEintrag(spieler2, Spielausgang.sieg, Statistikunterteilung.Steinschlag); this.lnkStatistik.aktualisiereEintrag(spieler1, Spielausgang.niederlage, Statistikunterteilung.Steinschlag); this.lnkGUI.spiel_setzeNachricht(spieler2.gibName() + " hat gewonnen!"); this.lnkSpielstand.setzeSpielAusgang(Zustand.weiss); } else { this.lnkStatistik.aktualisiereEintrag(spieler2, Spielausgang.unentschieden, Statistikunterteilung.Steinschlag); this.lnkStatistik.aktualisiereEintrag(spieler1, Spielausgang.unentschieden, Statistikunterteilung.Steinschlag); this.lnkGUI.spiel_setzeNachricht("Es steht unentschieden."); this.lnkSpielstand.setzeSpielAusgang(Zustand.frei); } */ try { this.lnkStatistik.speichern(); } catch (Exception e) { this.lnkGUI.zeigeFehlerAn("Die Statistik konnte nicht gespeichert werden"); } this.lnkGUI.actionPerformed(new java.awt.event.ActionEvent(this, 0, "Spiel_Ende")); if (this.lnkSpiel.gibPunkte(spieler1) > this.lnkSpiel.gibPunkte(spieler2)) { this.lnkGUI.spiel_setzeNachricht(spieler1.gibName() + " hat gewonnen!"); } else if (this.lnkSpiel.gibPunkte(spieler1) < this.lnkSpiel.gibPunkte(spieler2)) { this.lnkGUI.spiel_setzeNachricht(spieler2.gibName() + " hat gewonnen!"); } else { this.lnkGUI.spiel_setzeNachricht("Es steht unentschieden."); } this.lnkGUI.spiel_setzePunkteSpieler1(this.lnkSpiel.gibPunkte(spieler1)); this.lnkGUI.spiel_setzePunkteSpieler2(this.lnkSpiel.gibPunkte(spieler2)); }