From 20acf8ef83dd186ba281f465ae2e18bd7662d05e Mon Sep 17 00:00:00 2001 From: Daniel Brunner <0xFEEDC0DE64@gmail.com> Date: Tue, 6 Dec 2016 12:11:37 +0100 Subject: [PATCH] Imported existing sources --- PGTL-Programs.iml | 12 +++ .../ninja/brunner/pgtl/Main.class | Bin 0 -> 511 bytes .../ninja/brunner/pgtl/program1/Program.class | Bin 0 -> 1405 bytes .../ninja/brunner/pgtl/program2/Program.class | Bin 0 -> 2428 bytes .../ninja/brunner/pgtl/program3/Program.class | Bin 0 -> 782 bytes .../ninja/brunner/pgtl/program3/Rennen.class | Bin 0 -> 1620 bytes .../brunner/pgtl/program3/Rennstrecke.class | Bin 0 -> 2335 bytes .../brunner/pgtl/program3/Schnecke.class | Bin 0 -> 1693 bytes src/ninja/brunner/pgtl/Main.java | 10 ++ src/ninja/brunner/pgtl/program1/Program.java | 23 +++++ src/ninja/brunner/pgtl/program2/Program.java | 86 ++++++++++++++++++ src/ninja/brunner/pgtl/program3/Program.java | 10 ++ src/ninja/brunner/pgtl/program3/Rennen.java | 34 +++++++ .../brunner/pgtl/program3/Rennstrecke.java | 57 ++++++++++++ src/ninja/brunner/pgtl/program3/Schnecke.java | 48 ++++++++++ 15 files changed, 280 insertions(+) create mode 100644 PGTL-Programs.iml create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/Main.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program1/Program.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program2/Program.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Program.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennen.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Rennstrecke.class create mode 100644 out/production/PGTL-Programs/ninja/brunner/pgtl/program3/Schnecke.class create mode 100644 src/ninja/brunner/pgtl/Main.java create mode 100644 src/ninja/brunner/pgtl/program1/Program.java create mode 100644 src/ninja/brunner/pgtl/program2/Program.java create mode 100644 src/ninja/brunner/pgtl/program3/Program.java create mode 100644 src/ninja/brunner/pgtl/program3/Rennen.java create mode 100644 src/ninja/brunner/pgtl/program3/Rennstrecke.java create mode 100644 src/ninja/brunner/pgtl/program3/Schnecke.java 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 0000000000000000000000000000000000000000..f5c1431308be8919b3200ae916a6eff02c14f151 GIT binary patch literal 511 zcmX^0Z`VEs1_omWX)Xp91`#d>Q3f$~261)<2}TAso6Nk-5<5l)W)00SMg|t={FGEi z27aH+yi~u^+@#c^ki?{%R7M6NpZw&+oUp{AOb{O`$WoG#S64e4mzAiWR8*Rm zms+G>kY19b@0*yJXU)jKlAD;B$H*Y25$%(eSeB@tlbDyTA6!zDnU`)2wlJ|My_k_f z7>hI`1D9(>a%w?IW`15VJA))616Oc{z+M>$t8>oatI;Mypq(SqSAtr)D*bAj10F0YK!AyX5#$;MMh12U1_pfwMg~R(1_oBG?F@_?85kIt7&sUh7}y|!44e!M z3_MUa7Xvo~0|O_>3k*zP&Bk!eI~bS{nz2rdRu24i*x6AlJb4hAz026GMu3l0WL4hAbu25SZzE(Ti$J1z!$ z1_yQqM-B!jb_QoI20jL34h9zx?Fu5?K!iIxg9kfDkFoCPkwS@PFP}5CWsFeWGTtWEM{a-^~uZ3%SzNw zDk{y(OD)nbNH59JFDS}SFG|cc)DM6#tQi?tauYN27#YMgqJ6Rw%M$f-67$magG-7s z^U|$BmNTVRFfxcD$+=b}rxuiC=I2>6GVm8978R$aI2L>6m87Pp7BMm~x-c@ZR3&EQ zfLw=RAR_}yVo{L_BZDv&+ZY*Ga#HhD7#SEn85x)|RlthViy0Z%K<1_9F*2|gm*(cC zGBWT6mn0@<`z98Ez0A&_#?D~E&fv(%z!jWdT9lmXmI(?S9;hevK+fP{5MvN$WDo$c zk^RWXz-Yk8z-Y+Gz-YwCz-+8%%*eoK!pOjumY7qVoWaiE#lzsu;KR<~%fsNu;Lpww zz{3#85X8tJj4%lvB8&|3QHdEj3fYNyc?x-%$r&XI>8YR~Dp4p;ElNqv(_>^1N9cou zvQuehP6{aK*n>g7vr^z;2xbTY5urQ`VGQAn49Y~rB#PJkld@8iOHhP@D~n4~a~T1EzZ9G{ zxk3I;h4HXzbYWy*ODrfz%}Zfq(8XplhGo#OvSwtE(QwhkBh68g4{;tNgNO#ELTd&^ z1`!5P1`uFkU<9QN21W)61_lOw21W)(1_lOJt?dkq8yOfFm>47(7#P^Vg3Jt33=9lB zU^Xj*G=mHS0|O_6EQ1_GGh;jh3j;R;14Fd{+g=8yNM<4C;7ArBmf%QMA=cnXHX*j) zNOmFi;7AT3j$j`?Pi-p}NtS(PtjuO?qHLn9ix_kySwz{4tk^d(a7waoW8jix-@(9b z$+4V)*NSTs1E&!0HU_R1Hpb=uFK=St+|9rjxt)PuNMIX-pvE=^p=}Jp+ZebuGB7f@ zGx#wCGVm}kgPpDib`mRt3IjWX8UqJ|Jp(6$I|DC+AA=A>AOk-`FoPgNGy?}iB7-PH z6@wVqi!ltG48aT>4Dt*L3|tI;47?1A3`$_VG7QRKlQbDD7*rY57+4te7>pUz88jGJ z84MW=7&I9)7}!8Tz@WvT#=yX!!Vu1&&7j7>$e_j$%Amub#K6R$%fP^3!oc#M!H|KC tok5SCL64c8L64DwB1U}a!rFa$@55da98H{}2T literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5df919a1f0485de4521e40749bccc3b081b652a6 GIT binary patch literal 2428 zcmX^0Z`VEs1_omWb1nu>24zkL4h9uY22}<%E(Uc54ORv)V1B{Hpvj=c&Y;cCpu@<( zlbKgsQdF8;l9``Z%*enL?aau)W|NthSz^b?z^tJe#>l|poS%})$iVNDnV0HUnwykb z6q1;flgh{-HS0DGUEL6?z%!zMWg>V2-@{L-T2RJTl!XL+D*)&n_{hk=KImxqCi zft#H{kB32@!GN8?kcYvD!I+)FgonYD!HkhXnTP;jWDo!u2l2IkQdVkm2_u6XLdY|( zB(Dn?N6(*rA%#6z!B1ITjcQCLoX9!@n zW42}VS7=W1xAf~F!ECz1veJm-q%NZnFnEo$k5S9UP z7cg)z+b(BdYhhws{_ig+5ShV&IE_J-fq_ARfr&wpfrUYdfsH|pp@2byp@Kn^p@~6@ zp_f6EVKRd@!!!mRhM5d{42u}_8J02_GOT4VV%Wf7%&?iklwl`>8N(h13x<6RmJA0N ztQZb4STh`Duw^*SV8?Kd!GYl-gA>C|24{vl46Y1M7~B}1Gk7q(X7FVA%;3%NjlqZE zCxag&BZEI98$%!?Cqob;4?`$8QcW0G8LAm17(^Mw7+642$RN%j0g8S`ZU#vPZU#mM z7Di46DF!hHCI&V}b_Qt%F$QJ^83qOhB?h5?3~cNSvW$$s88ZJca54U35NGA)<>268 z;^N|FEO~+qTlTODF!CR!K4J3lmwGfU{V@P%795(FewK% zO&)BT0$4;5Oe%p%WiY7%CRM?t8kkfElNw-B6HID>No}xcI$+au!6JHKQXfnjfJs9z zX#^&X!K4Y8GzF7pVA32+T7XGQFlhxQt-%e3^h!kXKfKZJf^8^{1Kn4mjG(!YiAXF=aYJ(_ghbZX)1*{-LCxq&PP~8x! z2SW8is6GhQ51}SNsEH725`>xzp{78nsSs)!gqjYaWz<` of(#o4@<7xkfh-WUS%5oqGXoQ-JZ1!!$B;@5R4yrkN;(E50It3Nwg3PC literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f88d5e930ef63f14a6164052a9588b5f90af64c4 GIT binary patch literal 782 zcmX^0Z`VEs1_omWT`mSr25EK%87>AU25Ar>%gG?eAkV>|z{Q}*pv2Cg%+8>~$iQZk znU`5&$H>5}p&7==z~Y>rlFG=y?~|FA>Q|bZlv)&$n3R*s$ROmCpPZNzmROVt;zI>l zN-{Ew85vZ4@-p+X67`dcO7rqki}VZ9OLFuJit^Ko5_66910W1*Mh2GL#LPTK1~H9j zpRB~PME#t^ymbBGlA_GKbZfBXiACwfj10n9q!}65ic<6PQu7!YRPfps1Xg9u$iU@V zk(^pkl9``Z%+8?7$iNkxUs{x$>Xr%e4G+{&dLVc3FmN$&GcqXQ^900L9tJfAZgvKB z9tI5tO-2TOh^RtRYHD6eYKbB{gBA~iHiHf$gEBs|pmsAd2!L#dgo1xkR%&tyBZC}5 z$TP1bwWz4Hpd>W~?iEG`=AzO(6rI79#U-h^j10{Ar6r6EqL7fy%-0Vn%FHVXE-6Y) z%(Z4@5C)rzD$K~hUI0>*lgG#)ssYi68YK*h3>*xc3?RV7zz7N^21W)R1_lOw21W)( z1_lOJt?dkq8yOfFm>75&7#P^Vg3Jtj3=9lBU^XiQKZ5`R0|O_6AcGJC6IgR70}}%i z0|SHTZU&~v?F`I5+S?ddHZiaYv29~uM;Io=zyh*?frEjKfro*EL4<)5Y_J$aGlMXL i2m=EH2LmsID1#USBZD{t0|N^KBZCA3BZDN^Nm2kNH@1EN literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e1c7b363f60ea6c574e8e5003bd7c272084ec69f GIT binary patch literal 1620 zcmX^0Z`VEs1_on>3@!!<219lRBQ6Fe218B;aRy^{1``m+l#79t!3-o~4q{nwGFUQL zfmqgD3^ok5oD8fCc3ceh3=Z53jtov9!kL}Hg_A*$!4)Lu#>xN&%rCeY+!;LB89dn; zycikSiW2iu@^cv(gnY6R%M$fVOEPoxgTP|ej11gGsd;(9B}J*p*{O^Snm&1%d0C12 zNkyf3d8tME1?eR@`UOS#=|zdT#`;02d3nVUrPhoLY&MyBnI(3N49psuVT=qc&iN^+ zj12rfnR%&xrMXF|MInhvIjJCP^OF;E!V-%zL42qnOG!p%F(ZQtLHknktQi@Yi%Rnt z890iQGx8wrRKu$;7^=>ik%1{wg^@u7$>W|SsYQt;`9;=@3?hknl`y5Dc_pbu<*Dh# zj0}uXj10WNC5g$|zKI23=dv?+Gcs_wRwSnulw{`T6|*z=Ffwoj=a&{Gr@Cc={KyRo zn$$c!Pyq8V$TG+=G6;a!$brqnAju%b$e>PS2=g%bGWdba^52nW@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(); + } +}