Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Duvida do exercio

Ola pessoal o exercicio não esta a transmitir a mensagem quando acertamos na bolinha

6 respostas

Olá Joel,

me manda o seu código para eu dar uma olhada? Porque ele deveria estar mostrando a mensagem quando acerta a bolinha.

<canvas width="600" height="400"> </canvas>
<script>
 var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    var raio = 10;
      var xAleatorio = sorteiaPosicao(600);
    var yAleatorio = sorteiaPosicao(400);

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();

   }

    function limpaTela() {
    pincel.clearRect(0, 0, 600, 400);

    }

    function desenhaAlvo(x, y) {

    desenhaCirculo(x, y, raio+20, 'red');
    desenhaCirculo(x, y, raio+10, 'white');
    desenhaCirculo(x, y, raio, 'red');

    }

    function sorteiaPosicao(maximo) {

        return Math.floor(Math.random() * maximo);

    }

    function atualizaTela() {
    limpaTela();
     xAleatorio = sorteiaPosicao(600);
     yAleatorio = sorteiaPosicao(400);
    desenhaAlvo(xAleatorio, yAleatorio);
    }

    setInterval(atualizaTela, 1000);

    function dispara(evento){
     var x = evento.pageX - tela.offsetLeft;
     var y = evento.pageY - tela.offsetTop;
    }

    if((x > xAleatorio - raio)
    && (x < xAleatorio + raio)
    && (y > yAleatorio - raio)
    && (y < yAleatorio + raio)){

        alert('Acertou!');
    }

    tela.onclick = dispara;



</script>

este é coodigo

não estou conseguindo visualizar os codigos que escrevo no sublime através do chrome pois aparece a tela "sua conexao com esse site não é segura" o que faço?

solução!

Olá Joel,

o problema está na chave que fecha a função dispara. Neste momento o código está assim:

function dispara(evento){
     var x = evento.pageX - tela.offsetLeft;
     var y = evento.pageY - tela.offsetTop;
}          //chave problemática

if((x > xAleatorio - raio)
  && (x < xAleatorio + raio)
  && (y > yAleatorio - raio)
  && (y < yAleatorio + raio)){
    alert('Acertou!');
}

note que a chave da função fechou logo depois da declaração da variável y. Ou seja, toda a comparação com o if se a pessoa acertou ou errou o alvo ficou fora do dispara. Por isso que ele não está mostrando que acertou quando você clica/dispara no alvo. Só mover esta chave problemática para depois da chave que fecha o if.

Sarah,

você está tentando abrir os códigos deste curso de lógica de programação? Em teoria, como os códigos deste curso são arquivos locais não deveria haver problema de segurança de site.

Muito obrigado Lucas ja esta a funcionar valeu.