Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
 
 /////////////////////////////////////////////
 ///////////milu Ganlixingzi///////////////
 //////////10.2.2017//////////////////////
 ////////////////////////////////////
 
 
 void setup() {
  size(400, 400);
  rectMode(CORNERS);
  ellipseMode(CENTER);

  drawGameMachine();
  drawScreen();
  drawButton();
  }
  void draw(){
  noCursor();
  drawGameMachine();
  drawScreen();
  drawButton();
  paddle();
  trouble();
  ball();
  paddleConstraint();
  updateBall();
  rect(mouseX,mouseY,10,10);
  }

 void drawGameMachine() {
  rectMode(CORNERS);
  ellipseMode(CENTER);
  frameRate(60);
  background(#2DD5A4);
  noStroke();
  
    // shadow of game
  fill(#6B695F);
  rect(110, 300, 280, 350, 15);
      
  //SHADOW/BACK OF SCREEN
  rect(110, 70, 140, 320, 15);
  
  //SHADOW/BACK OF GameMachine
  fill(#B5B2A1);
  rect(120, 60, 280, 340, 15);
 
  //inside GameMachine
  fill(#8C8A7D);
  rect(130, 70, 270, 180);
   }
  
   void drawScreen() {
  fill(#27F237);
  rect(145, 80, 250, 170);  
 }
 
  void drawButton() {
  fill(#E81025);
  ellipse(260, 230, 20, 20);
  ellipse(240, 250, 20, 20);
  //shadow
  fill(#E85078); 
  ellipse(260, 230, 15, 15);
  ellipse(240, 250, 15, 15);
  
 fill(#003961);
  ellipse(160, 220, 22, 22); //top button
  ellipse(140, 240, 22, 22); //bottom button
  ellipse(180, 240, 22, 22); //left button
  ellipse(160, 260, 22, 22); //right button
  //shadow
   fill(#0071C1);
  ellipse(160, 220, 17, 17); //top button
  ellipse(140, 240, 17, 17); //bottom button
  ellipse(180, 240, 17, 17); //left button
  ellipse(160, 260, 17, 17); //right button
  
    //TO BLOCK OUT THE SHARP EDGES OF THE QUAD.
  fill(#0071C1);
  rect(220, 330, 220, 350);
}

//new//////////////////////////////////////////////////////////////
//BORDER SPACING
int net=10;
 
//TROUBLE VARIABLES
float troubleGravity = 5;
 
//BALL VARIABLES
float gravity = .1;
float ySpeed = 1;
//BALL STARTING Y
float ballY = 80;
//BALL STARTING X
float ballX = 145;
//BALL RADIUS
int bR = 10;
//LEFT OR RIGHT MOMENTUM
float ballMove = 3;
//RANDOM COLOURS
color ballC;
 
//PADDLE VARIABLES
float paddleHeight = 10;
float paddleWidth = 20;
float paddleX = 200;
float paddleY = 300;
float PSpacing = 10;

//rect(145, 80, 250, 170);

void updateBall() {
  ballX = ballX + ballMove;
  ballY += ySpeed;
  ySpeed += gravity;
  if (ballY <= 0 == true) {
    ballY = 1; 
    ySpeed = -ySpeed*0.6;
  }
 
  //Ball collides with walls
  if  (ballX >= 250-bR || ballX < 135 + bR) {
    //ySpeed = ySpeed*-1;
    ballMove = -ballMove;
  }
  if (ballY >= 170 == true) {
    ballY = 150;
    ySpeed = -ySpeed*0.95;
  }
  if (ballY <= 80 == true) {
    ballY = 90;
    ySpeed = -ySpeed*0.95;
  }
 
  //BALL COLLIDES WITH TOP OR BOTTOM OF PADDLE
  //Bottom
  if (ballY - bR <= mouseY+(paddleHeight/2)
    //Top
    && ballY + bR >= mouseY - (paddleHeight/2)
    //Ball is to the right of the left edge of the paddle
    && ballX - bR >= mouseX - (paddleWidth) - PSpacing
    //Ball is to the left of the right edge of the paddle
    && ballX +bR <= mouseX +(paddleWidth) + PSpacing) {
    ySpeed = -ySpeed;
    ballC = color (random(113,255), 255, random(113, 255));
  }
}
 void ball() {
  //ellipseMode(RADIUS);
   rectMode(CORNER);
  fill (ballC);
  rect(ballX, ballY, bR, bR);
}
void paddleConstraint() {
  paddleX=mouseX;
  paddleY=mouseY;
  if (mouseX < 145+paddleWidth/2) {
    paddleX = 145;
    //KEEP PADDLE ON SCREEN (MODELED AFTER MARTY DANIELS' CODE)
  } else if (mouseX > 230 - (paddleWidth/2)) {
    paddleX = 230 - (paddleWidth/2);
  }
    if (mouseY < 80) {
    paddleY = 80;
    //KEEP PADDLE ON SCREEN (MODELED AFTER MARTY DANIELS' CODE)
  } else if (mouseY > 160) {
    paddleY = 160 ;
  } 
  //else {
  //  paddleX = mouseX;
  //}
}

 
//DRAW PADDLE
void paddle() {
   rectMode(CORNER);
  //colour
  fill(44, 222, 208);
  rect(paddleX, paddleY, 30, 10);
}
 
void trouble() {
  if (keyPressed == true) {
    gravity = troubleGravity;
  } else {
    gravity = 0.3;
  }
}