Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <title>Bricks and Ball </title>
- <style type="text/css">
- canvas { border: 3px solid black; }
- </style>
- <script type="text/javascript">
- // Global variable here
- var yvar = 0; //CHANGED
- var x = 150;
- var y = 150;
- var dx = 2;
- var dy = 4;
- var WIDTH=100;
- var HEIGHT=100;
- var ctx;
- var interval =10;
- var canvas;
- var intervalId = 0;
- var rightDown = false;
- var leftDown = false;
- var canvasMinX = 0;
- var canvasMaxX = 300;
- // -- Paddle
- var paddlex;
- var paddleh;
- var paddlew;
- // --- Bricks
- var bricks;
- var NROWS;
- var NCOLS;
- var BRICKWIDTH;
- var BRICKHEIGHT;
- var PADDING;
- // 2 Dimensional Array of Bricks
- // http://www.webreference.com/programming/javascript/diaries/12/index.html
- // javascript arrays
- function initbricks()
- {
- NROWS = 5;
- NCOLS = 5;
- BRICKWIDTH = (WIDTH/NCOLS) - 1; // fill the canvas Width
- BRICKHEIGHT = 15;
- PADDING = 1;
- // create array of bricks here
- bricks = new Array(NROWS); // array of row arrays
- for ( i=0; i < NROWS; i++ ) // traverse rows
- {
- bricks[i] = new Array(NCOLS); // one row array
- for (j=0; j < NCOLS; j++) // get to a single brick
- {
- bricks[i][j] = 1; // if it exists it is 1 (not broken)
- }
- }
- }
- function reinit()
- {
- x = 150;
- y = 150;
- var dx = 2;
- var dy = 4;
- rightDown = false;
- leftDown = false;
- }
- function init_mouse()
- {
- // ************* DOESN't WORK
- // canvasMinX = ctx.canvas.offset().left;
- // canvasMaxX = ctx.canvasMinX + WIDTH;
- }
- function onMouseMove(evt)
- {
- if ( evt.pageX > canvasMinX && evt.pageX < canvasMaxX )
- {
- paddlex = evt.pageX - canvasMinX;
- }
- }
- function onKeyDown(evt)
- {
- if (evt.keyCode == 39) rightDown = true;
- else if (evt.keyCode == 37) leftDown = true;
- }
- function onKeyUp(evt)
- {
- if (evt.keyCode == 39) rightDown = false;
- else if (evt.keyCode == 37) leftDown = false;
- }
- function init()
- {
- ctx = document.getElementById('canvas').getContext('2d');
- canvas = document.getElementById('canvas');
- WIDTH = ctx.canvas.width; // not with the canvas 'variable'
- HEIGHT = ctx.canvas.height;
- window.addEventListener('keydown',onKeyDown, true);
- window.addEventListener('keyup',onKeyUp, true);
- window.addEventListener( 'mousemove',onMouseMove,false)
- init_paddle();
- init_mouse();
- initbricks(); // initialize all the bricks to exist
- // call setInterval to request browser to run function every 10 milliseconds
- setInterval( draw, interval );
- }
- function circle(x,y,r)
- {
- ctx.beginPath();
- ctx.arc(x, y, r, 0, Math.PI*2, true);
- ctx.closePath();
- ctx.fill();
- }
- function rect(x,y,w,h)
- {
- ctx.beginPath();
- ctx.rect(x,y,w,h);
- ctx.closePath();
- ctx.fill();
- }
- function clear()
- {
- ctx.clearRect(0, 0, WIDTH, HEIGHT);
- }
- function init_paddle()
- {
- paddlex = WIDTH / 2;
- paddleh = 10;
- paddlew = 75;
- }
- function draw()
- {
- clear();
- circle(x,y,10);
- //*** move the paddle if left or right is currently pressed
- if (rightDown) paddlex += 5;
- else if (leftDown) paddlex -= 5;
- // paddle
- rect(paddlex, HEIGHT-paddleh, paddlew, paddleh);
- //draw bricks
- for ( i=0; i < NROWS; i++ )
- {
- for ( j=0; j < NCOLS; j++ )
- {
- if ( bricks[i][j] == 1 )
- {
- rect(
- (j * (BRICKWIDTH + PADDING)) + PADDING,
- (i * (BRICKHEIGHT + PADDING)) + PADDING + yvar, //CHANGED (added + yvar)
- BRICKWIDTH, BRICKHEIGHT );
- } // if
- } // for j
- } // for i
- //have we HIT a brick?
- rowheight = BRICKHEIGHT + PADDING;
- colwidth = BRICKWIDTH + PADDING;
- row = Math.floor(y/rowheight); // y = 1, y/15 then in column 0
- col = Math.floor(x/colwidth); // x = 1, x/59 then in column 0
- // ctx.fillStyle = "blue"; // DEBUGGING
- // ctx.font = "bold 16px Arial";
- // ctx.fillStyle = "blue";
- // ctx.fillText( row + ' x ' + col, 20, 200);
- // ctx.fillStyle = "black";
- //if so, reverse the ball and mark the brick as broken
- if ( y < NROWS * rowheight // 5 x 15 = 75 y is in the upper
- // area where there are briks
- // && row >= 0 // and positive (is this ever negative?)
- //&& col >= 0 // and positive (si this ever negavive?)
- && bricks[row][col] == 1) // and it is alive! then remove it!
- {
- dy = -dy;
- bricks[row][col] = 0;
- }
- // add this for bouncing
- // if outside the width canvas, change direction of ball.
- if (x + dx > WIDTH || x + dx < 0)
- dx = -dx;
- if (y + dy < 0)
- dy = -dy;
- else if ( y + dy > HEIGHT )
- {
- if (x > paddlex && x < paddlex + paddlew)
- dy = -dy;
- else
- {
- //clearInterval(intervalId);
- }
- }
- // add this for bouncing
- x += dx;
- y += dy;
- if(yvar < 200)//CHANGED
- yvar++; //CHANGED
- else //CHANGED
- yvar= 0;//CHANGED
- }
- </script>
- </head>
- <body onload="init()">
- <canvas id="canvas" height="300" width="300"> Your browser does not support the canvas element. </canvas>
- <button onclick="reinit()">Restart</button>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement