Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//Untitled
//Chavaiz Amil
//click for the ball to jump to cursor and drop ??
//this is very poorly done so i apologize to you for having to endure it :(
//and to myself for the disappointment
//FeelsBadMan


//state

boolean a = false;
boolean cover = false;
boolean locked = false;

color randomColor;

float xPos;
float yPos;
float speed;
float gravity;

float cx;
float cy;
int cs = 50;

float cdifx = 0;
float cdify = 0;

//setup

void setup() {
  size(400, 400);
  frameRate(60);
  smooth();
  noStroke();
  ellipseMode(CENTER);
  rectMode(CENTER);

  //state variables

  xPos = 200;
  yPos = 0;
  speed = 0;
  gravity = 0.4;
  randomColor = color(random(255), random(255), random(255));
  cx = xPos-120;
  cy = yPos;
}

//draw function

void draw() {
  frameRate(60);
  drawBg();
  drawTable();
  drawCandle();
  addGrav();
  tableStop();
  boundaries();
  //moccheck();
  drawCircles();
  mouseBall();
  noStroke();
}

//void mousePressed() {
//  //cirOverCheck();
//  //if (mousePressed){
//  //  speed += -.5;
//  //  cx = mouseX;
//  //  yPos = mouseY;
//  //  if (mouseX>cx){
//  //    speed += .5;
//  //  }

//  //}
//}

//void mouseDragged() {
//  //cirLockCheck();
//}

//void mouseReleased() {
//  //locked = false;
//}

///////////////
////D R A W////
///////////////

//draw background
void drawBg() {
  background(75);
  fill(randomColor);
  for(int y=0; y < height; y += 17){
    for(int x=0; x < width; x += 17){
      rect( x, y, 5,5);
    }
  }
}

//draw table
void drawTable() {
  fill(82, 54, 27);
  rect(200, 350, width, 65);
  fill(49, 29, 14);
  rect(200, 383, width, 20);
}
////draw candle
void drawCandle() {

  //candle
  fill(238, 232, 170, 230);
  rect(200, 220, 10, 40, 250);

  //band
  fill(188, 198, 204);
  rect(200, 220, 14, 5, 253);
  fill(255, 185, 0, 100);
  rect(200, 219, 14, 3, 250);

  //fire
  a=true;
  if (a) {
    frameRate(3);
    fill(random(255, 255), random(165, 255), random(0, 0));
    ellipse(200, 198, 5+sin(millis()/150)*1, 10+sin(millis()/150)*1);
  }

  //glow
  fill(255, 255, 204, 70);
  ellipse(200, 200, 350+sin(millis()/150)*6, 340+sin(millis()/150)*6);


  //glow loop
  //int i = 0;
  //while (i < 340){
  //  i = i+50;
  //  fill(255,255,204,70);
  //  ellipse(200, 200, i, i);
  //  if (i >= 340){
  //    i = -50;
  //  }
  //}
  //int i = 250;
  //fill(255, 255, 204, 70);
  //ellipse(200, 200, i, i);

  //if (i >= 250) {
  //  i = i+25;
  //}
  //if (i <= 350) {
  //  i = i-25;
  //}
}

//draw circles
void drawCircles() {

  stroke(0, 0, 0);
  strokeWeight(1.5);

  //left circle
  fill(randomColor);
  ellipse(cx, yPos, cs, cs);
}

//apply gravity
void addGrav() {
  frameRate(45);
  yPos = yPos + speed;
  speed = speed + gravity;
}

//Stop ball once at the table
void tableStop() {
  if ( speed < 0.65 && yPos > height-75) {
    speed = -0.65;
    gravity = 0.4;
  } else if (yPos > height-75) {
    speed = speed * -0.65;
  }
}

//dont allow ball off screen

void boundaries() {
  if (cx>width-12) {
    speed = speed * -.65;
    cx=width-12;
  } else if (cx<12) {
    speed = speed * -.65;
    cx=12;
  }
}

//draw ball to mouse pos

void mouseBall() {
  if (mousePressed) {
    speed += -.5;
    cx = mouseX;
    yPos = mouseY;
    if (mouseX>cx) {
      speed += .5;
    }
  }
}




///////////////
////D R A G////
///////////////

//void moccheck() {

//  if (mouseX > cx-cs && mouseX < cx+cs &&
//    mouseY > yPos-cs && mouseY < yPos+cs) {
//    cover = true;
//    if (!locked) {
//      stroke(255);
//      //fill(180,0,0);
//    }
//  } else {
//    stroke(153);
//    //fill(153);
//    cover = false;
//  }
//}

//void cirOverCheck() {
//  if (cover) {
//    locked = true;
//    //fill(255, 255, 255);
//  } else {
//    locked = false;
//  }
//  cdifx = mouseX-cx;
//  cdify = mouseY-yPos;
//}

//void cirLockCheck() {
//  if (locked) {
//    cx = mouseX-cdifx;
//    cy = mouseY-cdify;
//  }
//}