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.

Bedingungen, mousePressed() & switch()

23. September 2013

Ziel war es, ein einfaches Zeichenprogramm zu erstellen, das eine Auswahl an Farben, sowie eine Löschfunktion bietet. Im Code definierte ich nach dem "void setup()" erstellte ich erst vier verschiedene Variabeln (x,y,z,q) denen ich später die gewünschten Farbwerte zuordnen konnte, sowie eine um alles bisherige zu überschreiben/löschen (d).
void setup()
{
  size(500, 500);
  background(255, 255, 255);
}

int x;
int y;
int z;
int q=255;
int d;
Die Varibel "q" bestimmt den Alphakanal und ist als einzige von Anfang an auf den Wert 255 gesetzt, damit der Strich auch schon sichtbar ist, bevor wir eine bestimmte Farbe ausgewählt haben. Wie ich im Nachhinein herausfand, hätte ich dies wohl auch mit einem "default"-Befehlt innerhalb der "switch()"-Funktion tun können. Anschliessend bestimmte ich mit der Funktion keyPressed() was geschehen sollte, wenn der User eine Taste (irgendeine) drückt. Innerhalb dieser Funktion verwendete ich die Bedingung "switch(key)" um - je nach gedrückter Taste - unterschiedliche Werte für die, zuvor erstellten "Farb-Variabeln" (x,y,z,q) einzusetzen. Die Taste '6' belegte ich mit dem Auftrag, eine harsche Bildkritik in die Konsole zu drucken.
void keyPressed()
{
  switch(key)
  {
  case '1':
    x=255; 
    y=0; 
    z=0; 
    q=255;
    break;
  case '2':
    x=0; 
    y=255; 
    z=0; 
    q=255;
    break;
  case '3':
    x=0; 
    y=100; 
    z=100; 
    q=255;
    break;
  case '4':
    x=0; 
    y=0; 
    z=255; 
    q=255;
    break;
  case '5':
    x=0; 
    y=0; 
    z=80; 
    q=255;
    break;
  case '6':
    println ("Your painting sucks!");
    break;
  }
}
Nun ging's ums eigentliche Zeichnen; die Funktion "void draw()" und darin verschachtelte Bedingungen codierte ich wie folg (Beschreibung direkt im Code):
void draw()
{
  if (mousePressed && (mouseButton == LEFT)) // Wenn die Maus gedrückt wird und (&&) es der rechte Mausbutton ist...
  {
    stroke (x, y, z, q);    //...dann verwende folgende Parameter...
    strokeWeight (10);
    line(mouseX, mouseY, pmouseX, pmouseY); // ...für eine /line/; deren Position durch die mouseX/Y Parameter bestimmt wird.
  } 
  else if (mousePressed '&&' (mouseButton == RIGHT)) //...oder wenn die Maus gedrückt, es aber die rechte Taste ist...
  {
    stroke (255, 255, 255, 255);    //... dann bitte denselben Strich, nur dicker und in der Hintergrundfarbe.
    strokeWeight (15);
    line(mouseX, mouseY, pmouseX, pmouseY);
  }
 
  if (key == 'd' && keyPressed) //...wenn eine Taste gedrückt wird und es 'd' ist (NUR dann!)...
  {
    background (255); //...übermale die ganze Fläche mit Weiss.
  }
}
Erkenntnis: Als ich den Code schrieb, war mir oft nicht ganz klar, was ich da genau tat. Es war sehr hilfreich das Ganze - im Rahmen dieser Dokumentation - nochmals Schritt für Schritt zu analysieren.