예제 #1
0
파일: Controller.java 프로젝트: lpradel/Go
 /**
  * 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"));
 }
예제 #2
0
파일: Controller.java 프로젝트: lpradel/Go
 /**
  * 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!");
   }
 }
예제 #3
0
파일: Controller.java 프로젝트: lpradel/Go
 /**
  * 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());
 }
예제 #4
0
파일: Controller.java 프로젝트: lpradel/Go
  /**
   * 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));
  }