Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Smiley Experiment

22. September 2012

Nach dem Einstieg ging es rasch voran und wir rückten zu komplexeren Formen vor. Neu dazu kamen Funktionsparameter, wobei man  Parameter festlegt und die ganze Funktion so beliebig verschieben oder verändern kann anhand der bestimmten Parametern. Bsp. Smiley; Die Koordinaten der Funktion Smiley wird anhand der Parameter  int positionX und int positionY dargestellt. Schwierig war für mich zu verstehen wie man diese Parameter  und die Push/ PopMateinsetzt und wie man sie richtig schreibt mit den benötigten Klammern und semikolon. Allgemein bereitet mir die Schreibweise Mühe. Das Verständnis der abstrakten Verpackungen und Verschachtelung fehlt noch und muss noch dringend vertieft werden. Aufgabe: Verschiedene Smileys zu kreiieren und sie per Tastatur zu wechseln Diese Aufgabe benötigte all unser bereits Gelerntes, denn darin enthalten waren Funktionen, Bedingungen (if/else),(switchcase), zusätzlich kamen keyPress/ keyRelease und save dazu. Obwohl die Smileys nicht besonders kreativ oder anschaulich waren, bin ich stolz darauf. Es war das erste Ergebnis, auf das ich mit Tastatur Einfluss nehmen konnte. Ich hätte noch mehr auf der visuellen Ebene arbeiten können und detailorientierter arbeiten.

int SMILEY_DEFAULT = 1;
int SMILEY_SAD = 2;
int SMILEY_DRUNK = 3;
int SMILEY_ANGRY = 4;
int SMILEY_OLD = 5;
int SMILEY_ASTOUND = 6;
int SMILEY_SLEEPY = 7;
int SMILEY_HORNY = 8;
int SMILEY_PANIC = 9;

int smileyType = SMILEY_DEFAULT;
float rot = 5;

void setup()
{
 size(400, 400); // def. fenstergroesse

smooth(); // aktiviere antialiasing
 strokeWeight(15); // linienbreite
}

void draw()
{
 background(255); // def. hintergrundfarbe

// teste ob der mauszeiger innerhalb des smiley ist
 // if (mouseX > (width * .5 - 90) && mouseX < (width * .5 + 90) &&
 // mouseY > (height * .5 - 90) && mouseY < (height * .5 + 90))
 // // die mouse ist im smiley, smiley mag das nicht
 // smileyType = SMILEY_SAD;
 // else
 // smileyType = SMILEY_DEFAULT;

pushMatrix();
 translate(width * .5, width * .5);
 smiley(smileyType); // funtions aufruf
 popMatrix();
}

// funktion
void smiley(int smileyType)
{
 noFill();
 ellipse(0, 0, 180, 180); // kopf

fill(0);
 if (smileyType == SMILEY_SAD)
 {
 ellipse(0 - 30, 0 - 30, 20, 5); // linkes augen
 ellipse(0 + 30, 0 - 30, 20, 5); // rechtes augen

noFill();
 arc(0, 60, 100, 100, radians(180+20), radians(360-20)); // mund
 }
 else if (smileyType == SMILEY_ANGRY)
 {
 ellipse(0 - 30, 0 - 30, 30, 4); // linkes augen
 ellipse(0 + 30, 0 - 30, 30, 4); // rechte augen

noFill();
 arc(0, 60, 100, 100, radians(180+10), radians(360-10)); // mund

line(-10, -10-30, -50, -40-30);
 line(10, -10-30, 50, -40-30);
 }

else if (smileyType == SMILEY_OLD)
 {
 strokeWeight(15);
 ellipse(0 - 30, 0 - 30, 30, 30); // linkes augen
 ellipse(0 + 30, 0 - 30, 30, 30); // rechtes augen
 noFill();
 ellipse(0, 0, 180, 160);
 line (-50, 40, 50, 50);
 strokeWeight(5);
 arc(-35, 0, 20, 20, radians(20), radians(180));
 arc(35, 0, 20, 20, radians(20), radians(180));
 arc(-35, 10, 20, 5, radians(20), radians(180));
 arc(35, 10, 20, 5, radians(20), radians(180));
 }

else if (smileyType == SMILEY_ASTOUND)
 {
 noFill();
 strokeWeight(20);
 ellipse(0 - 45, 0 - 30, 50, 50); // linkes augen
 ellipse(0 + 45, 0 - 30, 50, 50); // rechtes augen
 fill(0);
 strokeWeight(10);
 ellipse(0, 50, 50, 50);
 }

else if (smileyType == SMILEY_SLEEPY)
 {
 noFill();
 arc(-40, -40, 30, 30, radians(20), radians(180-20));
 arc(40, -40, 30, 30, radians(20), radians(180-20));
 ellipse(0, 30, 10, 10);
 }
 else if (smileyType == SMILEY_HORNY)
 {
 noFill();
 ellipse(0, 0, 180, 180);
 fill(255, 0, 0);
 ellipse(-40, -40, 30, 30);
 ellipse(40, -40, 30, 30);
 noFill();
 ellipse(0, 30, 40, 20);
 fill(180, 0, 0);
 arc(10, 40, 30, 30, radians(50), radians(340));
 }
 else if (smileyType == SMILEY_PANIC)
 {
 pushMatrix();
 translate(200, 200);
 rot = rot + 0.01;
 rotate(rot);
 eyes();
 popMatrix();
 }
 else if (smileyType == SMILEY_DRUNK)
 {
 line(-50, -40, -10, -10);
 line(-50, -10, -10, -40);

line(50, -40, 10, -10);
 line(50, -10, 10, -40);
 line(-50, 20, 50, 20);
 arc(-10, 15, 50, 70, radians(20), radians(180-20)); // mund
 }
 else
 {
 ellipse(0 - 30, 0 - 30, 20, 20); // linkes augen
 ellipse(0 + 30, 0 - 30, 20, 20); // rechtes augen
 noFill();
 arc(0, 0, 100, 100, radians(20), radians(180-20)); // mund
 }
}

void eyes()
{
}

void keyPressed()
{
 if (key == 'a')
 {
 println("a");
 smileyType = SMILEY_ASTOUND;
 }
 else if (key == 's' )
 {
 smileyType =SMILEY_OLD;
 }
 else if (key == 'd')
 {
 smileyType = SMILEY_ANGRY;
 println("d");
 }
 else if (key == 'f')
 {
 smileyType = SMILEY_HORNY;
 println("f");
 }
 else if (key == 'q')
 {
 smileyType = SMILEY_SLEEPY;
 println("q");
 }
 else if (key == 'w')
 {
 smileyType = SMILEY_SAD;
 println("w");
 }
 else if (key == 'e')
 {
 smileyType = SMILEY_DRUNK;
 println("e");
 }
 else if (key == 'x' )
 { save("smiley.tif");
 }
 else
 {smileyType = SMILEY_DEFAULT;
 }

}
void keyReleased()
{
 smileyType = SMILEY_DEFAULT;
}