/** * 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()); }
/** * 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()); }