Selasa, 20 Mei 2025

GEMULAR

 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Snake Game</title>

    <style>

        canvas {

            border: 1px solid black;

        }

    </style>

</head>

<body>

    <canvas id="gameCanvas" width="400" height="400"></canvas>

    <script>

        const canvas = document.getElementById('gameCanvas');

        const ctx = canvas.getContext('2d');

        

        const gridSize = 20;

        const tileCount = canvas.width / gridSize;

        

        let snake = [

            {x: 10, y: 10},

        ];

        let food = {x: 15, y: 15};

        let dx = 0;

        let dy = 0;

        let score = 0;

        

        function drawGame() {

            clearCanvas();

            moveSnake();

            drawSnake();

            drawFood();

            checkCollision();

            setTimeout(drawGame, 100);

        }

        

        function clearCanvas() {

            ctx.fillStyle = 'white';

            ctx.fillRect(0, 0, canvas.width, canvas.height);

        }

        

        function moveSnake() {

            const head = {x: snake[0].x + dx, y: snake[0].y + dy};

            snake.unshift(head);

            

            if (head.x === food.x && head.y === food.y) {

                score++;

                placeFood();

            } else {

                snake.pop();

            }

        }

        

        function drawSnake() {

            ctx.fillStyle = 'green';

            snake.forEach(segment => {

                ctx.fillRect(segment.x * gridSize, segment.y * gridSize, gridSize - 2, gridSize - 2);

            });

        }

        

        function drawFood() {

            ctx.fillStyle = 'red';

            ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize - 2, gridSize - 2);

        }

        

        function placeFood() {

            food.x = Math.floor(Math.random() * tileCount);

            food.y = Math.floor(Math.random() * tileCount);

        }

        

        function checkCollision() {

            if (snake[0].x < 0 || snake[0].x >= tileCount || snake[0].y < 0 || snake[0].y >= tileCount) {

                resetGame();

            }

            

            for (let i = 1; i < snake.length; i++) {

                if (snake[i].x === snake[0].x && snake[i].y === snake[0].y) {

                    resetGame();

                }

            }

        }

        

        function resetGame() {

            alert('Game Over! Score: ' + score);

            snake = [{x: 10, y: 10}];

            food = {x: 15, y: 15};

            dx = 0;

            dy = 0;

            score = 0;

        }

        

        document.addEventListener('keydown', changeDirection);

        

        function changeDirection(event) {

            const LEFT_KEY = 37;

            const RIGHT_KEY = 39;

            const UP_KEY = 38;

            const DOWN_KEY = 40;

            

            const keyPressed = event.keyCode;

            const goingUp = dy === -1;

            const goingDown = dy === 1;

            const goingRight = dx === 1;

            const goingLeft = dx === -1;

            

            if (keyPressed === LEFT_KEY && !goingRight) {

                dx = -1;

                dy = 0;

            }

            if (keyPressed === UP_KEY && !goingDown) {

                dx = 0;

                dy = -1;

            }

            if (keyPressed === RIGHT_KEY && !goingLeft) {

                dx = 1;

                dy = 0;

            }

            if (keyPressed === DOWN_KEY && !goingUp) {

                dx = 0;

                dy = 1;

            }

        }

        

        drawGame();

    </script>

</body>

</html>

Tidak ada komentar:

Posting Komentar

Shortcut Key MS.Word

 20 Kombinasi Tombol Microsoft Word yang Paling Sering Digunakan 1. Ctrl + C Menyalin teks atau objek 2. Ctrl + X Memindahkan teks 3. Ctrl +...