1<_S*3#X|
zz@jD2vXy~#BLf2i6N4~F4Fekk0|O@m3j-GeCj&PF9|I4AFas}xBm*CV2m=Fy3B)7@
kQ3f#v5Rd}9gb}Qhi-DVg3Cseyh8fHPxd-H4aj*>%0N0GF;s5{u
literal 0
HcmV?d00001
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.class
new file mode 100644
index 0000000000000000000000000000000000000000..5af7b40e1b559ab0e75bfffce9b32afc1b4422dc
GIT binary patch
literal 390
zcmX^0Z`VEs1_omW0WJn+23~dsK6VCvMg}&U%)HDJJ4Oa(4b3n{1{UZ1lvG9rexJ;|
zRKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*f#Clb4y7m8hRoRGOEUTBKi)
zUXr6Ss6GPxEL51
K7#X<1s(1i^j%R5A
literal 0
HcmV?d00001
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.class
new file mode 100644
index 0000000000000000000000000000000000000000..bde78f0249028b5c91a2c6b73ea7796deab9b2f7
GIT binary patch
literal 381
zcmX^0Z`VEs1_omW0WJn+23~dsK6VCvMg}&U%)HDJJ4Oa(4b3n{1{UZ1lvG9rexJ;|
zRKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*f#6lb4y7m8hRoRGOEUTBKi)
zUXr6
Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*f#Elb4y7m8hRoRGOEUTBKi)
zUXr6
Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*f#6lb4y7m8hRoRGOEUTBKi)
zUXr6
Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*bHtlb4y7m8hRoRGOEUTBKi)
zUXr6
!R6SZb!;0n$!ElN&x%LG{@
ziA|ASR$^Hq4+9GWDTn*M~cSL6L!pftdjW7#SErwlFX getZugeröhrigeWetten()
+ {
+ ArrayList wetten = new ArrayList();
+
+ return wetten;
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Program.java b/src/ninja/brunner/pgtl/program3/Program.java
index 5c2571b..98433c4 100644
--- a/src/ninja/brunner/pgtl/program3/Program.java
+++ b/src/ninja/brunner/pgtl/program3/Program.java
@@ -1,10 +1,81 @@
package ninja.brunner.pgtl.program3;
+import ninja.brunner.pgtl.program3.exceptions.NameBereitsVergebenException;
+import ninja.brunner.pgtl.program3.exceptions.ZuWenigGeldException;
+
+import java.util.ArrayList;
+
public class Program {
public static void main(String[] args) throws InterruptedException {
- Rennen rennen = new Rennen();
- rennen.run();
+ System.out.println("Initialisiere...");
- System.out.println("Rennen beendet!");
+ RennSimulator rennSimulator = new RennSimulator();
+ Wettbüro büro = new Wettbüro();
+
+ try {
+ Rennstrecke rennstrecken[] = {
+ rennSimulator.registriereRennstrecke("Kurze Strecke", 75),
+ rennSimulator.registriereRennstrecke("Mittlere Strecke", 100),
+ rennSimulator.registriereRennstrecke("Lange Strecke", 125),
+ rennSimulator.registriereRennstrecke("Extra lange Strecke", 150)
+ };
+
+ Schnecke schnecken[] = {
+ rennSimulator.registriereSchnecke("Schnecke 1"),
+ rennSimulator.registriereSchnecke("Schnecke 2"),
+ rennSimulator.registriereSchnecke("Schnecke 3"),
+ rennSimulator.registriereSchnecke("Schnecke 4"),
+ rennSimulator.registriereSchnecke("Schnecke 5"),
+ rennSimulator.registriereSchnecke("Schnecke 6"),
+ rennSimulator.registriereSchnecke("Schnecke 7"),
+ rennSimulator.registriereSchnecke("Schnecke 8"),
+ rennSimulator.registriereSchnecke("Schnecke 9"),
+ rennSimulator.registriereSchnecke("Schnecke 10"),
+ rennSimulator.registriereSchnecke("Schnecke 11"),
+ rennSimulator.registriereSchnecke("Schnecke 12"),
+ rennSimulator.registriereSchnecke("Schnecke 13"),
+ rennSimulator.registriereSchnecke("Schnecke 14"),
+ rennSimulator.registriereSchnecke("Schnecke 15"),
+ rennSimulator.registriereSchnecke("Schnecke 16"),
+ rennSimulator.registriereSchnecke("Schnecke 17")
+ };
+
+ Rennen rennen[] = {
+ rennSimulator.registriereRennen("Rennen 1", rennstrecken[0], new Schnecke[] { schnecken[0], schnecken[1], schnecken[3] }),
+ rennSimulator.registriereRennen("Rennen 2", rennstrecken[0], new Schnecke[] { schnecken[2], schnecken[3], schnecken[4] }),
+ rennSimulator.registriereRennen("Rennen 3", rennstrecken[1], new Schnecke[] { schnecken[2], schnecken[3], schnecken[4] }),
+ rennSimulator.registriereRennen("Rennen 4", rennstrecken[1], new Schnecke[] { schnecken[4], schnecken[5], schnecken[6] })
+ };
+
+ Person personen[] = {
+ büro.registrierePerson("Person 1", 1234),
+ büro.registrierePerson("Person 2", 12345),
+ büro.registrierePerson("Person 3", 123),
+ büro.registrierePerson("Person 4", 4444),
+ büro.registrierePerson("Person 5", 1500),
+ büro.registrierePerson("Person 6", 8123),
+ büro.registrierePerson("Person 7", 1000),
+ büro.registrierePerson("Person 8", 5555)
+ };
+
+ büro.wetteAbschließen(personen[0], rennen[0], rennen[0].schnecken[0], 100);
+ büro.wetteAbschließen(personen[0], rennen[0], rennen[0].schnecken[0], 100);
+ büro.wetteAbschließen(personen[0], rennen[0], rennen[0].schnecken[0], 100);
+ büro.wetteAbschließen(personen[0], rennen[0], rennen[0].schnecken[0], 100);
+ }
+ catch (NameBereitsVergebenException ex)
+ {
+ System.out.println("Fehler beim Initialisieren: " + ex.toString());
+ return;
+ }
+ catch (ZuWenigGeldException ex)
+ {
+ System.out.println("Fehler beim Initialisieren: " + ex.toString());
+ return;
+ }
+
+ rennSimulator.start();
+
+ System.out.println("Simulation beendet.");
}
}
diff --git a/src/ninja/brunner/pgtl/program3/RennErgebnis.java b/src/ninja/brunner/pgtl/program3/RennErgebnis.java
new file mode 100644
index 0000000..6e837c3
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/RennErgebnis.java
@@ -0,0 +1,11 @@
+package ninja.brunner.pgtl.program3;
+
+public class RennErgebnis {
+ Rennen rennen;
+ Schnecke gewinner[];
+
+ public RennErgebnis(Rennen rennen, Schnecke[] gewinner) {
+ this.rennen = rennen;
+ this.gewinner = gewinner;
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/RennSimulator.java b/src/ninja/brunner/pgtl/program3/RennSimulator.java
new file mode 100644
index 0000000..9437a9c
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/RennSimulator.java
@@ -0,0 +1,72 @@
+package ninja.brunner.pgtl.program3;
+
+import ninja.brunner.pgtl.program3.exceptions.NameBereitsVergebenException;
+
+import java.util.ArrayList;
+
+public class RennSimulator {
+ private ArrayList rennstrecken;
+ private ArrayList schnecken;
+ private ArrayList rennen;
+ private boolean changesAllowed;
+
+ public RennSimulator()
+ {
+ rennstrecken = new ArrayList();
+ schnecken = new ArrayList();
+ rennen = new ArrayList();
+
+ changesAllowed = true;
+ }
+
+ public Rennstrecke registriereRennstrecke(String name, int length) throws NameBereitsVergebenException {
+ for(Rennstrecke rennstrecke : rennstrecken)
+ if(rennstrecke.name == name)
+ throw new NameBereitsVergebenException();
+
+ Rennstrecke rennstrecke = new Rennstrecke(name, length);
+ rennstrecken.add(rennstrecke);
+ return rennstrecke;
+ }
+
+ public Schnecke registriereSchnecke(String name) throws NameBereitsVergebenException {
+ for(Schnecke schnecke : schnecken)
+ if(schnecke.name == name)
+ throw new NameBereitsVergebenException();
+
+ Schnecke schnecke = new Schnecke(name);
+ schnecken.add(schnecke);
+ return schnecke;
+ }
+
+ public Rennen registriereRennen(String name, Rennstrecke rennstrecke, Schnecke schnecken[]) throws NameBereitsVergebenException {
+ for(Rennen _rennen : rennen)
+ if(_rennen.name == name)
+ throw new NameBereitsVergebenException();
+
+ Rennen _rennen = new Rennen(name, rennstrecke, schnecken);
+ rennen.add(_rennen);
+ return _rennen;
+ }
+
+ public RennErgebnis simuliere(Rennen rennen) {
+ try {
+ rennen.begin();
+
+ //TODO
+
+ rennen.cleanup();
+ }
+ catch (Exception ex) {
+ System.out.println("Unbehandelte Ausnahme in Rennen: " + ex.toString());
+ return null;
+ }
+
+ //TODO
+
+ return null;
+ }
+
+ public void start() {
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Rennen.java b/src/ninja/brunner/pgtl/program3/Rennen.java
index 0d9f40e..218224c 100644
--- a/src/ninja/brunner/pgtl/program3/Rennen.java
+++ b/src/ninja/brunner/pgtl/program3/Rennen.java
@@ -1,34 +1,47 @@
package ninja.brunner.pgtl.program3;
-import java.util.Random;
+import ninja.brunner.pgtl.program3.exceptions.StreckeNichtFreiException;
+import ninja.brunner.pgtl.program3.exceptions.SchneckeNichtFreiException;
+import ninja.brunner.pgtl.program3.exceptions.RennenNichtAktivException;
public class Rennen {
- public Random random;
- public Rennstrecke rennStrecke;
+ String name;
+ Rennstrecke rennStrecke;
+ Schnecke schnecken[];
- public Rennen()
+ boolean currentlyRenning;
+
+ public Rennen(String name, Rennstrecke rennStrecke, Schnecke schnecken[])
{
- random = new Random();
- rennStrecke = new Rennstrecke(this, random.nextInt(50) + 25, random.nextInt(10) + 15);
+ this.name = name;
+ this.rennStrecke = rennStrecke;
+ this.schnecken = schnecken;
+
+ this.currentlyRenning = false;
}
- public void run() throws InterruptedException {
- while(true) {
- rennStrecke.kriechen();
+ public void begin() throws StreckeNichtFreiException, SchneckeNichtFreiException {
+ if(rennStrecke.currentRennen != null)
+ throw new StreckeNichtFreiException();
- System.out.println(rennStrecke.toString());
+ for(Schnecke schnecke : schnecken)
+ if(schnecke.currentRennen != null)
+ throw new SchneckeNichtFreiException();
- boolean anySchneckeUnterwegs = false;
- for(Schnecke schnecke : rennStrecke.schnecken)
- if(schnecke.position < rennStrecke.length) {
- anySchneckeUnterwegs = true;
- break;
- }
+ currentlyRenning = true;
+ rennStrecke.currentRennen = this;
+ for(Schnecke schnecke : schnecken)
+ schnecke.currentRennen = this;
+ }
- if(!anySchneckeUnterwegs)
- break;
+ public void cleanup() throws RennenNichtAktivException
+ {
+ if(!currentlyRenning)
+ throw new RennenNichtAktivException();
- Thread.sleep(1000);
- }
+ currentlyRenning = false;
+ rennStrecke.currentRennen = null;
+ for(Schnecke schnecke : schnecken)
+ schnecke.currentRennen = null;
}
}
diff --git a/src/ninja/brunner/pgtl/program3/Rennstrecke.java b/src/ninja/brunner/pgtl/program3/Rennstrecke.java
index fc0ba7e..69fb89c 100644
--- a/src/ninja/brunner/pgtl/program3/Rennstrecke.java
+++ b/src/ninja/brunner/pgtl/program3/Rennstrecke.java
@@ -1,57 +1,16 @@
package ninja.brunner.pgtl.program3;
-import java.util.ArrayList;
-import java.util.Random;
-import java.util.logging.ConsoleHandler;
-
public class Rennstrecke {
- public Rennen rennen;
+ public String name;
public int length;
- public ArrayList schnecken;
- public int maxNameLength;
- private String[] names = {
- "Namgung",
- "Hwangbo",
- "Jegal",
- "Sagong",
- "Seonu",
- "Seomun",
- "Dokgo",
- "Dongbang"
- };
+ public Rennen currentRennen;
- public Rennstrecke(Rennen rennen, int length, int schneckenCount)
+ public Rennstrecke(String name, int length)
{
- this.rennen = rennen;
+ this.name = name;
this.length = length;
- schnecken = new ArrayList();
- for(int i = 0; i < schneckenCount; i++)
- schnecken.add(new Schnecke(this, names[rennen.random.nextInt(names.length)]));
-
- maxNameLength = 0;
-
- for(Schnecke schnecke : schnecken) {
- if(schnecke.name.length() > maxNameLength)
- maxNameLength = schnecke.name.length();
- }
- }
-
- public void kriechen() {
- for(Schnecke schnecke : schnecken)
- schnecke.kriechen();
- }
-
- public String toString()
- {
- StringBuilder sb = new StringBuilder();
-
- for(Schnecke schnecke : schnecken) {
- sb.append(schnecke.toString());
- sb.append('\n');
- }
-
- return sb.toString();
+ currentRennen = null;
}
}
diff --git a/src/ninja/brunner/pgtl/program3/Schnecke.java b/src/ninja/brunner/pgtl/program3/Schnecke.java
index fb71de2..dc1f324 100644
--- a/src/ninja/brunner/pgtl/program3/Schnecke.java
+++ b/src/ninja/brunner/pgtl/program3/Schnecke.java
@@ -3,46 +3,16 @@ package ninja.brunner.pgtl.program3;
import java.util.Random;
public class Schnecke {
- public static final int minSpeed = 0;
- public static final int maxSpeed = 5;
-
- public Rennstrecke rennstrecke;
public String name;
- public int position;
- public Schnecke(Rennstrecke rennstrecke, String name)
+ public Rennen currentRennen;
+ public Integer position;
+
+ public Schnecke(String name)
{
- this.rennstrecke = rennstrecke;
this.name = name;
- position = 0;
- }
-
- public void kriechen()
- {
- if(position < rennstrecke.length) {
- position += rennstrecke.rennen.random.nextInt(maxSpeed - minSpeed) + minSpeed;
-
- if(position > rennstrecke.length)
- position = rennstrecke.length;
- }
- }
-
- public String toString()
- {
- StringBuilder sb = new StringBuilder();
-
- sb.append(name);
- for(int i = name.length(); i < rennstrecke.maxNameLength; i++)
- sb.append(' ');
- sb.append(": ");
- for(int i = 1; i < position; i++)
- sb.append('.');
- sb.append('M');
- for(int i = position + 1; i < rennstrecke.length; i++)
- sb.append(' ');
- sb.append('#');
-
- return sb.toString();
+ currentRennen = null;
+ position = null;
}
}
diff --git a/src/ninja/brunner/pgtl/program3/Wettbüro.java b/src/ninja/brunner/pgtl/program3/Wettbüro.java
new file mode 100644
index 0000000..44db759
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Wettbüro.java
@@ -0,0 +1,31 @@
+package ninja.brunner.pgtl.program3;
+
+import java.util.ArrayList;
+import ninja.brunner.pgtl.program3.exceptions.ZuWenigGeldException;
+
+public class Wettbüro {
+ public ArrayList personen;
+ public ArrayList wetten;
+
+ public Wettbüro() {
+ personen = new ArrayList();
+ wetten = new ArrayList();
+ }
+
+ public Wette wetteAbschließen(Person person, Rennen rennen, Schnecke schnecke, float einsatz) throws ZuWenigGeldException {
+
+
+ if(person.guthaben < einsatz)
+ throw new ZuWenigGeldException();
+
+ person.guthaben -= einsatz;
+
+ return new Wette(person, rennen, schnecke, einsatz);
+ }
+
+ public Person registrierePerson(String name, float guthaben) {
+ Person person = new Person(name, guthaben);
+ personen.add(person);
+ return person;
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Wette.java b/src/ninja/brunner/pgtl/program3/Wette.java
new file mode 100644
index 0000000..120561b
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Wette.java
@@ -0,0 +1,15 @@
+package ninja.brunner.pgtl.program3;
+
+public class Wette {
+ public Person person;
+ public Rennen rennen;
+ public Schnecke schnecke;
+ public float einsatz;
+
+ public Wette(Person person, Rennen rennen, Schnecke schnecke, float einsatz) {
+ this.person = person;
+ this.rennen = rennen;
+ this.schnecke = schnecke;
+ this.einsatz = einsatz;
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java b/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java
new file mode 100644
index 0000000..851e78a
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java
@@ -0,0 +1,4 @@
+package ninja.brunner.pgtl.program3.exceptions;
+
+public class NameBereitsVergebenException extends Exception {
+}
diff --git a/src/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.java b/src/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.java
new file mode 100644
index 0000000..850edae
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.java
@@ -0,0 +1,4 @@
+package ninja.brunner.pgtl.program3.exceptions;
+
+public class RennenNichtAktivException extends Exception {
+}
diff --git a/src/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.java b/src/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.java
new file mode 100644
index 0000000..9094891
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.java
@@ -0,0 +1,4 @@
+package ninja.brunner.pgtl.program3.exceptions;
+
+public class SchneckeNichtFreiException extends Exception {
+}
diff --git a/src/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.java b/src/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.java
new file mode 100644
index 0000000..c539972
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.java
@@ -0,0 +1,7 @@
+package ninja.brunner.pgtl.program3.exceptions;
+
+/**
+ * Created by Daniel on 13.12.2016.
+ */
+public class StreckeNichtFreiException extends Exception {
+}
diff --git a/src/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.java b/src/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.java
new file mode 100644
index 0000000..93d8dd0
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.java
@@ -0,0 +1,4 @@
+package ninja.brunner.pgtl.program3.exceptions;
+
+public class ZuWenigGeldException extends Exception {
+}