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

Mensagem não aparece quando clico no alvo

Acho que fiz o código igual o da aula, mas não aparece a mensagem quando clico no alvo:

<meta charset="UTF-8">

<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;
var yAleatorio;

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,5000);

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>
3 respostas
solução!

Boa tarde, Henrique! Como vai?

Meus olhos treinados de instrutor detectaram o que está acontecendo!

Repare que no if dentro da função dispara(), a última condição está com Y (maiúsculo) quando o correto seria y (minúsculo). Para tudo funcionar como esperado, a sua função dispara() deve ficar assim:

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');
  }
}

Pegou a ideia? Qualquer coisa é só falar!

Obs.: Quando for postar um código no fórum, utilize o botão "inserir código" e cole o seu código no lugar indicado para que o código seja postado corretamente. Eu tive que editar a sua postagem pois o código que vc mandou não estava aparecendo!

Grande abraço e bons estudos, meu aluno!

É verdade. Muito obrigado. Revi 500 vezes e não vi isso!!

Por nada, Henrique! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos, meu aluno!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software