HTML CSS & JAVASCRIPT, YouTube

Ping Pong game using javascript and html

Pong-game-using-javascript-and-html

Coding BD given Ping Pong game using javascript and html. We create ping pong game in javascript. It is the most important part Of html canvas games. We have given more importance to create pong game in javascript. They used pure javascript tutorials because they need highly effective effects. Thank you so much.

Ping Pong game using javascript and html

😍😍 If You like this video Please like, share and subscribe This video.😍😍

😍😍 Check Others Programming Video👇

➡️Responsive website html css javascript | part( 1 ): https://www.youtube.com/watch?v=g0ART2Jc3yw&t=3s

➡️ Responsive Services Section: https://www.youtube.com/watch?v=wvLkyrkoS_w&t=69s

➡️ CSS Clip Path Hover Circle Hover Effects: https://www.youtube.com/watch?v=cRSgoViJdR0

➡️ CSS Responsive CARD Hover Effects & Adding Stroke to Text | Html5 CSS3 2021: https://www.youtube.com/watch?v=QVMJ5PdX7Ag&t=14s

➡️ Neon Light Button Animation Effects on Hover | CSS Snake Border: https://www.youtube.com/watch?v=GtVSF-efdJQ&t=102s

➡️ Responsive Box Model Web Design Using CSS Flexbox: https://www.youtube.com/watch?v=03RuVB6B5KQ

➡️ Digital Clock with Animated Progress-bar | HTML CSS & Vanilla Javascript: https://www.youtube.com/watch?v=6A6HpxMmfX4

➡️ How to create a light to dark mode for HTML CSS & Vanilla Javascript 2021: https://www.youtube.com/watch?v=43FbR6ailIk&t=28s

➡️Scroll top button : https://www.youtube.com/watch?v=9fDEJkXQIIs&t=77s

Here is all Source code. You can follow this steps:

  1. Create 1 folder
  2. create 1 HTML file: index.html
  3. create 1 JavaScript file: script.js
  4. copy HTML code and pest HTML file, copy JavaScript code and past JavaScript file
  5. Now give a smile and jump out loud. 😍😍
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ping Pong Game</title>
    <style>
        body{
            background: #000;
        }
        canvas {
            display: block;
            position: absolute;
            border: 2px solid #ff3;;
            margin: auto;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
        }
    </style>
</head>
<body>
    <script src="./script.js"></script>
