lemansky

Untitled

Dec 1st, 2020
574
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Document</title>
  7.     <script>
  8.  
  9.         document.addEventListener('DOMContentLoaded', function(){
  10.             const canvas = document.getElementById("canvasId");
  11.             const canvasId = canvas.getContext("2d");
  12.            
  13.             let player = new Player(canvas.width/2 - 100/2, canvas.height - 20, 100, 20);
  14.             let ball = new Ball(canvas.width/2, canvas.height - player.height - 20, 20, 0, 0);
  15.             let brickArray = [];
  16.             let colors = ['red', 'yellow', 'pink', 'orange', 'teal'];
  17.             for (let i = 0; i < 9; i++) {
  18.                let randomColor = colors[Math.floor(Math.random()*5)];
  19.                let brick = new Brick(10 + i*110, 0, 100, 20, randomColor);
  20.                brickArray.push(brick);
  21.            }          
  22.  
  23.             document.addEventListener("mousemove", function(evt){
  24.                 const mouse = mouse_player1(evt, canvas);
  25.                 player.x = mouse.x - player.width/2;
  26.                 // do some tasks
  27.             });
  28.  
  29.            canvas.addEventListener('click', function(){
  30.                reset();
  31.                ball.speedX = Math.floor(Math.random()*2) == 0 ? -10 : 10;
  32.                ball.speedY = -13;
  33.            })
  34.  
  35.            const reset = () => {
  36.                 ball.x = canvas.width/2;
  37.                 ball.y = canvas.height - player.height - ball.r;
  38.                 ball.speedX = 0;
  39.                 ball.speedY = 0;
  40.                 console.log('game over');
  41.             }
  42.  
  43.             const executeTasks = () => {
  44.                 moveTask();
  45.                 drawTask();
  46.             }
  47.  
  48.             const moveTask = () => {
  49.                 ball.x += ball.speedX;
  50.                 ball.y += ball.speedY;
  51.  
  52.                 if(ball.x + ball.r >= canvas.width || ball.x - ball.r <= 0){
  53.                    ball.speedX = -ball.speedX;
  54.                }
  55.  
  56.                if(ball.y - ball.r - 20 <= 0){
  57.                    for (let i = 0; i < brickArray.length; i++) {
  58.                        if(ball.x + ball.r >=  brickArray[i].x && ball.x - ball.r <=  brickArray[i].x +  brickArray[i].width){
  59.                            brickArray[i].height = 0;
  60.                         }
  61.                     }
  62.                    
  63.                     ball.speedY = -ball.speedY;
  64.  
  65.                 }
  66.  
  67.                 if(ball.y + ball.r + player.height >= canvas.height){
  68.                     if(ball.x + ball.r >= player.x && ball.x - ball.r <= player.x + player.width){
  69.                        ball.speedY = -ball.speedY;
  70.                     } else {
  71.                         reset();
  72.                     }
  73.                 }
  74.             }
  75.  
  76.             const drawTask = () => {
  77.                 canvasId.fillStyle = "black";
  78.                 canvasId.fillRect(0, 0, canvas.width, canvas.height);
  79.  
  80.                 canvasId.fillStyle = "green";
  81.                 canvasId.beginPath();
  82.                 canvasId.arc(ball.x, ball.y, 20, 0, Math.PI*2);
  83.                 canvasId.fill();
  84.                 canvasId.closePath();
  85.  
  86.                 canvasId.fillStyle = "white";
  87.                 canvasId.fillRect(player.x, player.y, player.width, player.height);
  88.  
  89.                 // for (let i = 0; i < brickArray.length; i++) {
  90.                //     canvasId.fillStyle = brickArray[i].color;
  91.                //     canvasId.fillRect(brickArray[i].x, brickArray[i].y, brickArray[i].width, brickArray[i].height);
  92.                // }
  93.                brickArray.forEach((item) =>{
  94.                     console.log(item);
  95.                     canvasId.fillStyle = item.color;
  96.                     canvasId.fillRect(item.x, item.y, item.width, item.height);
  97.                 });
  98.             }
  99.             setInterval(executeTasks, 33);
  100.         });
  101.  
  102.         class Ball{
  103.             constructor(x, y, radius, speedX, speedY){
  104.                 this.x = x;
  105.                 this.y = y;
  106.                 this.r = radius;
  107.                 this.speedX = speedX;
  108.                 this.speedY = speedY;
  109.             }
  110.         }
  111.  
  112.         class Player{
  113.             constructor(x, y, width, height){
  114.                 this.x = x;
  115.                 this.y = y;
  116.                 this.width = width;
  117.                 this.height = height;
  118.             }
  119.         }
  120.  
  121.         class Brick{
  122.             constructor(x, y, width, height, color){
  123.                 this.x = x;
  124.                 this.y = y;
  125.                 this.width = width;
  126.                 this.height = height;
  127.                 this.color = color;
  128.             }
  129.         }
  130.  
  131.         const mouse_player1 = (evt, canvas) => {
  132.             let rect = canvas.getBoundingClientRect(); // взима позицията на платното в документа, в случай, че то не започва от горния ляв ъгъл
  133.             let mouseX = evt.clientX - rect.left; // позицията на курсора по хоризонтала
  134.             let mouseY = evt.clientY - rect.top; // позиията на курсора по вертикала
  135.             return {
  136.                 x: mouseX,
  137.                 y: mouseY,
  138.             } // фунцкията връша два параметъра, x и y
  139.         }
  140.  
  141.            
  142.     </script>
  143.     <style>
  144.         #canvasId{
  145.             background:black;
  146.         }
  147.     </style>
  148. </head>
  149. <body>
  150.     <canvas id="canvasId" width="1000" height="600"></canvas>
  151. </body>
  152. </html>
RAW Paste Data