1. November 2011
Gruppenarbeit: Samuel Stoeklin, Patrick PandolfoAufgabe
Für diese Aufgabe nehmt ihr den Tastaturcontroller aus einer handelsübliche Tastatur und verwendet unterschiedliche EIN/AUS Elemente den Controller anzusteuern. Die resultierenden Eingaben lest ihr mit Processing aus und generiert ein adäquates visuelles Feedback. So sollen Eingabe/Ausgabe Situationen entstehen, welche möglichst intuitiv und/oder emotional überraschend zu bedienen sind.
Tastatur verwenden
Um an den Controller einer Tastatur zu kommen, muss diese geöffnet werden und lediglich die kleine beinhaltete Platine herausgenommen werden. Vorsicht, dass die Kontakte und Kabel nicht zu Schaden kommen.
EIN/AUS Elemente
Die einfachste Art ist es, schon vorgefertigte Schalter und Taster zu verwenden. Dabei sind deren Form und Grösse bereits festgelegt. Manchmal lohnt es sich daher, über eine eigene Lösung zur Erfassung der Eingabe nachzudenken und diese mit einfachen Mitteln selber zu realisieren. Dies erhöht die Flexibilität und auch die Möglichkeiten zur Eingabe enorm.
Wir versuchen einen neuen Pacman-Klon zu realisieren. Der Keyboardkontroller soll zum Joystick umgebaut werden. Nach dem das Keyboard bis zur Platine zerlegt wurde, suchten wir vier Keys zur Steuerung. Es bereitete uns erhebliche Schwierigkeiten danach die ermittelten Pins mit Lizendrähten zu verbinden. Wir rauhten die Verbindungsstellen bis auf das blanke Kupfer auf und verlöteten die Drähte. Danach setzten wir mit der Klebepistole den ultimaten Halt. i => left p => up u => down t => right Gesammte Übersicht CODEimport ddf.minim.*; import ddf.minim.analysis.*; Minim minim; AudioPlayer song; int _width = 500; int _height = 500; int x = 250; int y = 250; int step = 5; float angle = 0; float anglestep = 0.05; float foo = TWO_PI; float upper = 0; float lower = 0.7; void setup() { minim = new Minim(this); song = minim.loadFile("pacman_x.mp3", 2048); size(_width, _height); ellipseMode(CENTER); noStroke(); fill(255,255,0,200); smooth(); } void draw() { background(0); if(angle > lower) { anglestep = -0.04; } else if(angle anglestep = 0.04; } angle = angle + anglestep; arc(x,y,50,50,angle, foo-angle); } void keyPressed() { switch(key) { case 'i': x = x-step; angle = -PI; upper = -PI; lower = -PI+0.7; foo = 0; song.play(); break; case 't': x = x+step; angle = 0; upper = 0; lower = 0.7; foo = TWO_PI; song.play(); break; case 'u': y = y+step; angle = -TWO_PI/2-PI/2; upper = -TWO_PI/2-PI/2; lower = -TWO_PI/2-0.7; foo = -PI; song.play(); break; case 'p': y = y-step; angle = -PI/2; upper = -PI/2; lower = -PI/2+0.7; foo = PI; song.play(); break; } } void keyReleased() { switch(key) { case 'i': case 't': case 'u': case 'p': song.pause(); song.rewind(); break; } } void stop(){ song.close(); minim.stop(); super.stop(); }