/* Abschluss-Projekt von Sebastian Graetz und Daniel Kliche: Der Traum vom Fortschritt. Eine gut befahrene Straße Anfang der 30er Jahre. Ein einsamer Wanderer tritt an den Bordstein, und träumt vom Fortschritt... Anweisungen: Starten und Warten bis der Wanderer stehen bleibt. Dann eine beliebige Taste gedrück halten, um die Vision zu sehen. Making-Of: Von dem Vorhaben durch mehrere Epochen zu gehen, haben wir abgesehen, da es unnötig aufwändig und fachfremd (Illustrator en masse...) geworden wäre. Stattdessen haben wir uns daran versucht den kleinen Straßenabschnitt so realistisch wie möglich zu simmulieren, damit man nicht sofort bemerkt, dass eigentlich immer die gleiche Prozedur abläuft. Nachdem die zufällige Bildzuweisung der Autos über eine for-Schleife nicht funktionieren wollte, lassen wir nun mithilfe eines Zufallsgenerators auf jeder Spur unterschiedliche Autos mit unterschiedlichem Tempo fahren. */ PImage Strasse; //Straße im Hintergrund PImage Ecke; //die Straßenecke im Vordergrund PImage[] Auto = new PImage[4]; //die Autos PImage Prophet; //der Wanderer PImage Vision; //die Vision float Lotto; //Variable für den Zufallsgenerator int ProY = 400; //Variable für das Gehen des Wanderers (Y-Achse) int ProX = -250; //s.o. (X-Achse) float AutX = -200; //Variable für das Fahren der Autos (X-Achse) void setup(){ size(800, 500); //Größe des sichtbaren Zeichenbereichs smooth(); //unnötig *g* Strasse = loadImage("strasse.jpg"); //Laden der Bilder for(int i = 0; i<4; i++) { //for-Schleife zum Laden (bei mehr als 4 Autos sinnvoll) String imageName = "Auto0" + i + ".png"; Auto[i] = loadImage(imageName); } Ecke = loadImage("ecke.png"); Prophet = loadImage("prophet.png"); Vision = loadImage("vision.png"); Lotto = random(50); //Der Zufallsgenerator generiert eine Zahl von 0-50 } void draw(){ background(Strasse); if(AutX > 800){ //Zurücksetzen der Autos nach Durchlaufen AutX = -200; Lotto = random(50); //Neuauslösen des Zufallsgenerators } else { //HINTERE Spuren if (Lotto * 2 < 50) { //Autoauswahl durch Abfrage einer Rechenoperation image (Auto[2], width - AutX*1.5, 310); } else image (Auto[3], width - AutX, 310); if (Lotto * 3 > 50) { //MITTLERE Spur image (Auto[1], AutX * 2, 350); } //Verkleinerung der Maße zur Erhaltung des Tiefeneffekts else image (Auto[0], AutX * 2.5, 330, Auto[0].width / 8 * 7, Auto[0].height / 8 * 7); if (Lotto * 2 > 75) { //VORDERE Spur image (Auto[0], AutX * 3, 350); } AutX+= 5; //Gaspedal... } image(Ecke, 0, 0); image (Prophet, ProX, ProY); //WANDERER if (ProY < 250) { //Stehenbleiben ProY = 249; ProX = 135; if (keyPressed) { image (Vision, 250, 50); //Gedankenblase } } else { ProY--; //Ein Fuß vor den anderen... ProX+= 2.5; } }