lemansky

Untitled

Nov 30th, 2020
482
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.             document.addEventListener("mousemove", function(evt){
  16.                 const mouse = mouse_player1(evt, canvas);
  17.                 player.x = mouse.x - player.width/2;
  18.                 // do some tasks
  19.             });
  20.  
  21.             canvas.addEventListener('click', function(){
  22.                 reset();
  23.                 ball.speedX = Math.floor(Math.random()*2) == 0 ? -10 : 10;
  24.                 // if(Math.floor(Math.random()*2) == 0){
  25.                 //     ball.speedX = -10;
  26.                 // } else {
  27.                 //     ball.speedX = 10;
  28.                 // }
  29.                 ball.speedY = -13;
  30.             })
  31.  
  32.             const reset = () => {
  33.                 ball.x = canvas.width/2;
  34.                 ball.y = canvas.height - player.height - ball.r;
  35.                 ball.speedX = 0;
  36.                 ball.speedY = 0;
  37.                 console.log('game over');
  38.             }
  39.  
  40.             const executeTasks = () => {
  41.                 moveTask();
  42.                 drawTask();
  43.             }
  44.  
  45.             const moveTask = () => {
  46.                 ball.x += ball.speedX;
  47.                 ball.y += ball.speedY;
  48.  
  49.                 if(ball.x + ball.r >= canvas.width || ball.x - ball.r <= 0){
  50.                    ball.speedX = -ball.speedX;
  51.                }
  52.  
  53.                if(ball.y - ball.r <= 0){
  54.                    ball.speedY = -ball.speedY;
  55.                }
  56.  
  57.                if(ball.y + ball.r + player.height >= canvas.height){
  58.                     if(ball.x + ball.r >= player.x && ball.x - ball.r <= player.x + player.width){
  59.                        ball.speedY = -ball.speedY;
  60.                     } else {
  61.                         reset();
  62.                     }
  63.                 }
  64.  
  65.             }
  66.  
  67.             const drawTask = () => {
  68.                 canvasId.fillStyle = "black";
  69.                 canvasId.fillRect(0, 0, canvas.width, canvas.height);
  70.  
  71.                 canvasId.fillStyle = "green";
  72.                 canvasId.beginPath();
  73.                 canvasId.arc(ball.x, ball.y, 20, 0, Math.PI*2);
  74.                 canvasId.fill();
  75.                 canvasId.closePath();
  76.  
  77.                 canvasId.fillStyle = "white";
  78.                 canvasId.fillRect(player.x, player.y, player.width, player.height);
  79.             }
  80.  
  81.             setInterval(executeTasks, 33);
  82.  
  83.         });
  84.  
  85.         class Ball{
  86.             constructor(x, y, radius, speedX, speedY){
  87.                 this.x = x;
  88.                 this.y = y;
  89.                 this.r = radius;
  90.                 this.speedX = speedX;
  91.                 this.speedY = speedY;
  92.             }
  93.         }
  94.  
  95.         class Player{
  96.             constructor(x, y, width, height){
  97.                 this.x = x;
  98.                 this.y = y;
  99.                 this.width = width;
  100.                 this.height = height;
  101.             }
  102.         }
  103.  
  104.         const mouse_player1 = (evt, canvas) => {
  105.             let rect = canvas.getBoundingClientRect(); // взима позицията на платното в документа, в случай, че то не започва от горния ляв ъгъл
  106.             let mouseX = evt.clientX - rect.left; // позицията на курсора по хоризонтала
  107.             let mouseY = evt.clientY - rect.top; // позиията на курсора по вертикала
  108.             return {
  109.                 x: mouseX,
  110.                 y: mouseY,
  111.             } // фунцкията връша два параметъра, x и y
  112.         }
  113.  
  114.            
  115.     </script>
  116.     <style>
  117.         #canvasId{
  118.             background:black;
  119.         }
  120.     </style>
  121. </head>
  122. <body>
  123.     <canvas id="canvasId" width="1000" height="600"></canvas>
  124. </body>
  125. </html>
RAW Paste Data