</body>
</html>
var

  /**
   * Constants
   */
  WIDTH = 700,
  HEIGHT = 600,

  pi = Math.PI,

  UpArrow = 38,
  DownArrow = 40,

  /**
   * Game elements
   */
  canvas,
  ctx,
  keystate,

  /**
   * The player paddle
   * 
   * @type {Object}
   */
  player = {
    x: null,
    y: null,

    width: 20,
    height: 100,

    /**
     * Update the position depending on pressed keys
     */
    update: function () {
      if (keystate[UpArrow]) this.y -= 7;
      if (keystate[DownArrow]) this.y += 7;
      // keep the paddle inside of the canvas
      this.y = Math.max(Math.min(this.y, HEIGHT - this.height), 0);
    },

    /**
     * Draw the player paddle to the canvas
     */
    draw: function () {
      ctx.fillRect(this.x, this.y, this.width, this.height);
    }
  },

  /**
   * The ai paddle
   * 
   * @type {Object}
   */
  ai = {
    x: null,
    y: null,

    width: 20,
    height: 100,

    /**
     * Update the position depending on the ball position
     */
    update: function () {
      // calculate ideal position
      var desty = ball.y - (this.height - ball.side) * 0.5;
      // ease the movement towards the ideal position
      this.y += (desty - this.y) * 0.1;
      // keep the paddle inside of the canvas
      this.y = Math.max(Math.min(this.y, HEIGHT - this.height), 0);
    },

    /**
     * Draw the ai paddle to the canvas
     */
    draw: function () {
      ctx.fillRect(this.x, this.y, this.width, this.height);
    }
  },

  /**	
   * The ball object
   * 
   * @type {Object}
   */
  ball = {
    x: null,
    y: null,
    vel: null,

    side: 20,
    speed: 12,

    /**
     * Serves the ball towards the specified side
     * 
     * @param  {number} side 1 right
     *                       -1 left
     */
    serve: function (side) {
      // set the x and y position
      var r = Math.random();
      this.x = side === 1 ? player.x + player.width : ai.x - this.side;
      this.y = (HEIGHT - this.side) * r;
      // calculate out-angle, higher/lower on the y-axis =>
      // steeper angle
      var phi = 0.1 * pi * (1 - 2 * r);
      // set velocity direction and magnitude
      this.vel = {
        x: side * this.speed * Math.cos(phi),
        y: this.speed * Math.sin(phi)
      }
    },

    /**
     * Update the ball position and keep it within the canvas
     */
    update: function () {
      // update position with current velocity
      this.x += this.vel.x;
      this.y += this.vel.y;
      // check if out of the canvas in the y direction
      if (0 > this.y || this.y + this.side > HEIGHT) {
        // calculate and add the right offset, i.e. how far
        // inside of the canvas the ball is
        var offset = this.vel.y < 0 ? 0 - this.y : HEIGHT - (this.y + this.side);
        this.y += 2 * offset;
        // mirror the y velocity
        this.vel.y *= -1;
      }
      // helper function to check intesectiont between two
      // axis aligned bounding boxex (AABB)
      var AABBIntersect = function (ax, ay, aw, ah, bx, by, bw, bh) {
        return ax < bx + bw && ay < by + bh && bx < ax + aw && by < ay + ah;
      };

      // check againts target paddle to check collision in x
      // direction
      var pdle = this.vel.x < 0 ? player : ai;
      if (AABBIntersect(pdle.x, pdle.y, pdle.width, pdle.height,
        this.x, this.y, this.side, this.side)
      ) {
        // set the x position and calculate reflection angle
        this.x = pdle === player ? player.x + player.width : ai.x - this.side;
        var n = (this.y + this.side - pdle.y) / (pdle.height + this.side);
        var phi = 0.25 * pi * (2 * n - 1); // pi/4 = 45
        // calculate smash value and update velocity
        var smash = Math.abs(phi) > 0.2 * pi ? 1.5 : 1;
        this.vel.x = smash * (pdle === player ? 1 : -1) * this.speed * Math.cos(phi);
        this.vel.y = smash * this.speed * Math.sin(phi);
      }

      // reset the ball when ball outside of the canvas in the
      // x direction
      if (0 > this.x + this.side || this.x > WIDTH) {
        this.serve(pdle === player ? 1 : -1);
      }
    },

    /**
     * Draw the ball to the canvas
     */
    draw: function () {
      ctx.fillRect(this.x, this.y, this.side, this.side);
    }
  };

/**
 * Starts the game
 */
function main() {
  // create, initiate and append game canvas
  canvas = document.createElement("canvas");
  canvas.width = WIDTH;
  canvas.height = HEIGHT;
  ctx = canvas.getContext("2d");
  document.body.appendChild(canvas);

  keystate = {};
  // keep track of keyboard presses
  document.addEventListener("keydown", function (evt) {
    keystate[evt.keyCode] = true;
  });
  document.addEventListener("keyup", function (evt) {
    delete keystate[evt.keyCode];
  });

  init(); // initiate game objects

  // game loop function
  var loop = function () {
    update();
    draw();

    window.requestAnimationFrame(loop, canvas);
  };
  window.requestAnimationFrame(loop, canvas);
}

/**
 * Initatite game objects and set start positions
 */
function init() {
  player.x = player.width;
  player.y = (HEIGHT - player.height) / 2;

  ai.x = WIDTH - (player.width + ai.width);
  ai.y = (HEIGHT - ai.height) / 2;

  ball.serve(1);
}

/**
 * Update all game objects
 */
function update() {
  ball.update();
  player.update();
  ai.update();
}

/**
 * Clear canvas and draw all game objects and net
 */
function draw() {
  ctx.fillRect(0, 0, WIDTH, HEIGHT);

  ctx.save();

  ctx.fillStyle = "#ff4";

  ball.draw();
  player.draw();
  ai.draw();

  // draw the net
  var w = 4;
  var x = (WIDTH - w) * 0.5;
  var y = 0;
  var step = HEIGHT / 20; // how many net segments
  while (y < HEIGHT) {
    ctx.fillRect(x, y + step * 0.25, w, step * 0.5);
    y += step;
  }

  ctx.restore();
}

// start and run the game
main();

Don’t Forget to Follow me on all Social Network

YouTube: https://www.youtube.com/channel/UCw9etYfx-25oKB_qt1fFNWw

Facebook Page: https://www.facebook.com/codingbd2021

LinkedIn: https://www.linkedin.com/in/sajjat-ho… 

GitHub: https://github.com/cgsaleh8383

You can see Image Hover Effect

Leave a Reply

Your email address will not be published. Required fields are marked *