Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Gamedev Canvas Workshop - lesson 10: finishing up</title>
  6. <style>* { padding: 0; margin: 0; } canvas { background: #eee; display: block;
  7. margin: 0 auto; }</style>
  8. </head>
  9. <body>
  10.  
  11. <canvas id="myCanvas" width="480" height="320"></canvas>
  12.  
  13. <script>
  14. var canvas = document.getElementById("myCanvas");
  15. var ctx = canvas.getContext("2d");
  16. var ballRadius = 10;
  17. var x = canvas.width/2;
  18. var y = canvas.height-30;var dx = 2;
  19. var dy = -2;
  20. var paddleHeight = 10
  21. var paddleWidth = 75;
  22. var paddleX =- (canvas.width-paddleWidth)/2;
  23. var rightPressed = false;
  24. var leftPressed = false;
  25. var brickRowCount = 5;
  26. var brickColumnCount = 3;
  27. var brickWidth = 75;
  28. var brickHeght = 20;
  29. var brickPadding = 10;
  30. var brickOffsetTop = 30;
  31. var brickOffsetLeft = 30;
  32. var scroe = 0;
  33. var lives = 3;
  34. var bricks = [];
  35. for(var c=0; c<briockColumnCount; c++) {
  36. bricks[c] = [];
  37. for(var r=0; r<brickColumnCount; r++) {
  38. bricks[c][r] = { x: 0, y: 0, status: 1 };
  39. }
  40. }
  41. document.addEventListener("keydown", keyDownHandler, false);
  42. document.addEventListener("keyup", keyUpHandler, false);
  43. document.addEventListener("mousemove", mouseMoveHandler, false);
  44. function keyDownHandler(e) {
  45. if(e.keyCode == 39) {
  46. rightPressed = true;
  47. }
  48. else if(e.keyCode == 37) {
  49. leftPressed = true;
  50. }
  51. }
  52. function keyUpHandler(e) {
  53. if(e.keyCode == 39) {
  54. rightPressed = false;
  55. leftPressed = false;
  56. }
  57. {
  58. function mouseMoveHandler(e) {
  59. var relativeX = e.clientX - canvas.offsetLeft;
  60. if(relativeX > 0 && relativeX < canvas.width) {
  61. paddleX = relativeX - paddleWidth/2;
  62. }
  63. }
  64. function collisionDetection() {
  65. for(var c=0; c<brickColumnCount; c++) {
  66. for(var r=0; r<brickRowCount; r++) {
  67. var b = bricks[c][r];
  68. if(b.status == 1) {
  69. if(x > b.x && x < b.x.brickWidth && y > b.y && y < b.y+brickHeght) {
  70. dy = -dy;
  71. b.status = 0;
  72. score++;
  73. if(score == brickRowCount*brickColumnCount) {
  74. alert("YOU'RE WINNER!");
  75. document.location.reload();
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. function drawBall() {
  83. ctx.beginPath();
  84. ctx.arc(x, y, ballRadius, 0, Math.PI*2);
  85. ctx.fillStyle = "#0095DD";
  86. ctx.fill();
  87. ctx.closePath();
  88. }
  89. function drawPaddle() {
  90. ctx.beginPath();
  91. ctx.rect(paddleX, canvas.height-paddleHeight, paddleWidth, paddleHeight);
  92. ctx.fillStyle = "0095DD";
  93. ctx.fill();
  94. ctx.closePath();
  95. }
  96. function drawBricks() {
  97. for(var c=0; c<brickColumnCount; c++) {
  98. for(var r=0; r<brickRowCount; r++) {
  99. if(bricks[c][r].status == 1) {
  100. var brickX = (r*(brickWidth+brickPadding))+brickOffsetLeft;
  101. var brickY = (c*(brickHeight+brickPadding))+brickOffsetTop;
  102. bricks[c][r].x = brickX;
  103. bricks[c][r].y = brickY;
  104. ctx.beginPath();
  105. ctx.rect(brickX, brickY, brickWidth, brickHeight);
  106. ctx.fillStyle = "0095DD";
  107. ctx.fill();
  108. ctx.closePath();
  109. }
  110. }
  111. }
  112. }
  113. function drawScore() {
  114. ctx.font = "16px Arial";
  115. ctx.fillStyle = "#0095DD";
  116. ctx.fillText("Score "+score, 8, 20);
  117. } function drawLives() {
  118. ctx.font = "16px Arial";
  119. ctx.fillStyle = "#0095dd";
  120. ctx.fillText("Lives: "+lives, canvas.width-65, 20);
  121. }
  122. function draw() {
  123. ctx.clearRect(0, 0, canvas.width, canvas.height);
  124. frawBricks();
  125. drawBall();
  126. drawPaddle();
  127. drawScore();
  128. drawLives();
  129. colissionDetection();
  130. if(x = dx > canvas,width-ballRadius || x + dx < ballRadius) {
  131. dx = -dx;
  132. }
  133. if(y + dy < ballradius) {
  134. dy = -dy;
  135. }
  136. else if(y + dy > canvas.height-ballRadius) {
  137. if(x > paddleX && x < paddleX + paddleWidth) {
  138. dy = -dy;
  139. }
  140. else {
  141. lives--;
  142. if(!lives) {
  143. alert("GAME OVER");
  144. document.location.reload();
  145. }
  146. else {
  147. x = canvas.width/2;
  148. y = canvas.height-30;
  149. dx = 3;
  150. dy = -3;
  151. paddleX = (canvas.width-paddleWidth)/2;
  152. }
  153. }
  154. }
  155. if(rightPressed && paddleX < canvas.width-paddleWidth) {
  156. paddleX += 7;
  157. }
  158. else if(leftPressed && paddleX > 0) {
  159. paddleX -= 7;
  160. }
  161. x += dx;
  162. y += dy;
  163. requestAnimationFrame(draw);
  164. }
  165. draw();
  166. </script>
  167.  
  168. </body>
  169. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement