Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//Ball variables
float xPosBall = random (0);
float yPosBall = random (0, 500);
float xSizeBall = 150;
float ySizeBall = 150;
float xSpeed = random (3, 5);
float ySpeed = random (3, 5);
int colour = 255;


//Character Variables, Char for short
float xPosChar = 400; 
float yPosChar = 400;
float charHeight = 100;
float charWidth = 100;
float charSpeed;


void setup () {
  
  size (500, 500);
  smooth ();
  rectMode(CENTER);
  ellipseMode(CENTER);
  
  xSizeBall = xSizeBall/2;
  ySizeBall = ySizeBall/2;
  
  charWidth = charWidth/2;
  charHeight = charHeight/2;
  

  
}

void draw() {
  
  background (0);
  
  drawBall();
  bounceBall();
  moveBall();
  killBall();
  
  drawCharacter();
  collideCharacter();

}
  
  void drawBall() {  
  
  //BALL STUFF
  noStroke();
  fill (colour);
  ellipse (xPosBall, yPosBall, xSizeBall, ySizeBall);
  
}
  
  
  void moveBall() {
  
  //making the ball move in the x axis
  xPosBall = xPosBall + xSpeed;
  
  //making the ball move in the y axis
  yPosBall = yPosBall + ySpeed;
  
  
}
  
  void killBall() {
  
  //red laser
  fill(242, 29, 29);
  rect(490, 250, 10, 500);
    
    
  //ball heading to the right wall, LIVES SYSTEM OF THE TOY
  if (xPosBall > width) { 
    xPosBall = 0;
    colour = colour -100; //decreasing the colour 
    xSizeBall = xSizeBall - 25; //decreasing the size
    ySizeBall = ySizeBall - 25; //decreasing the size
    
  }
    if (colour < 0) { //keeping the colour black after certain red lines
    colour = 0;
    
    }
    
    if (xSizeBall < 0) { //keeping the size 0
    xSizeBall = 0;
    }
    
    if (ySizeBall < 0) { //keeping the size 0
      ySizeBall = 0;
    }
    
 
}

  void bounceBall() {
 
  //ball bouncing off the left side
  if (xPosBall < 0) {
    xSpeed = -xSpeed;
  }
    
  //making the ball bounce from the top
  if (yPosBall < 0) {
    ySpeed = -ySpeed;
  }
  
  //making the ball bounce from the bottom
  if (yPosBall > height) {
    ySpeed = -ySpeed;
  }  
 

}
  
  void drawCharacter() {
  
  //Character body
  fill(150);
  rect(xPosChar, yPosChar, charWidth, charHeight);
  
  
  //Character face
  fill(0);
  ellipse(xPosChar - 10, yPosChar - 10, 10, 10);
  ellipse(xPosChar + 7, yPosChar -10, 10, 10);
  ellipse(xPosChar + 0, yPosChar + 10, 20, 15);
  
  //body waist
  fill(150);
  rect(xPosChar, yPosChar +30, charWidth - 10, charHeight - 20);
  
  //left feet
  fill(150);
  rect(xPosChar - 10, yPosChar +50, charWidth - 40, charHeight - 30);
  
  //right foot
  fill(150);
  rect(xPosChar - 10, yPosChar +50, charWidth - 40, charHeight - 30);
  
  //left foot
  fill(150);
  rect(xPosChar +10, yPosChar +50, charWidth - 40, charHeight - 30);
  
  //right arm
  fill(150);
  rect(xPosChar - 20, yPosChar +30, charWidth - 25, charHeight - 40);
  
  //left arm
  fill(150);
  rect(xPosChar + 20, yPosChar +30, charWidth - 25, charHeight - 40);
  
  

  

}
  

//moving the character
void keyPressed() { 


  //moving up
  if (keyCode==UP) {
    yPosChar = yPosChar - charHeight;
  }  
  //moving down
  else if (keyCode==DOWN) {
    yPosChar = yPosChar + charHeight;
  } 
  
  

}

  void collideCharacter() {
   
    // Collison with the character
  if (yPosBall > yPosChar - 50 && yPosBall < yPosChar + 50 && xPosBall >= xPosChar - 50) { //collision sides of the character
    xSpeed = -xSpeed; //reversing direction
    ySpeed = -ySpeed;
  }
  
  else if (yPosBall < yPosChar + 50 && yPosBall > yPosChar - 50 && xPosBall <= xPosChar + 50) {
    xSpeed = +xSpeed;
    ySpeed = +ySpeed;
  
  }
  }