What can you create in Processing?

I have a little experience with some small processing android apps I made and a pc app thats a file system viewer.

What else is there to make?
Games, software. But how could you make something like a game that’s very complicated or a software like krita.

I mean obviously I cant make like krita the drawing app, because I don’t even know how to make a simple line drawing thing.

It would require

  1. some imagination
  2. lots of time
  3. appropriate level of programming development skills

Most find the last point the most challenging part.

Creating something large and complicated involves breaking it down into many tasks that are small and simple.

4 Likes

there are examples of drawing:

see Continuous Lines / Examples / Processing.org

or here where you can switch between drawing cirlce / line




// draw program 
// rubber = rubber 

PFont font;
//PShape ellipse;
color currentFill=color(111); 

ArrayList<Button> buttons = new ArrayList();  

boolean hold=false;

// define modes 
final int lineMode = 0;
final int circleMode = 1;
final int rubberMode = 2;
//current mode
int mode = lineMode;
// names of modes
String[] stringMode={ "line", 
  "circle (drag mouse)", 
  "rubber"};

// draw a circle variables 
boolean drawNewCircle; // During mouse dragging we can still abort the circle with ESC and change its size with the mouse 
PVector startCircle=new PVector(); 
float diameter; 

void setup() {
  size(768, 1024);

  PImage rubber;
  PImage save;
  PImage delete;
  PImage circle;

  background(255);
  rubber = loadImage("gomme.png");
  save = loadImage("save.png");
  delete = loadImage("delete.png");
  circle = loadImage("circle.png");
  //ellipse = loadShape("ellipse.svg");

  // font = loadFont("Grotex-Regular-48.vlw");
  // textFont(font);

  defineButton(rubber, "rubber", 600, 20, 64, 74);
  defineButton(save, "save", 520, 20, 64, 74); 
  defineButton(delete, "delete", 680, 20, 64, 74);
  //shape(ellipse, 300, 380, 188, 188);
  defineButton(circle, "circle (on/off)", 400, 20, 188, 188);
} 

void draw() {

  helpTextUpperLeftCorner(); 

  // display buttons
  for (Button b : buttons) {
    b.display();
  }

  textSize(48);
  text("un soleil", 20, 60); 
  fill(210);

  stroke(0);
  strokeWeight(6);
  if (!hold) {
    switch(mode) {
    case circleMode:
      // ignore
      break; 
    case lineMode:
      if (mousePressed) {
        line(mouseX, mouseY, pmouseX, pmouseY);
      }
      break;
    case rubberMode:
      //
      if (mousePressed) {
        fill(255); 
        noStroke(); 
        rect(mouseX, mouseY, 3, 3);
      }
      break; 
    default:
      //Error 
      break;
    }//switch
  }//if

  // During mouse dragging we can still abort the circle with ESC and change its size with the mouse 
  if (drawNewCircle) {
    // delete old circle 
    stroke(255); 
    fill(255);
    strokeWeight(3);
    ellipse( startCircle.x, startCircle.y, diameter, diameter);
    // show circle with current size diameter
    stroke(0);
    noFill(); 
    strokeWeight(1);
    diameter = 2 * dist (mouseX, mouseY, 
      startCircle.x, startCircle.y);
    stroke(0); 
    ellipse( startCircle.x, startCircle.y, diameter, diameter);
  }//if
  //
}

// -----------------------------------------------------

void helpTextUpperLeftCorner() {
  //
  textAlign(LEFT);
  fill(255); 
  noStroke(); 
  rect(0, 0, width, 30); 
  fill(0); 
  textSize(17);
  if (drawNewCircle) {
    text("drag mouse to resize circle, ESC to abort", 22, 22);
  } else { 
    text("mode is " + stringMode[mode], 22, 22);
  }//else 
  // default
  fill(210);
}//func

void mousePressed() {
  for (Button b : buttons) {
    if (b.over()) {
      exec(b.id);
      hold=true; 
      return;
    }//if
  }//for
  if (mode==circleMode) {
    startCircle.x=mouseX;
    startCircle.y=mouseY;
    drawNewCircle=true;
    diameter=0;
  }
}

void mouseReleased() {

  if (drawNewCircle) {
    // finish the circle in red 
    noStroke();
    fill(currentFill);
    ellipse( startCircle.x, startCircle.y, diameter, diameter);
  }
  hold=false;
  drawNewCircle=false;
  diameter=0;
}

// ------------------------------------------------------------

void keyPressed() {
  if (key==ESC) {

    key=0;

    if (drawNewCircle) {
      stroke(255); 
      fill(255);
      strokeWeight(3);
      ellipse( startCircle.x, startCircle.y, diameter, diameter);

      hold=false;
      drawNewCircle=false;
      diameter=0;
    }
  } 

  // COLORS 

  else if (key=='0') {
    currentFill=color(255, 0, 0);
  } else if (key=='1') {
    currentFill=color(0, 255, 0);
  } else if (key=='2') {
    currentFill=color(0, 0, 255);
  } else if (key=='3') {
    currentFill=color(0);
  } else if (key=='4') {
    currentFill=color(201);
  } else if (key=='5') {
    currentFill=color(34);
  } else if (key=='6') {
    currentFill=color(255, 248, 44);
  }
}

// -------------------------------------------------------------------

void exec(int id) {
  // execute commands 
  println(id);

  switch (id) {
  case 0:
    mode=rubberMode;
    break; 

  case 1:
    // 
    save("zrewuizwre.png");
    break; 

  case 2:
    background(255);
    break;

  case 3:
    if (mode!=circleMode)
      mode=circleMode; 
    else 
    mode=lineMode;
    break;
  default:
    break;
  }//switch
}

void defineButton(PImage img, 
  String s, 
  float x, float y, 
  float w, float h) {
  buttons.add (new Button(img, s, x, y, buttons.size()));
}

//===================================================================

class Button {

  PImage img=null; 
  String s; 
  float x, y; 
  int id; 

  Button(PImage img_, 
    String s_, 
    float x_, float y_, 
    int id_) {
    img=img_; 
    s=s_;
    x=x_;
    y=y_;

    id=id_;
  }

  void display() {
    if (img!=null) {
      imageMode(CENTER); 
      image(img, x, y);
      return;
    }

    textAlign(CENTER);
    textSize(17);
    text(s, x, y);
    textAlign(LEFT);
  }//

  boolean over() {
    return 
      dist (mouseX, mouseY, x, y) < 30;
  }
  //
}//class
// 
2 Likes

Hi

Games

2 Likes

more interesting is generative art, where the Sketch does the drawing / art

2 Likes

This is a Mobile Screensaver for android. Unluckily, animated screensavers are being removed from android devices. I had many troubles to add this one to my 2018 Samsung note 8:

This is a Kaleidoscope for android. It used the ketai library, wich I think is outdated now:

Finally, this is a Vision Aid software i developed to aid myself
tell the difference between green and brown, cyan and pink, dark red and black, and so on. I eventually used it to see an old film intended to use special “spooky” glasses:

2 Likes

Processing was also used to “boost” the interactive media wall at former MediaLab Prado, Alameda 15, 28014 Madrid Spain. The place was recycled into Serrería Belga Exhibition Hall; the media wall is still there but obsoleted and turned off.
The videogames you see at the beggining of this video are made with processing.js. Players ran on the square , a camera detected movement, and then a computer vision library moved the ship following players.

2 Likes

Take a look at links on the Processing website:

See what others are making

is on the bottom left of the page.

Some cool hardware and software here:

See downloads for the Processing files.

:)

1 Like

Adding to the list…

And check out the Gallery category for some cool stuff!

:)

2 Likes