diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 17b2ed9..7e21120 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,21 +2,31 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -36,27 +46,33 @@ - - - + + + - - - - - + + + - - + + - - - - - + + + + + + + + + + + + + @@ -85,21 +101,22 @@ @@ -111,10 +128,9 @@ - @@ -141,7 +157,6 @@ - @@ -161,24 +176,6 @@ + - + + + + + + + - + + - - + + + @@ -498,22 +510,22 @@ - - + + - + - + - + - + @@ -548,12 +560,34 @@ + + + + + + + + - - - + + + + + + + + + + + + + + + + + @@ -561,9 +595,15 @@ - - - + + + + + + + + + @@ -581,97 +621,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + - + - - - - - - - - - - + + - + + + + + + + + + @@ -680,33 +662,67 @@ + + + + + + + + - - - - - + + + - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class deleted file mode 100644 index f5c1431..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class and /dev/null differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Person.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Person.class index 384ff35..ef2730b 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Person.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Person.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.class index 85640dc..c934cef 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/RennSimulator.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/RennSimulator.class index 0f2422c..0d69c9c 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/RennSimulator.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/RennSimulator.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennen.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennen.class index b010ddc..4bfb58d 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennen.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennen.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class index 3e1f08b..e984337 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class index 37d44cf..376910f 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Wettbüro.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Wettbüro.class index 4ff1ad8..5f24c0f 100644 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Wettbüro.class and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Wettbüro.class differ 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 deleted file mode 100644 index 5af7b40..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.class and /dev/null differ 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 deleted file mode 100644 index bde78f0..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.class and /dev/null differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.class deleted file mode 100644 index b44a875..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.class and /dev/null differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.class deleted file mode 100644 index cb0aed6..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.class and /dev/null differ diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.class deleted file mode 100644 index 9d96625..0000000 Binary files a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.class and /dev/null differ diff --git a/src/ninja/brunner/pgtl/Main.java b/src/ninja/brunner/pgtl/Main.java deleted file mode 100644 index 4304d38..0000000 --- a/src/ninja/brunner/pgtl/Main.java +++ /dev/null @@ -1,10 +0,0 @@ -package ninja.brunner.pgtl; - -import ninja.brunner.pgtl.program3.Program; - -public class Main { - - public static void main(String[] args) throws InterruptedException { - Program.main(args); - } -} diff --git a/src/ninja/brunner/pgtl/program3/Person.java b/src/ninja/brunner/pgtl/program3/Person.java index 8d7f365..8877647 100644 --- a/src/ninja/brunner/pgtl/program3/Person.java +++ b/src/ninja/brunner/pgtl/program3/Person.java @@ -15,6 +15,8 @@ public class Person { { ArrayList wetten = new ArrayList(); + //TODO + return wetten; } } diff --git a/src/ninja/brunner/pgtl/program3/Program.java b/src/ninja/brunner/pgtl/program3/Program.java index 98433c4..3874693 100644 --- a/src/ninja/brunner/pgtl/program3/Program.java +++ b/src/ninja/brunner/pgtl/program3/Program.java @@ -1,16 +1,10 @@ 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 { System.out.println("Initialisiere..."); RennSimulator rennSimulator = new RennSimulator(); - Wettbüro büro = new Wettbüro(); try { Rennstrecke rennstrecken[] = { @@ -48,33 +42,35 @@ public class Program { }; 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) + rennSimulator.getWettbüro().registrierePerson("Person 1", 1234), + rennSimulator.getWettbüro().registrierePerson("Person 2", 12345), + rennSimulator.getWettbüro().registrierePerson("Person 3", 123), + rennSimulator.getWettbüro().registrierePerson("Person 4", 4444), + rennSimulator.getWettbüro().registrierePerson("Person 5", 1500), + rennSimulator.getWettbüro().registrierePerson("Person 6", 8123), + rennSimulator.getWettbüro().registrierePerson("Person 7", 1000), + rennSimulator.getWettbü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); + rennSimulator.getWettbüro().wetteAbschließen(personen[0], rennen[0], rennen[0].schnecken[0], 100); + rennSimulator.getWettbüro().wetteAbschließen(personen[1], rennen[0], rennen[0].schnecken[0], 100); + rennSimulator.getWettbüro().wetteAbschließen(personen[2], rennen[0], rennen[0].schnecken[0], 100); + rennSimulator.getWettbüro().wetteAbschließen(personen[3], rennen[0], rennen[0].schnecken[0], 100); } - catch (NameBereitsVergebenException ex) - { - System.out.println("Fehler beim Initialisieren: " + ex.toString()); - return; - } - catch (ZuWenigGeldException ex) + catch (Exception ex) { System.out.println("Fehler beim Initialisieren: " + ex.toString()); return; } - rennSimulator.start(); + System.out.println("Beginne Simulation..."); + + try { + rennSimulator.start(); + } catch (Exception ex) { + System.out.println("Fehler beim Simulieren: " + ex.toString()); + return; + } System.out.println("Simulation beendet."); } diff --git a/src/ninja/brunner/pgtl/program3/RennSimulator.java b/src/ninja/brunner/pgtl/program3/RennSimulator.java index 9437a9c..70dbdd1 100644 --- a/src/ninja/brunner/pgtl/program3/RennSimulator.java +++ b/src/ninja/brunner/pgtl/program3/RennSimulator.java @@ -1,17 +1,24 @@ package ninja.brunner.pgtl.program3; -import ninja.brunner.pgtl.program3.exceptions.NameBereitsVergebenException; - import java.util.ArrayList; public class RennSimulator { + private Wettbüro wettbüro; + private ArrayList rennstrecken; private ArrayList schnecken; private ArrayList rennen; + private boolean changesAllowed; + public Wettbüro getWettbüro() { + return wettbüro; + } + public RennSimulator() { + wettbüro = new Wettbüro(); + rennstrecken = new ArrayList(); schnecken = new ArrayList(); rennen = new ArrayList(); @@ -19,30 +26,39 @@ public class RennSimulator { changesAllowed = true; } - public Rennstrecke registriereRennstrecke(String name, int length) throws NameBereitsVergebenException { + public Rennstrecke registriereRennstrecke(String name, int length) throws Exception { + if(!changesAllowed) + throw new Exception("Änderungen nicht mehr erlaubt!"); + for(Rennstrecke rennstrecke : rennstrecken) if(rennstrecke.name == name) - throw new NameBereitsVergebenException(); + throw new Exception("Name bereits vergeben!"); Rennstrecke rennstrecke = new Rennstrecke(name, length); rennstrecken.add(rennstrecke); return rennstrecke; } - public Schnecke registriereSchnecke(String name) throws NameBereitsVergebenException { + public Schnecke registriereSchnecke(String name) throws Exception { + if(!changesAllowed) + throw new Exception("Änderungen nicht mehr erlaubt!"); + for(Schnecke schnecke : schnecken) if(schnecke.name == name) - throw new NameBereitsVergebenException(); + throw new Exception("Name bereits vergeben!"); Schnecke schnecke = new Schnecke(name); schnecken.add(schnecke); return schnecke; } - public Rennen registriereRennen(String name, Rennstrecke rennstrecke, Schnecke schnecken[]) throws NameBereitsVergebenException { + public Rennen registriereRennen(String name, Rennstrecke rennstrecke, Schnecke schnecken[]) throws Exception { + if(!changesAllowed) + throw new Exception("Änderungen nicht mehr erlaubt!"); + for(Rennen _rennen : rennen) if(_rennen.name == name) - throw new NameBereitsVergebenException(); + throw new Exception("Name bereits vergeben!"); Rennen _rennen = new Rennen(name, rennstrecke, schnecken); rennen.add(_rennen); @@ -53,7 +69,7 @@ public class RennSimulator { try { rennen.begin(); - //TODO + while(rennen.schritt()); rennen.cleanup(); } @@ -67,6 +83,21 @@ public class RennSimulator { return null; } - public void start() { + public void start() throws Exception { + if(!changesAllowed) + throw new Exception("Simulation bereits gestartet!"); + + changesAllowed = false; + + for(Rennen _rennen : rennen) + { + RennErgebnis rennErgebnis = simuliere(_rennen); + + //TODO: notify wettBüro + } + + rennen.clear(); + + changesAllowed = true; } } diff --git a/src/ninja/brunner/pgtl/program3/Rennen.java b/src/ninja/brunner/pgtl/program3/Rennen.java index 218224c..9441d8c 100644 --- a/src/ninja/brunner/pgtl/program3/Rennen.java +++ b/src/ninja/brunner/pgtl/program3/Rennen.java @@ -1,9 +1,5 @@ package ninja.brunner.pgtl.program3; -import ninja.brunner.pgtl.program3.exceptions.StreckeNichtFreiException; -import ninja.brunner.pgtl.program3.exceptions.SchneckeNichtFreiException; -import ninja.brunner.pgtl.program3.exceptions.RennenNichtAktivException; - public class Rennen { String name; Rennstrecke rennStrecke; @@ -20,28 +16,37 @@ public class Rennen { this.currentlyRenning = false; } - public void begin() throws StreckeNichtFreiException, SchneckeNichtFreiException { - if(rennStrecke.currentRennen != null) - throw new StreckeNichtFreiException(); + public void begin() throws Exception { + System.out.println("Begine Rennen \"" + name + "\""); + if(currentlyRenning) + throw new Exception("Rennen bereits aktiv!"); + rennStrecke.begin(this); for(Schnecke schnecke : schnecken) - if(schnecke.currentRennen != null) - throw new SchneckeNichtFreiException(); - + schnecke.begin(this); currentlyRenning = true; - rennStrecke.currentRennen = this; - for(Schnecke schnecke : schnecken) - schnecke.currentRennen = this; } - public void cleanup() throws RennenNichtAktivException - { + public void cleanup() throws Exception { + System.out.println("Beende Rennen \"" + name + "\""); if(!currentlyRenning) - throw new RennenNichtAktivException(); + throw new Exception("Rennen nicht aktiv!"); - currentlyRenning = false; - rennStrecke.currentRennen = null; + rennStrecke.cleanup(); for(Schnecke schnecke : schnecken) - schnecke.currentRennen = null; + schnecke.cleanup(); + currentlyRenning = false; + } + + public boolean schritt() throws Exception { + if(!currentlyRenning) + throw new Exception("Rennen nicht aktiv!"); + + boolean anySchnecke = false; + + for(Schnecke schnecke : schnecken) + anySchnecke |= schnecke.krabbeln(); + + return anySchnecke; } } diff --git a/src/ninja/brunner/pgtl/program3/Rennstrecke.java b/src/ninja/brunner/pgtl/program3/Rennstrecke.java index 69fb89c..c80fdb9 100644 --- a/src/ninja/brunner/pgtl/program3/Rennstrecke.java +++ b/src/ninja/brunner/pgtl/program3/Rennstrecke.java @@ -13,4 +13,22 @@ public class Rennstrecke { currentRennen = null; } + + public void begin(Rennen rennen) throws Exception { + if(currentRennen != null) + throw new Exception("Bereits in einem Rennen!"); + + System.out.println("Bereite Rennstrecke \"" + name + "\" vor auf Rennen \"" + rennen.name + "\""); + + currentRennen = rennen; + } + + public void cleanup() throws Exception { + if(currentRennen == null) + throw new Exception("In keinem Rennen in Verwendung!"); + + System.out.println("Räume Rennstrecke \"" + name + "\" auf"); + + currentRennen = null; + } } diff --git a/src/ninja/brunner/pgtl/program3/Schnecke.java b/src/ninja/brunner/pgtl/program3/Schnecke.java index dc1f324..e50db8a 100644 --- a/src/ninja/brunner/pgtl/program3/Schnecke.java +++ b/src/ninja/brunner/pgtl/program3/Schnecke.java @@ -15,4 +15,39 @@ public class Schnecke { currentRennen = null; position = null; } + + public void begin(Rennen rennen) throws Exception { + if(currentRennen != null) + throw new Exception("Bereits in einem Rennen!"); + + System.out.println("Bereite Schnecke \"" + name + "\" vor auf Rennen \"" + rennen.name + "\""); + + this.currentRennen = rennen; + this.position = 0; + } + + public void cleanup() throws Exception { + if(currentRennen == null) + throw new Exception("Gerade in keinem Rennen!"); + + System.out.println("Räume Schnecke \"" + name + "\" auf"); + + this.currentRennen = null; + this.position = null; + } + + public boolean krabbeln() throws Exception { + if(currentRennen == null) + throw new Exception("Schnecke gerade nicht in einem Rennen!"); + + if(position < currentRennen.rennStrecke.length) { + position += 1; //TODO: random + if (position > currentRennen.rennStrecke.length) { + position = currentRennen.rennStrecke.length; + return false; + } + return true; + } else + return false; + } } diff --git a/src/ninja/brunner/pgtl/program3/Wettbüro.java b/src/ninja/brunner/pgtl/program3/Wettbüro.java index 44db759..a9d9c26 100644 --- a/src/ninja/brunner/pgtl/program3/Wettbüro.java +++ b/src/ninja/brunner/pgtl/program3/Wettbüro.java @@ -1,7 +1,6 @@ package ninja.brunner.pgtl.program3; import java.util.ArrayList; -import ninja.brunner.pgtl.program3.exceptions.ZuWenigGeldException; public class Wettbüro { public ArrayList personen; @@ -12,11 +11,11 @@ public class Wettbüro { wetten = new ArrayList(); } - public Wette wetteAbschließen(Person person, Rennen rennen, Schnecke schnecke, float einsatz) throws ZuWenigGeldException { + public Wette wetteAbschließen(Person person, Rennen rennen, Schnecke schnecke, float einsatz) throws Exception { if(person.guthaben < einsatz) - throw new ZuWenigGeldException(); + throw new Exception("Zu wenig Geld!"); person.guthaben -= einsatz; diff --git a/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java b/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java deleted file mode 100644 index 851e78a..0000000 --- a/src/ninja/brunner/pgtl/program3/exceptions/NameBereitsVergebenException.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 850edae..0000000 --- a/src/ninja/brunner/pgtl/program3/exceptions/RennenNichtAktivException.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 9094891..0000000 --- a/src/ninja/brunner/pgtl/program3/exceptions/SchneckeNichtFreiException.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index c539972..0000000 --- a/src/ninja/brunner/pgtl/program3/exceptions/StreckeNichtFreiException.java +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 93d8dd0..0000000 --- a/src/ninja/brunner/pgtl/program3/exceptions/ZuWenigGeldException.java +++ /dev/null @@ -1,4 +0,0 @@ -package ninja.brunner.pgtl.program3.exceptions; - -public class ZuWenigGeldException extends Exception { -}