/** * 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!"); } }
/** * startet ein neues Spiel, indem es zunächst einen neuen Spielstand mit den vorher vom Benutzer * gemachten und an den Controller übermittelten Informationen erstellt. Dieser erstellt wiederum * die beiden Spieler. Der fertige Spielstand wird anschließend vom neu erzeugten Spiel geladen. * Bei Bedarf werden anschließend zusätzlich KIs erzeugt, die je einen Spieler erhalten. */ public void neuesSpielStarten() { Spieler spieler1, spieler2; Variante var; // 1. Spieler soll immer schwarz sein spieler1 = new Spieler(Zustand.schwarz, lnkGUI.neuesSpiel_gibSpieler1Name(), SpielerTyp.mensch); spieler2 = new Spieler(Zustand.weiss, lnkGUI.neuesSpiel_gibSpieler2Name(), SpielerTyp.mensch); // Variante erzeugen if (this.lnkGUI.neuesSpiel_gibVariante() == go.gui.NeuesSpiel.SPIELART_STEINSCHLAG) { var = new Steinschlag(); this.lnkGUI.spiel_buttonsFuerSteinschlagKonfigurieren(); } else { var = new Klassisch(); } // Spielstand erzeugen this.lnkSpielstand = new Spielstand(spieler1, spieler2, var, lnkGUI.neuesSpiel_gibGroesse()); // Spiel erzeugen this.lnkSpiel = new Spiel(var, lnkSpielstand, var.initialisiereSpielbrett(lnkGUI.neuesSpiel_gibGroesse())); // KI erzeugen switch (lnkGUI.neuesSpiel_gibKI()) { case leicht: if (lnkGUI.neuesSpiel_gibKIFarbe() == Zustand.schwarz) { spieler1.setzeTyp(SpielerTyp.leicht); lnkKIHaupt = new KI( spieler1, new Leicht(lnkGUI.neuesSpiel_gibKIFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } else { spieler2.setzeTyp(SpielerTyp.leicht); lnkKIHaupt = new KI( spieler2, new Leicht(lnkGUI.neuesSpiel_gibKIFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } break; case schwer: if (lnkGUI.neuesSpiel_gibKIFarbe() == Zustand.schwarz) { spieler1.setzeTyp(SpielerTyp.schwer); lnkKIHaupt = new KI( spieler1, new Schwer(lnkGUI.neuesSpiel_gibKIFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } else { spieler2.setzeTyp(SpielerTyp.schwer); lnkKIHaupt = new KI( spieler2, new Schwer(lnkGUI.neuesSpiel_gibKIFarbe(), new KIVariante(var)), this.lnkSpiel.gibSpielbrett()); } break; } // 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.update(lnkSpielstand, lnkSpielstand.gibAktuellenSpieler()); }