Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Implemente seu primeiro jogo

Boa tarde! Compartilho 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>05 - Nosso primeiro jogo</h1>
        <h3>07 - Implemente seu primeiro jogo</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 radiusCircle = 10;
        var coordTargetX = generateCoordinates(600);
        var coordTargetY = generateCoordinates(400);

        // Função responsável por devolver os valores das coordenadas do canvas.
        function coordinates(e) {
            return [e.pageX - canvas.offsetLeft, e.pageY - canvas.offsetTop];
        }

        // Função responsável por desenhar os círculos do alvo.
        function drawCircle(x, y, radius, color) {
            context.fillStyle = color;
            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 desenhar o alvo.
        function drawTarget(x, y) {
            clearCanvas();
            drawCircle(x, y, radiusCircle + 20, "red"); // maior círculo
            drawCircle(x, y, radiusCircle + 10, "white"); // círculo do meio
            drawCircle(x, y, radiusCircle, "red"); // menor circulo
        }

        // Função responsável por informar que o alvo foi atingido.
        function shoot(e) {
            let [x, y] = coordinates(e);
            let [minX, minY, maxX, maxY] = [x - radiusCircle, y - radiusCircle, x + radiusCircle, y + radiusCircle];
            let [targetX, targetY] = [coordTargetX, coordTargetY]

            if (minX <= targetX && targetX <= maxX && minY <= targetY && targetY <= maxY) {
                alert("Você ACERTOU!!!");
            }
        }

        // Função responsável por gerar novas coordenadas.
        function generateCoordinates(limit) {
            return Math.floor(Math.random() * limit);
        }

        // Função responsável por atualizar a posição do alvo.
        function updateTarget() {
            coordTargetX = generateCoordinates(600);
            coordTargetY = generateCoordinates(400);
            drawTarget(coordTargetX, coordTargetY);
        }

        canvas.onclick = shoot;

        drawTarget(coordTargetX, coordTargetY);
        setInterval(updateTarget, 1000);

    </script>
</body>

</html>
1 resposta
solução!

Ficou top.