Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
////////Declare Variables/////////
//Paddle//
float paddlePositionY=300;
float paddlePositionX=100;
float paddleSpeed=5;
float paddlePositionXmove = 0;

//Ball//
float ballWidth = 60;
float ballHeight = 60;
float ballPositionX = 400;
float ballPositionY = 0;
float ballSpeedX = 1;
float ballSpeedY = 1;

//Wallpaper//
//colours
color leftWallColor= color (255);
color rightWallColor= color (0);
//start point for loop
float dottedLinePositionX;




void setup() {

  size(400, 400);
  println("Keep the ball up! Move hands using A & D and <- & ->");
  println("Don't worry if you miss!");
}

void draw() {

  background(0);


  drawWallpaper();
  updateWallpaper();

  drawPaddle();
  updatePaddle();
  
  drawBall();
  updateBall();
}



void drawWallpaper() {
  rectMode (CORNERS);
  /////WALLPAPER BASE//////
  ///Left Side///
  noStroke();
  fill(leftWallColor);
  rect(0, 0, 200, 400);
  ///Right Side///
  fill(rightWallColor);
  rect(200, 0, 400, 400);
}



void updateWallpaper() {
  
  /////BASE COLOUR changes if ball hits bottom of screen/////
  if (ballPositionY > 399) {
    leftWallColor = color (random(200, 255), random(200, 255), random(200, 255));
    rightWallColor = color (random(0, 55), random(0, 55), random(0, 55));
  }
  /////DOTTED LINE////////
  rectMode(CORNER);
  ///Resets Start position of Dotted Line every time///
  dottedLinePositionX = 0;
  //makes the dashes loop across the screen//
  while (dottedLinePositionX <= 450) {
    fill (150, 0, 0);
    rect(dottedLinePositionX, 340, 20, 4);
    dottedLinePositionX += 30;
  }
}

void drawPaddle() {
  rectMode (CENTER);
    if (paddlePositionX>200) {  
    fill (255);
  } else {
    fill(0);
  }
  rect (paddlePositionX, paddlePositionY, 60, 10);
}
void keyPressed() {
  ///MOVES RIGHT PADDLE///
  if (key == 'j') {
    paddlePositionXmove = -1;
  }
  if (key == 'l') {
    paddlePositionXmove= 1;
  }
  ///MOVES LEFT PADDLE//
    if (key == 'a') {
    paddlePositionXmove = -1;
  }
  if (key == 'd') {
    paddlePositionXmove= 1;
  }
}

void keyReleased() {

  ///STOPS PADDLE///
  if (key == 'a') {
    paddlePositionXmove = 0;
  } else if (key == 'd') {
    paddlePositionXmove = 0;
  }
}
void updatePaddle() {
  paddlePositionX += paddlePositionXmove*paddleSpeed;
}


void updateBall() {
//////BALL BOUNDS////////
  ///creates bounderies for the ball///
  if (ballPositionX < 0 || ballPositionX > width || ballPositionY > 500) {
    ballSpeedX = -ballSpeedX;
  }
/////BALL BOUNCE/////////
  ///if a ball hits a hand it "bounces" back up////
  float distance = abs(paddlePositionX - ballPositionX);
  if (distance < 60 && ballPositionY > 300) {
    ballSpeedY = ballSpeedY * -1;
    ballSpeedX = random(-5, 5);
    println("hit");
  }

  ////if ball hits bottom of screen it's speed gets reversed as well///
  else if (ballPositionY > 400) { 
    ballSpeedY = ballSpeedY * -1;
    ballSpeedX = random(-5, 5);
  } else
    ballSpeedY +=.5;
  ballPositionX += ballSpeedX;
  ballPositionY += ballSpeedY;
}



void drawBall() {

  noStroke();
  ///Change Colour of Ball based on X pos///
  if (ballPositionX>200) {  
    fill (255);
  } else {
    fill(0);
  }
  ellipse(ballPositionX, ballPositionY, ballWidth, ballHeight);
}