2nW@L~93xd^o
zg2K6|w4fw41s!j124QeJcaUMzCoL3=9lH3@i)`3|tH>4BQO-3_J|R47?1A3=9lB5VIMS
z7?i;-P+^c`U;^9wnt=(dCt7O@1IIQ7&P@zl5El0~1|DV`5PJ&)?=}WLU!9!{{EQ4U
z8I*N)G6*m-9AFUi)7`=#1W_Tph=GH}W;p}f^8dG_XECrXXW$WG5ZS>Xw*3D}kn@-s
zK+ZE`;ALQ75M*Fy5M~fz5M>Z!5MwZ55NB{=kYI3OkYsRY5NGgWkYVs+kYxyDkY@;I
zP+*8+Py~BHi-Co~gh7}=l|hYxnL&|3lR=$9gMo=bjKPsXlR*pY!Dy%lwZTEb#_*Rx
jfsvg-NA(v26WcEa4hCHY1_l-eMg~0wMh1Owpcw!F)Ubyx
literal 0
HcmV?d00001
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class
new file mode 100644
index 0000000000000000000000000000000000000000..250b8d122b6ec59c3cd5433718d39be6d440feeb
GIT binary patch
literal 2335
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
literal 0
HcmV?d00001
diff --git a/src/ninja/brunner/pgtl/Main.java b/src/ninja/brunner/pgtl/Main.java
new file mode 100644
index 0000000..4304d38
--- /dev/null
+++ b/src/ninja/brunner/pgtl/Main.java
@@ -0,0 +1,10 @@
+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/program1/Program.java b/src/ninja/brunner/pgtl/program1/Program.java
new file mode 100644
index 0000000..96edd1b
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program1/Program.java
@@ -0,0 +1,23 @@
+package ninja.brunner.pgtl.program1;
+
+public class Program {
+ public static void main(String[] args) {
+ String[] zahlen = { "0", "1", "2", "3.3", "4", "falsch"};
+
+ double summe = 0.0;
+ for(String zahl : zahlen) {
+ System.out.println(zahl);
+ double parsedAsInteger;
+ try
+ {
+ parsedAsInteger = Double.parseDouble(zahl);
+ }
+ catch (Exception ex)
+ {
+ System.out.println("Zahl kann nicht geparst werden.");
+ }
+ }
+
+ System.out.println("Summe: " + summe);
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program2/Program.java b/src/ninja/brunner/pgtl/program2/Program.java
new file mode 100644
index 0000000..8461dee
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program2/Program.java
@@ -0,0 +1,86 @@
+package ninja.brunner.pgtl.program2;
+
+public class Program {
+ static char[] instructions = {
+ //Program 1: abc
+ 'i', 1, 'a',
+ '#', '+', '#', '+', '#',
+
+ //Program 2: Hello World
+ 'i', 10, 'a', //Initialize RAM with 10 bytes in size filled with character a
+ 'S', 'H', '#', '>', //Set value to H and inc ptr
+ 'S', 'e', '#', '>', //Set value to e and inc ptr
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', '>', //Inc until char l is reached and inc ptr
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', '>', //Inc until char l is reached and inc ptr
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', //Inc until char o is reached and inc ptr
+ '<', '<', '<', '<', '<', '<', '<', '<', '<', '<', '>',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '#', '>',
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', '>',
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', '>',
+ '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '#', '>',
+ '+', '+', '+', '#', '>',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-', '#',
+ 's', //Sleep 1 second
+ 'n',
+ 'j', 11 //Jump to instr offset 8 (Program 2)
+ };
+
+ public static void main(String[] args) throws InterruptedException {
+ char[] memory = null;
+ int currMemIndex = 0;
+ int currInstrIndex = 0;
+
+ hui:
+ while (true) {
+ switch (instructions[currInstrIndex++]) {
+ case 'i':
+ memory = new char[instructions[currInstrIndex]];
+ for (int i = 0; i < memory.length; i++)
+ memory[i] = instructions[currInstrIndex + 1];
+ currInstrIndex += 2;
+ break;
+ case '#':
+ System.out.print(memory[currMemIndex]);
+ break;
+ case 'S': //set memory cell to following byte
+ memory[currMemIndex] = instructions[currInstrIndex];
+ currInstrIndex++;
+ break;
+ case 's':
+ Thread.sleep(1000);
+ break;
+ case 'r':
+ currInstrIndex = 0;
+ currMemIndex = 0;
+ memory = null;
+ break;
+ case 'j':
+ currInstrIndex = instructions[currInstrIndex];
+ break;
+ case 'X':
+ break hui;
+ case '-':
+ memory[currMemIndex]--;
+ break;
+ case '+':
+ memory[currMemIndex]++;
+ break;
+ case '<':
+ if (currMemIndex == 0)
+ currMemIndex = memory.length - 1;
+ else
+ currMemIndex--;
+ break;
+ case '>':
+ if (currMemIndex == memory.length - 1)
+ currMemIndex = 0;
+ else
+ currMemIndex++;
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/ninja/brunner/pgtl/program3/Program.java b/src/ninja/brunner/pgtl/program3/Program.java
new file mode 100644
index 0000000..5c2571b
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Program.java
@@ -0,0 +1,10 @@
+package ninja.brunner.pgtl.program3;
+
+public class Program {
+ public static void main(String[] args) throws InterruptedException {
+ Rennen rennen = new Rennen();
+ rennen.run();
+
+ System.out.println("Rennen beendet!");
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Rennen.java b/src/ninja/brunner/pgtl/program3/Rennen.java
new file mode 100644
index 0000000..0d9f40e
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Rennen.java
@@ -0,0 +1,34 @@
+package ninja.brunner.pgtl.program3;
+
+import java.util.Random;
+
+public class Rennen {
+ public Random random;
+ public Rennstrecke rennStrecke;
+
+ public Rennen()
+ {
+ random = new Random();
+ rennStrecke = new Rennstrecke(this, random.nextInt(50) + 25, random.nextInt(10) + 15);
+ }
+
+ public void run() throws InterruptedException {
+ while(true) {
+ rennStrecke.kriechen();
+
+ System.out.println(rennStrecke.toString());
+
+ boolean anySchneckeUnterwegs = false;
+ for(Schnecke schnecke : rennStrecke.schnecken)
+ if(schnecke.position < rennStrecke.length) {
+ anySchneckeUnterwegs = true;
+ break;
+ }
+
+ if(!anySchneckeUnterwegs)
+ break;
+
+ Thread.sleep(1000);
+ }
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Rennstrecke.java b/src/ninja/brunner/pgtl/program3/Rennstrecke.java
new file mode 100644
index 0000000..fc0ba7e
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Rennstrecke.java
@@ -0,0 +1,57 @@
+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 int length;
+ public ArrayList schnecken;
+ public int maxNameLength;
+
+ private String[] names = {
+ "Namgung",
+ "Hwangbo",
+ "Jegal",
+ "Sagong",
+ "Seonu",
+ "Seomun",
+ "Dokgo",
+ "Dongbang"
+ };
+
+ public Rennstrecke(Rennen rennen, int length, int schneckenCount)
+ {
+ this.rennen = rennen;
+ 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();
+ }
+}
diff --git a/src/ninja/brunner/pgtl/program3/Schnecke.java b/src/ninja/brunner/pgtl/program3/Schnecke.java
new file mode 100644
index 0000000..fb71de2
--- /dev/null
+++ b/src/ninja/brunner/pgtl/program3/Schnecke.java
@@ -0,0 +1,48 @@
+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)
+ {
+ 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();
+ }
+}