1
resposta

Movendo a bolinha pelo teclado

Boa tarde pessoal! Compartilho com vocês minha solução.

<!DOCTYPE html>
<html lang="pt_BR">

<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">

    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            height: 100vh;
        }

        div {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            border: 3px double brown;
            padding: 25px;
            box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);
        }

        div h1,
        h3 {
            margin-bottom: 5px;
            color: brown;
        }

        canvas {
            background-color: lightgray;
        }
    </style>

    <title>Lógica de Programação II</title>
</head>

<body>
    <div>
        <h1>04 - Movendo elementos: animações simples</h1>
        <h3>08 - Movendo a bolinha pelo teclado</h3>

        <canvas width="600" height="400"></canvas>

    </div>

    <script>

        // Declaração das constantes.
        const canvas = document.querySelector("canvas");
        const context = canvas.getContext("2d");

        // Declaração das variáveis.
        var x = 20;
        var y = 20;

        var left = 37;
        var up = 38;
        var right = 39;
        var down = 40;

        var rate = 10;

        // Função responsável por desenhar o círculo.
        function drawCircle(x, y, radius) {
            context.fillStyle = "blue";
            context.beginPath();
            context.arc(x, y, radius, 0, 2 * Math.PI);
            context.fill();
        }

        // Função responsável por limpar a tela.
        function clearCanvas() {
            context.clearRect(0, 0, 600, 400);
        }

        // Função responsável por estar atualizando a tela.
        function updateCanvas() {
            clearCanvas();
            drawCircle(x, y, 10);
        }

        // Função responsável por capturar as teclas pressionadas.
        function readKeyboard(e) {
            switch (e.keyCode) {
                case left:
                    x = x <= 10 ? x : x - rate;
                    break;
                case up:
                    y = y <= 10 ? y : y - rate;
                    break;
                case right:
                    x = x >= 590 ? x : x + rate;
                    break;
                case down:
                    y = y >= 390 ? y : y + rate;
                    break;
            }
        }

        setInterval(updateCanvas, 20);
        document.onkeydown = readKeyboard;

    </script>
</body>

</html>
1 resposta

Olá, Wesley! Tudo bem por aí?

Mandou bem, sua solução está correta!

Caso tenha ficado com alguma dúvida não deixe de compartilhar com a gente.

Continue praticando.

Bons estudos e até mais!