From 0ad31dcca37df9891ed5d5b70f12a966fc821c6d Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 3 Dec 2015 04:34:54 +0000 Subject: EiP - 07 --- ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java | 79 ++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java (limited to 'ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java') diff --git a/ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java b/ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java new file mode 100644 index 0000000..98bca6e --- /dev/null +++ b/ws2015/eip/blaetter/07/de/lmu/tcs/Spieler.java @@ -0,0 +1,79 @@ +package de.lmu.tcs; + +import java.util.ArrayList; + +/** + * Controller + * + * Created by jost on 24.11.15. + */ +public class Spieler { + + private final Spielfeld spiel; + private final Ansicht ansicht; + + public Spieler() { + this.spiel = new Spielfeld(Param.SPIEL_BREITE,Param.SPIEL_HÖHE); + this.ansicht = new Ansicht( Param.SPIEL_BREITE,Param.SPIEL_HÖHE,Param.SKALIERUNG); + ansicht.zeichneSpielfeld(spiel.getFeld()); + ansicht.setText("Außerhalb Spielfeld klicken zum Beenden"); + + // Benutzer setzt Anfangspostionen + boolean nichtzuende = true; + do { + Position p = ansicht.getClick(); + Zelle zelle = new Zelle(p, Zelle.LEBENDIG); + nichtzuende = spiel.setZelle(zelle); + if (nichtzuende) { + ansicht.zeichenZelle(zelle); + } + } while (nichtzuende); + } + + public void spielDurchführen() { + for (int runde=0; runde < Param.RUNDENZAHL; runde++){ + this.rundeDurchführen(); + ansicht.setText("Runde "+runde); + ansicht.sleep(Param.RUNDENZEIT); + } + } + + + public void rundeDurchführen() { + ArrayList änderungen = new ArrayList(); + // Änderungen anhand altem Zustand feststellen + for (Zelle zelle : spiel.getZellen()) { +// ArrayList nachbarn = spiel.getNachbarn(zelle); + Zelle[] nachbarn = spiel.getNachbarnAryWrapped(zelle); + int lebendigeNachbarn = 0; + for (Zelle nachbar : nachbarn) { + if (nachbar.istLebendig()) lebendigeNachbarn++; + } + // if (zelle.istLebendig()) { + // if (lebendigeNachbarn <= 1 || lebendigeNachbarn >=4) { + // Zelle neu = new Zelle(zelle.getPosition(),Zelle.TOT); + // änderungen.add(neu); + // } + // } else { // eventuell zu einem if umbauen, welches Zustand ins Gegenteil verkehrt + // if (lebendigeNachbarn == 3) { + // Zelle neu = new Zelle(zelle.getPosition(),Zelle.LEBENDIG); + // änderungen.add(neu); + // } + // } + Zelle neu; + if (zelle.istLebendig() && lebendigeNachbarn % 2 == 0) + neu = new Zelle(zelle.getPosition(),Zelle.TOT); + else if (! zelle.istLebendig() && lebendigeNachbarn % 2 == 1) + neu = new Zelle(zelle.getPosition(),Zelle.LEBENDIG); + else + neu = zelle.nachkommen(); + änderungen.add(neu); + } + // Erkannte Änderungen nun einpflegen + for (Zelle zelle : änderungen) { + spiel.setZelle(zelle); + ansicht.zeichenZelle(zelle); + } + } + +} -- cgit v1.2.3