diff --git a/PGTL-Programs.iml b/PGTL-Programs.iml
new file mode 100644
index 0000000..d5c0743
--- /dev/null
+++ b/PGTL-Programs.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class
new file mode 100644
index 0000000..f5c1431
Binary files /dev/null and b/out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class differ
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program1/Program.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program1/Program.class
new file mode 100644
index 0000000..c3a0fd4
Binary files /dev/null and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program1/Program.class differ
diff --git a/out/production/PGTL-Programs/ninja/brunner/pgtl/program2/Program.class b/out/production/PGTL-Programs/ninja/brunner/pgtl/program2/Program.class
new file mode 100644
index 0000000..5df919a
Binary files /dev/null and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program2/Program.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
new file mode 100644
index 0000000..f88d5e9
Binary files /dev/null and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.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
new file mode 100644
index 0000000..e1c7b36
Binary files /dev/null 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
new file mode 100644
index 0000000..250b8d1
Binary files /dev/null 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
new file mode 100644
index 0000000..9f50b1c
Binary files /dev/null and b/out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class differ
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();
+ }
+}