summaryrefslogtreecommitdiff
path: root/ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java
diff options
context:
space:
mode:
Diffstat (limited to 'ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java')
-rw-r--r--ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java b/ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java
new file mode 100644
index 0000000..a33a7db
--- /dev/null
+++ b/ws2015/eip/blaetter/07/H7-1C/de/lmu/tcs/Spieler.java
@@ -0,0 +1,81 @@
1package de.lmu.tcs;
2
3import java.util.ArrayList;
4
5/**
6 * Controller
7 *
8 * Created by jost on 24.11.15.
9 */
10public class Spieler {
11
12 private final Spielfeld spiel;
13 private final Ansicht ansicht;
14
15 public Spieler() {
16 this.spiel = new Spielfeld(Param.SPIEL_BREITE,Param.SPIEL_HÖHE);
17 this.ansicht = new Ansicht( Param.SPIEL_BREITE,Param.SPIEL_HÖHE,Param.SKALIERUNG);
18 ansicht.zeichneSpielfeld(spiel.getFeld());
19 ansicht.setText("Außerhalb Spielfeld klicken zum Beenden");
20
21 // Benutzer setzt Anfangspostionen
22 boolean nichtzuende = true;
23 do {
24 Position p = ansicht.getClick();
25 Zelle zelle = new Zelle(p, Zelle.LEBENDIG);
26 nichtzuende = spiel.setZelle(zelle);
27 if (nichtzuende) {
28 ansicht.zeichneZelle(zelle);
29 }
30 } while (nichtzuende);
31 }
32
33 public void spielDurchführen() {
34 for (int runde=0; runde < Param.RUNDENZAHL; runde++){
35 this.rundeDurchführen();
36 ansicht.setText("Runde "+runde);
37 ansicht.sleep(Param.RUNDENZEIT);
38 }
39 }
40
41
42 public void rundeDurchführen() {
43 ArrayList<Zelle> änderungen = new ArrayList<Zelle>();
44 // Änderungen anhand altem Zustand feststellen
45 for (Zelle zelle : spiel.getZellen()) {
46 if (zelle == null)
47 continue;
48 ArrayList<Zelle> nachbarn = spiel.getNachbarn(zelle);
49 // Zelle[] nachbarn = spiel.getNachbarnAryWrapped(zelle);
50 int lebendigeNachbarn = 0;
51 for (Zelle nachbar : nachbarn) {
52 if (nachbar.istLebendig()) lebendigeNachbarn++;
53 }
54 // if (zelle.istLebendig()) {
55 // if (lebendigeNachbarn <= 1 || lebendigeNachbarn >=4) {
56 // Zelle neu = new Zelle(zelle.getPosition(),Zelle.TOT);
57 // änderungen.add(neu);
58 // }
59 // } else { // eventuell zu einem if umbauen, welches Zustand ins Gegenteil verkehrt
60 // if (lebendigeNachbarn == 3) {
61 // Zelle neu = new Zelle(zelle.getPosition(),Zelle.LEBENDIG);
62 // änderungen.add(neu);
63 // }
64 // }
65 Zelle neu;
66 if (zelle.istLebendig() && lebendigeNachbarn % 2 == 0)
67 neu = new Zelle(zelle.getPosition(),Zelle.TOT);
68 else if (! zelle.istLebendig() && lebendigeNachbarn % 2 == 1)
69 neu = new Zelle(zelle.getPosition(),Zelle.LEBENDIG);
70 else
71 neu = zelle.nachkommen();
72 änderungen.add(neu);
73 }
74 // Erkannte Änderungen nun einpflegen
75 for (Zelle zelle : änderungen) {
76 spiel.setZelle(zelle);
77 ansicht.zeichneZelle(zelle);
78 }
79 }
80
81}