| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- This activity uses loops and switches statements to place brick objects. Conditionals are used to program collision code. The player must clear all the bricks to win.
- */
- //*****************Scene - Initialize When Scene Starts Event************************//
- // set up the scene
- if ($this.scene.state() == "PLAY") {
- // keep track of how many bricks there are
- $this.brickCount = 0;
-
- // set up helper variables for the loops
- var blockSpacingX = 100;
- var blockSpacingY = 35;
-
- // loop through 4 rows and 8 columns and place the bricks
- for (var row = 0; row < 4; row++) {
- for(var col = 0; col < 8; col++) {
- // clone the brick objects
- var brickClone = brick.clone();
-
- // place the cloned brick using the helper variables
- brickClone.x(col * blockSpacingX);
- brickClone.y(row * blockSpacingY);
-
- // give the bricks health based on the row
- brickClone.health = 4 - row;
- brickClone.updateColor();
-
- //increment the brickCount
- $this.brickCount++;
- }
- }
- // remove the original brick from the scene
- brick.remove();
- }
- //*************************paddle - Update Every Frame Event************************//
- // move the paddle to the cursor
- $this.x(getMouseX() - 125/2);
- //************************ball - Update Every Frame Event**************************//
- // move the ball on every frame
- moveX($this);
- moveY($this);
- // check for collisions on every frame
- $this.checkPaddleCollision();
- $this.checkWallCollision();
- //***********************ball - Initialize When Scene Starts Event*****************//
- // check to see if the ball is colliding with the paddle
- $this.checkPaddleCollision = function() {
- if ($this.isTouching(paddle)) {
- // calculate x speed based on where the ball hit the paddle
- var ballCenter = $this.x() + 25/2;
- var paddleCenter = paddle.x() + 125/2;
- var launchSpeed = 3 * (ballCenter - paddleCenter);
-
- // adjust the speedX based on the launch speed
- $this.speedX(launchSpeed);
- // keep the speedY at 200 but make sure the ball goes up
- $this.speedY(-200);
- }
- };
- // check to see if the ball is colliding with the walls
- $this.checkWallCollision = function() {
- // bounce the ball off the left or right side
- if ($this.x() <= 0 || $this.x() >= 800) {
- // change the ball's x direction
- $this.speedX(-$this.speedX());
- }
- // bounce the ball off the top side
- if ($this.y() <= 0) {
- // change the ball's y direction
- $this.speedY(-$this.speedY());
- }
- // reset the ball if it goes off the bottom side
- if ($this.y() >= 600) {
- // place the ball in the center of the scne
- $this.x(400);
- $this.y(300);
- // give the ball a random speedX
- $this.speedX(random(-200, 200));
- }
- };
- //************************brick - Update Every Frame Event**************************//
- // if this brik touches the ball
- if ($this.isTouching(ball)) {
- // decrease the brick's health by one and update its color
- $this.health--;
- $this.updateColor();
-
- // bounce the ball in the opposite direction
- ball.speedY(-ball.speedY());
-
- // if the brick's health is 0
- if ($this.health <= 0) {
- // decrement the brick count
- $this.scene.brickCount--;
- // remove the brick
- $this.remove();
- // if there are no more bricks, stop the game
- if ($this.scene.brickCount <= 0) {
- $this.scene.stopCode();
- }
- }
- }
- //*********************brick - Initialize When Scene Starts Event********************//
- // change the brick color based on its health
- $this.updateColor = function() {
- switch ($this.health) {
- case 1:
- $this.fill("#8CE0D3"); // light blue
- break;
- case 2:
- $this.fill("#28ADA9"); // dark blue
- break;
- case 3:
- $this.fill("#8A2F62"); // light purple
- break;
- case 4:
- $this.fill("#500F34"); // dark purple
- break;
- default:
- $this.fill("#000000"); //black
- break;
- }
- };
|