Willkommen, liebes Progforum, zu unserem alljaehrlichen Programmier-Contest !
Dieses Jahr haben wir (d.h. Jeez, DFYX und ich) uns etwas ganz Besonderes ausgedacht.
Um allen gerecht zu werden, haben wir uns ueberlegt, dieses Mal sowohl etwas Programmiertechnisches als auch etwas Kuenstlerisches zu machen.
Ziel ist es, einen Interpreter fuer unseren speziellen Turtle-Graphik-Dialekt zu schreiben und damit ein aesthetisch besonders ansprechendes Bild (inklusive des Turtle-Graphik-Codes) zu generieren.
Hierzu bieten sich L-Systeme an, muessen aber nicht verwendet werden.
Wie letzten Endes die Graphiken erzeugt werden, ist jedem selbst ueberlassen. Hauptsache ist, man kann sie am Ende hier im Forum praesentieren. Valide Moeglichkeiten sind so z.B.
C++ Programm mit SDL / OpenGL
Javascript und / oder HTML5
Bashscript, das eine SVG-Datei erzeugt
DCPU16 Assembler, welches eine Portable Pixmap Datei ausgibt
... was euch sonst noch einfaellt
Der Contest besteht aus drei abstimmbaren Teilen.
1. Der Sourcecode des Interpreters - wie elegant und womit setzt ihr den Turtle-Graphik-Interpreter um?
2. Die Aesthetik eueres eingesendeten Beispielbildes
3. Die Art und Weise, wie ihr zum Code eueres Beispielbildes gekommen seid.
Gewinner ist derjenige, der in der Summe aller drei Multiple-Choice-Umfragen die meissten Prozentpunkte erreicht.
Einsendeschluss ist voraussichtlich Sonntag, der 14. April. Anschliessend gibt es zwei Wochen Zeit für die Abstimmung.
Jeder Interpreter gilt als eigenstaendige Einsendung. Es steht allerdings jedem frei, mehrere Einsendungen zu machen oder mehrere Bilder zu seinem Interpreter abzugeben. Es zaehlt dann in allen Kategorien das jeweils beste Ergebnis.
Dieses Mal wird es sogar etwas zu gewinnen geben. Jeez, DFYX und ich haben ein paar Steam-Keys gesponsort (wenn ihr euch anschliessen wollt, weitere Keys sind gerne willkommen), aus denen die Gewinner waehlen koennen.
Der erste Platz darf sich 3 Keys aussuchen, der zweite Platz zwei Keys und der dritte Platz bekommt noch einen Key. Bisher haben wir folgende Keys im Angebot:
Bastion
Cargo! The Quest for Gravity
Cave Story +
2x Crayon Physics Deluxe
2x Cogs
Defcon
2x Dungeon Defenders + DLC
Gemini Rue
Gish
Humble Bundle 3
2x Machinarium
Multivinia
NightSky
Resonance
3x Superbrothers: Sword & Sorcery EP
Swords and Soldiers HD
The Binding of Isaac
Titan Quest (German)
Trine
Warhammer 40,000: Dawn of War
Und damit ihr auch wisst, was euerer Interpreter mindestens koennen muss, hier alle notwendigen Befehle fuer die Turtle-Graphik:
Und nun viel Spass mit unserem Contest.
Aber dass mit dem Stack versteh ich noch nicht so ganz. Heißt das, wenn ich z.B. "[FFF]" eingebe, dass er dann die drei Schritte nochmal ausführt? Kann man dann mit "]" den Stack nochmal ausführen? Also "[FFF]]"?
Ansonsten: Sehr netter Wettbewerb. Ich versuch da auch mal was zu basteln. Ich hoffe, dass Java trotz der ganzen Sicherheitsbedenken erlaubt ist. ^^
Stack ist so zu verstehen, dass bei "]" die Position und Orientierung des "Stifts", sowie $factor, $length und $angle wieder auf die Werte gesetzt werden, die sie beim zugehörigen "[" hatten.
"F/[+F]-F" würde also zum Beispiel ein T zeichnen. (Gibt übrigens ein schönes Fraktal, wenn man rekursiv jedes F außer dem ersten wieder durch diese Zeichenkette ersetzt)
Noch zwei Dinge, die mir grade so aufgefallen sind:
Ihr solltet für euch selbst definieren, was passiert, wenn jemand eine ungültige Operation ausführen will. Also etwa durch 0 teilen oder von einem leeren Stack poppen. Ich für meinen Teil werde solche Befehle schlicht ignorieren und eine Warnmeldung ausgeben. Ähnliche Überlegungen sollte man auch für die Multiplikation mit 0 anstellen, weil sich der Stift anschließend nicht mehr bewegen bzw. nicht mehr rotieren lässt.
Außerdem wird natürlich auch die Farbe auf den Stack gepusht. Das hatte ich vorhin vergessen.