This is an old revision of the document!
<!DOCTYPE html> <html lang=“en”> <head>
<meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Ping Pong Game</title> <style> body { margin: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #000; } canvas { background-color: #111; display: block; } </style>
Advertisement
</head> <body>
<canvas id="gameCanvas" width="800" height="400"></canvas> <script> const canvas = document.getElementById('gameCanvas'); const ctx = canvas.getContext('2d');
const paddleWidth = 10; const paddleHeight = 100; let playerY = canvas.height / 2 - paddleHeight / 2; let aiY = canvas.height / 2 - paddleHeight / 2; const ballSize = 10; let ballX = canvas.width / 2; let ballY = canvas.height / 2; let ballSpeedX = 4; let ballSpeedY = 4;
document.addEventListener('mousemove', (e) => { const rect = canvas.getBoundingClientRect(); playerY = e.clientY - rect.top - paddleHeight / 2; });
function drawRect(x, y, w, h, color) { ctx.fillStyle = color; ctx.fillRect(x, y, w, h); }
Advertisement
function drawBall(x, y, size, color) { ctx.fillStyle = color; ctx.fillRect(x, y, size, size); }
function resetBall() { ballX = canvas.width / 2; ballY = canvas.height / 2; ballSpeedX = -ballSpeedX; ballSpeedY = 4 * (Math.random() > 0.5 ? 1 : -1); }
function update() { // Move ball ballX += ballSpeedX; ballY += ballSpeedY;
// Bounce off top and bottom if (ballY <= 0 || ballY + ballSize >= canvas.height) { ballSpeedY = -ballSpeedY; }
// Player paddle collision if ( ballX <= paddleWidth && ballY + ballSize >= playerY && ballY <= playerY + paddleHeight ) { ballSpeedX = -ballSpeedX; }
// AI paddle collision if ( ballX + ballSize >= canvas.width - paddleWidth && ballY + ballSize >= aiY && ballY <= aiY + paddleHeight ) { ballSpeedX = -ballSpeedX; }
Advertisement
// Score and reset if (ballX <= 0 || ballX + ballSize >= canvas.width) { resetBall(); }
// AI movement const aiCenter = aiY + paddleHeight / 2; if (aiCenter < ballY) aiY += 4; else aiY -= 4; }
function draw() { drawRect(0, 0, canvas.width, canvas.height, '#111'); drawRect(0, playerY, paddleWidth, paddleHeight, '#0f0'); drawRect(canvas.width - paddleWidth, aiY, paddleWidth, paddleHeight, '#f00'); drawBall(ballX, ballY, ballSize, '#fff'); }
function gameLoop() { update(); draw(); requestAnimationFrame(gameLoop); }
gameLoop(); </script>
</body> </html>