Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
ball b;
paddle p;
Star[] stars = new Star[100];

brick r1;
brick r2;
brick r3;
brick r4;
brick r5;
brick r6;
brick r7;

brick r8;
brick r9;
brick r10;
brick r11;
brick r12;
brick r13;
brick r14;

brick r15;
brick r16;
brick r17;
brick r18;
brick r19;
brick r20;
brick r21;



void setup() {
  size(800, 600);
  p = new paddle();
  b = new ball();
//////////////////////////////////////// I CANT GET ARRAYS OR ARRAYLISTS TO WORK WITH BRICKS OR WITH STARS///////////////////////
  for (int s = 0; s < 100; s++) {
    stars[s] = new Star((int)random(0, 800), (int)random(0, 600));
  }    

  //first row
  r1 = new brick(130, 150);
  r2 = new brick(220, 150);
  r3 = new brick(310, 150);
  r4 = new brick(400, 150);
  r5 = new brick(490, 150);
  r6 = new brick(580, 150);
  r7 = new brick(670, 150);
  //seccond row
  r8 = new brick(130, 120);
  r9 = new brick(220, 120);
  r10 = new brick(310, 120);
  r11 = new brick(400, 120);
  r12 = new brick(490, 120);
  r13 = new brick(580, 120);
  r14 = new brick(670, 120);
  //third row
  r15 = new brick(130, 90);
  r16 = new brick(220, 90);
  r17 = new brick(310, 90);
  r18 = new brick(400, 90);
  r19 = new brick(490, 90);
  r20 = new brick(580, 90);
  r21 = new brick(670, 90);
}

void draw() {
  background(0);

  //ball stuff

  b.displayBall();
  b.moveBall();
  b.collisionBall();
  p.displayPaddle();
/////////////////////////////////////////////////BROKEN ARRAY?/////////////////////////////////////////////
  for (int s = 0; s < 100; s++) {
    stars[s].displayStars();
  }    

  //brick layout


  r1.displayBrick();
  r2.displayBrick();
  r3.displayBrick();
  r4.displayBrick();
  r5.displayBrick();
  r6.displayBrick();
  r7.displayBrick();

  r8.displayBrick();
  r9.displayBrick();
  r10.displayBrick();
  r11.displayBrick();
  r12.displayBrick();
  r13.displayBrick();
  r14.displayBrick();

  r15.displayBrick();
  r16.displayBrick();
  r17.displayBrick();
  r18.displayBrick();
  r19.displayBrick();
  r20.displayBrick();
  r21.displayBrick();
}
//ball is life

int xSpeed = 8;
int ySpeed = 9;
int state = 0;
int ballX = 400;
int ballY = 300;
PVector ballLoc;
PVector ballocity;



class ball {

  ball() {
    ballLoc = new PVector(400, 300);
    ballocity = new PVector(8, height/2);
  }

  void displayBall() {
    noStroke();
    fill(color(#00FF1F));
    ellipseMode(CENTER);
    ellipse(ballX, ballY, 20, 20);
  }
  void moveBall() {
    //set starting position
    if (mousePressed) {
      state = 1;
    }
    if (state == 1) {
      ballX = ballX + xSpeed;
      ballY = ballY + ySpeed;
      ballX = constrain(ballX, 0, width);
    
////////////////////////////////////////////////PVectors result in ball not moving
      //ballLoc.add(ballocity);
      //ballLoc.x = ballLoc.x + ballocity.x;
      //ballLoc.y = ballLoc.y + ballocity.y;
}
  }
  //add ball collision
  void collisionBall() {
    if ((ballX >= width) || (ballX <= 0)) {
      xSpeed = xSpeed * -1;
    } 
    if (ballY <= 0) {
      ySpeed = ySpeed * -1;
    }
    //paddle collision
    if ((ballY+10 >= paddleY-10) && (ballX+10 >= paddleX-50) && (ballX-10 <= paddleX+50) && (ballY-10 <= paddleY+10)) {
      ySpeed = ySpeed * -1;
    }
    //reset ball position
    if (ballY >= 600) {
      ballX = (int) random(10, 790);
      ballY = 300;
      state = 0;
    }
  }
}
class brick {
  int brickHit = 0;
  int brickPlaceX;
  int brickPlaceY;
  
  brick(int xLoc, int yLoc) {
 
   brickPlaceX = xLoc;
   brickPlaceY = yLoc;
}

  void displayBrick() { 
    //if in normal state be a rectangle
    if (brickHit == 0) {
      rect(brickPlaceX, brickPlaceY, 80, 20);
    } 
    //if hit achieve hit state
    if ((ballX <= brickPlaceX+40) && (ballX >= brickPlaceX-40) && (ballY <= brickPlaceY+10) && (ballY >= brickPlaceY -10)) {
      brickHit = 1;
    } 
    //disappear when hit
    if (brickHit == 1) {   
      brickPlaceX = 1000;
      brickPlaceY = 1000;
      //change ball direction and get rid of brick collision
      ySpeed = ySpeed * -1; 
      brickHit = 2 ;
    } 
  }
}
int paddleX  = mouseX;
int paddleY = 580;

class paddle {

  void displayPaddle() {
    noStroke();
    fill(color(#00FF1F));
    rectMode(CENTER);
    rect(paddleX, paddleY, 100, 20);

    paddleX = mouseX;

    paddleX = constrain(paddleX, 50, 750);
  }
}
int starxloc;
int staryloc;

class Star {

  Star (int starX, int starY) {
    starxloc = starX;
    staryloc = starY;
  }

  void displayStars() {
    noStroke();
    ellipse(starxloc, staryloc, 2, 2);

      
}
}