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.

Zeichnungsprogramm

19. September 2013

Für den Einstieg in das Programmieren verwenden wir Processing. Processing basiert auf Java. Da ich in der Lehre (vor vielen Jahren) das programmieren mit Java erlernt habe, war der Wiedereinstieg relativ einfach. Zuerst mussten wir einen Punkt dem Mauscursor folgen lassen. Danach sollten wir ein Zeichnungsprogramm erstellen. Ich versuchte mein erstes Programm zu erweitern, merkte aber, dass das durch den draw()-loop nicht sehr einfach ist. Ich habe mich dann darauf beschränkt bei einem Klick einen Punkt zu zeichnen und diesen in einer ArrayList zu speichern. Bei jedem draw() wird diese ArrayList durchlaufen und die Punkte wiederhergestellt. Version 1 Punkte speichern mit der ArrayList:
int currentMouseX;
int currentMouseY;
boolean clicked = false;
ArrayList<int[]> saved = new ArrayList<int[]>();
color[] colors = new color[6];
color currentColor;


void setup() {
  size(300,300);
  background(0);
  
  currentColor = color(111, 222, 12);
  
  println(colors);
}
 
void draw() {
  background(0);  
  
  // gespeicherte punkte neu zeichnen
  for (int i = 0; i < saved.size(); i++) {
    int[] item = saved.get(i);
    fill(item[2]);
    ellipse(item[0],item[1],30,30);
  }
  
  fill(currentColor);
  ellipse(currentMouseX,currentMouseY,30,30);
}
 
void mouseClicked() {
  print(mouseButton);
  if (mouseButton == RIGHT) {
    background(0); 
    saved.clear();
  } else if (mouseButton == LEFT) {
    save();
  }
}

void save() {
  int[] coordinates = new int[3];
  coordinates[0] = currentMouseX;  
  coordinates[1] = currentMouseY;
  coordinates[2] = currentColor;
  saved.add(coordinates);  
}

void mouseMoved() {
  // println("x: " + mouseX + ", y: " + mouseY);
  // println(clicked);
  if (!clicked) {
    currentMouseX = mouseX;
    currentMouseY = mouseY;
  }
}

void keyPressed() {
  switch (keyCode) {
    case 49: 
      currentColor = color(167, 2, 16);
    break;
    case 50: 
      currentColor = color(130, 2, 167);
    break;
    case 51: 
      currentColor = color(2, 55, 167);
    break;
    case 52: 
      currentColor = color(2, 167, 97);
    break;
    case 53: 
      currentColor = color(50, 167, 2);
    break;
    case 54: 
      currentColor = color(255, 255, 255);
    break;
  }
  // println(keyCode);
}
farbprogramm1 Version 2 In einem neuen Programm erstellte ich ein zweites Zeichnungsprogramm mit folgenden Funktionen:
  • Farbwahl: 1-6
  • Vergrösserung des Pinsels (Kreis): Q
  • Verkleinerung des Pinsels: (A)
  • Darstellung einer Vorschau des aktuellen Pinsels
  • Radieren mit der rechten Maustaste
color currentColor;
color lastColor;
int size;
color backgroundColor = color(255);

void setup() {
  size(400, 400);
  background(backgroundColor);
  noStroke();
  smooth();

  currentColor = color(111, 222, 12);
  lastColor = currentColor;
  size = 30;
}

void draw() {

  fill(currentColor);

  if (mousePressed) {
    ellipse(mouseX, mouseY, size, size);
  }

  // vorschau
  fill(backgroundColor);
  rect(0, 0, size+3, size+3);

  fill(currentColor);
  ellipse(1+size/2, 1+size/2, size, size);
}

void keyPressed() {
  switch (keyCode) {
    // farben 1-6
    case 49:
      currentColor = color(167, 2, 16);
    break;
    case 50:
      currentColor = color(130, 2, 167);
    break;
    case 51:
      currentColor = color(2, 55, 167);
    break;
    case 52:
      currentColor = color(2, 167, 97);
    break;
    case 53:
      currentColor = color(50, 167, 2);
    break;
    case 54:
      currentColor = color(255, 255, 255);
    break;

    // grösser und kleiner
    case 81:
      size++;
    break;
    case 65:
      size--;
    break;
  }
  // println(keyCode);
}

void mousePressed() {
  // rechte maustaste = schwarz = radieren
  if (mouseButton == RIGHT) {
    lastColor = currentColor;
    currentColor = backgroundColor;
  }
}

void mouseReleased() {
  // letzte farbwahl setzen
  if (mouseButton == RIGHT) {
    currentColor = lastColor;
  }
}
farbprogramm2