# Gioco da definire

**URL:** https://discourse.processing.org/t/gioco-da-definire/18681
**Category:** Coding Questions
**Created:** [March 15, 2020, 2:07pm UTC](https://discourse.processing.org/t/gioco-da-definire/18681 "2020-03-15T14:07:08Z")
**Posts on this page:** 1
**Showing post:** 11

<div class="post-metadata">

### Author: ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)
#### Post date: [March 23, 2020, 6:46pm UTC](https://discourse.processing.org/t/gioco-da-definire/18681/11 "2020-03-23T18:46:37Z")

</div>

Did you consider to make a 3D Mondrian?

Using boxes and spheres

```auto

// https://discourse.processing.org/t/gioco-da-definire/18681/7

import peasy.*;

final color WHITE = color(255);
final color BLACK = color(0);

final color RED = color(255, 0, 0);
final color GREEN = color(0, 255, 0);
final color BLUE = #0326FF; 

final color YELLOW = #FFF703; 
float x = 300;
float y = 300;
float y2 = 300;

// drag 
boolean hold=false; // left mouse button
boolean hold2=false; // right mouse button

// state 
final int INFO=0; 
final int GAME=1; 
int state=INFO; 

PeasyCam cam;

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

void setup() {
  size(600, 600, P3D);
  background(0);
  surface.setTitle("Mondrian");
  avoidClipping(); 
  cam = new PeasyCam(this, 5000);
}

void draw() {
  // evaluate state 
  if (state==INFO) {
    cam.beginHUD(); 
    background(0);
    fill(255); 
    text("INFO-SCREEN\n\nMove sculpture with mouse.\nWhen you hold a key: Click left mouse and drag both directions; \nClick right mouse and drag y direction. \n\nClick mouse.", 
      100, 100);
    cam.endHUD();
  } 
  //---------------------
  else if (state==GAME) {
    //
    background(0); 
    lights(); 

    stroke(#FCFDFF);
    strokeWeight(1); // 9 

    // line(0, x, x, height);

    float depth=430; 

    fill(BLUE);
    box3D(0, 0, -30, x, height, depth );

    fill(#FFF703);
    box3D(0, y, -30, x, y, depth);

    fill(WHITE);
    // box3D(0, height+10, -30, x, height, depth );

    // line(x, 0, x, height);

    fill(RED);
    box3D(x, 0, -30, x, height, depth);

    // line(0, y, x, y);

    // line(x, y2, width, y2);

    fill(#0326FF);
    box3D(x, y2, -30, width, y2, depth);

    println(x, y);

    //-----------------------------------------
    if (hold) {
      x+=mouseX-pmouseX;
      y+=mouseY-pmouseY;
    }//if

    if (hold2) {
      //x+=mouseX-pmouseX;
      y2+=mouseY-pmouseY;
    }//if

    if (keyPressed) 
      cam.setActive(false); 
    else cam.setActive(true);
  }//else state 
  //
}//draw 

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

void box3D(float x, float y, float z, 
  float w, float h, float d) {
  // 
  pushMatrix();
  translate (x, y, z);
  box(w, h, d); 
  popMatrix();
}

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

void mousePressed() {
  // evaluate state 
  if (state==INFO) {
    state = GAME;
  }
  //-----------------------------------------
  else if (state==GAME) {
    if (mouseButton==LEFT) { 
      hold=true;
    } else {
      hold2=true;
    }
  }//else
}//func 

void mouseReleased() {
  hold=false;
  hold2=false;
}//func 

void keyPressed() {
}

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

void avoidClipping() {
  // avoid clipping :
  // https : //
  // forum.processing.org/two/discussion/4128/quick-q-how-close-is-too-close-why-when-do-3d-objects-disappear
  perspective(PI/3.0, (float) width/height, 1, 1000000);
}//func
//

```

---

_[View the full topic](https://discourse.processing.org/t/gioco-da-definire/18681)._
