3
respostas

Minha Solução

Fala rapazeada, tudo bem? Segue a solução que encontrei. Depois de ter chegado ao resultado, olhei a resposta do professor e vi que a idéia é a mesma, porém de uma forma diferente.

Obs 1: sempre começo programar iniciando com DOCTYPE etc, uso "meta charset" etc, mesmo que não tenha texto, puramente para fixar sempre na minha cabeça todo o conteúdo.

Obs 2: resolvi tentar escrever tudo em inglês, pois essa mistura de português com inglês está me incomodando. : ) Não sei se é frescura ou não, mas é isso. kkkk

grande abraço!

<DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Colorful Balls</title>
        <link rel="icon" href="icon.png">
    </head>
<body>        

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

    <script>

        let screen = document.querySelector("canvas");
        let brush = screen.getContext("2d");

        brush.fillStyle = "gray";
        brush.fillRect(0, 0, 600, 400);

        let color = ["blue", "red", "green"]
        let colorPosition = 0;

        function toDrawColorfulBalls(event) {

            let x = event.pageX - screen.offsetLeft;
            let y = event.pageY - screen.offsetTop;

            if(colorPosition > 2) {

                colorPosition = 0;
            }

            brush.fillStyle = color[colorPosition];
            colorPosition++;
            brush.beginPath();
            brush.arc(x, y, 10, 0, 2 * 3.14);
            brush.fill()

            return false;

        }

        screen.oncontextmenu = toDrawColorfulBalls;
        screen.onclick = toDrawColorfulBalls;

    </script>    
</body>
</html>    
3 respostas

Oi Caue tudo bem?

Testei aqui e funcionou certinho!

Você é um cara que gosta de desafios!!! Vou te propor um, faça um código que toda vez que clicar saia uma bolinha com cor aleatória dentro de todas as cores que existem!! Topa?

Olá Caue, tudo certo?

Seu código ficou legal e essa de escrever em inglês é bacana para treinar o idioma.

Agora me tira uma dúvida forma de declarar variável utilizando a palavra "let" foi abordada no curso? Porque até agora só me lembro de ver declarar variável com a palavra "var".

Att

Fala André, tudo bem? Desafio aceito, vamo q vamo. Vou pesquisar esse paranauê aí. Em breve coloco o resultado, se consegui ou não. : )

Obrigado pela ajuda de sempre!

Oi Ricardo, tudo bem? O Let realmente ainda não foi introduzido em aula, pelo menos até onde eu tenho assistido. Ele surgiu na última implementação do ES6 em 2015. Basicamente o Let e o Var são quase idênticos, a diferença está no escopo a qual eles são declarados. Até então tínhamos o escopo global e local. Com o surgimento do Let no ES6, surgiu também o escopo de bloco, ou seja tudo aquilo que está entre {} (Entenda aqui {} para estruturas no geral, como if, while, for, estruturas condicionais, repetição etc. O let declarado dentro de um if, por exemplo, só irá funcionar dentro desse if. Você não conseguirá manipular esse Let em uma funçao fora do escopo. Lembrando que é o Let que foi declarado dentro desse bloco. O mesmo não acontece para o Var, pois não existe escopo de bloco para Var. Logo um Var dentro de um if pode ser chamado dentro de uma função.

Escopo global = var ou let dentro do seu script. Escopo local = var ou let dentro de uma função. (só funciona dentro da função). Escopo de bloco = let (só funciona dentro do bloco) var, não possui escopo de bloco, então irá funcionar fora dele tb.

É isso que tenho lido e estudado. Espero ter ajudado e se falei muita besteira, me corrijam please! ; )

Grande abraço!