Untitled

 avatar
unknown
plain_text
14 days ago
4.3 kB
3
Indexable
<!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;
            padding: 0;
            background-color: #3e2723; /* brown color for monkey background */
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            overflow: hidden;
        }
        canvas {
            border: 2px solid #fff;
        }
    </style>
</head>
<body>
    <canvas id="pingPong" width="800" height="600"></canvas>

    <script>
        const canvas = document.getElementById("pingPong");
        const ctx = canvas.getContext("2d");

        // Game settings
        const paddleWidth = 15;
        const paddleHeight = 100;
        const ballRadius = 15;

        let leftPaddleY = canvas.height / 2 - paddleHeight / 2;
        let rightPaddleY = canvas.height / 2 - paddleHeight / 2;
        let ballX = canvas.width / 2;
        let ballY = canvas.height / 2;
        let ballSpeedX = 7 * (Math.random() < 0.5 ? 1 : -1);
        let ballSpeedY = 7 * (Math.random() < 0.5 ? 1 : -1);
        const paddleSpeed = 10;

        // Controls
        let upPressed = false;
        let downPressed = false;
        let upArrowPressed = false;
        let downArrowPressed = false;

        // Event listeners for controls
        document.addEventListener("keydown", keyDownHandler, false);
        document.addEventListener("keyup", keyUpHandler, false);

        function keyDownHandler(e) {
            if (e.key === "w") upPressed = true;
            if (e.key === "s") downPressed = true;
            if (e.key === "ArrowUp") upArrowPressed = true;
            if (e.key === "ArrowDown") downArrowPressed = true;
        }

        function keyUpHandler(e) {
            if (e.key === "w") upPressed = false;
            if (e.key === "s") downPressed = false;
            if (e.key === "ArrowUp") upArrowPressed = false;
            if (e.key === "ArrowDown") downArrowPressed = false;
        }

        // Function to draw the game elements
        function draw() {
            // Clear the canvas
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            // Draw paddles
            ctx.fillStyle = "#fff";
            ctx.fillRect(30, leftPaddleY, paddleWidth, paddleHeight);  // Left paddle
            ctx.fillRect(canvas.width - 30 - paddleWidth, rightPaddleY, paddleWidth, paddleHeight);  // Right paddle

            // Draw ball
            ctx.beginPath();
            ctx.arc(ballX, ballY, ballRadius, 0, Math.PI * 2);
            ctx.fillStyle = "#fff";
            ctx.fill();
            ctx.closePath();

            // Update paddles' movement
            if (upPressed && leftPaddleY > 0) leftPaddleY -= paddleSpeed;
            if (downPressed && leftPaddleY < canvas.height - paddleHeight) leftPaddleY += paddleSpeed;
            if (upArrowPressed && rightPaddleY > 0) rightPaddleY -= paddleSpeed;
            if (downArrowPressed && rightPaddleY < canvas.height - paddleHeight) rightPaddleY += paddleSpeed;

            // Ball movement
            ballX += ballSpeedX;
            ballY += ballSpeedY;

            // Ball collision with top and bottom
            if (ballY - ballRadius <= 0 || ballY + ballRadius >= canvas.height) {
                ballSpeedY = -ballSpeedY;
            }

            // Ball collision with paddles
            if (ballX - ballRadius <= 30 + paddleWidth && ballY > leftPaddleY && ballY < leftPaddleY + paddleHeight ||
                ballX + ballRadius >= canvas.width - 30 - paddleWidth && ballY > rightPaddleY && ballY < rightPaddleY + paddleHeight) {
                ballSpeedX = -ballSpeedX;
            }

            // Ball reset if it goes out of bounds
            if (ballX - ballRadius <= 0 || ballX + ballRadius >= canvas.width) {
                ballX = canvas.width / 2;
                ballY = canvas.height / 2;
                ballSpeedX = 7 * (Math.random() < 0.5 ? 1 : -1);
                ballSpeedY = 7 * (Math.random() < 0.5 ? 1 : -1);
            }

            requestAnimationFrame(draw); // Keep the game loop running
        }

        // Start drawing
        draw();
    </script>
</body>
</html>
Editor is loading...
Leave a Comment