5
respostas

Duvida do exercio

<canvas width="600" height= "400"> </canvas>
<script>
var tela = document.querySelector("canvas");
var pencil= tela.getContext("2d");
pencil.fillStyle ="grey";
pencil.fillRect(0,0,600,400);
var raio = 10;
function desenhaCirculo(x,y,raio,cor){
pencil.fillStyle ="cor";
pencil.beginPath();

pencil.arc(x,y,raio,0,2*Math.PI);
pencil.fill();
}
desenhaCirculo(300,200,raio +20,"red");
desenhaCirculo(300,200,raio + 10 ,"white");
desenhaCirculo(300,200,raio, "red");
function dispara(envento){
var x= envento.pageX- tela.offsetLeft;
var y= envento.pageY-tela.offsetTop;

var Xacertou1= x > 300 - raio;
var Xacertou2 = x < 300 + raio;
var Yacertou1 = y < 200 - raio;
var Yacertou2= y >  200 + raio;
if(Xacertou1 && Xacertou2 && Yacertou1 && Yacertou2)
{ 
    alert("Voce acertou");

    }


    }
    tela.onclick= dispara;


</script>
5 respostas

Boa Tarde Joel, tudo bom? Qual é sua duvida com relação a esse exercício? Onde você sentiu dificuldade?

A minha dificuldade é que o programa não esta a funçionar cmo deve ser ja tentei encotrar o erro mais não consigo

Olá amigo, notei alguns probleminhas no código. Eu apaguei as linhas:

pencil.fillStyle ="grey"; pencil.fillRect(0,0,600,400);

Para ver o que tava acontecendo atrás desse preenchimento. E realmente está estático.

Creio que o problema esteja basicamente na função dispara, pois ela recebe um parâmetro envento, mas na hora que você chamou a função não configurou nenhum parâmetro pra ela.

Tem a questão que precisa de uma função para sortear onde irá aparecer o alvo, entre outras funções.

Creio que ficará mais claro o uso dessas funções ao longo do curso

Espero ter ajudado

Oi Joel Pedro Garcia Algumas observações:

  • a cor seria gray cinza em inglês.
  • pencil.fillStyle ="cor"; //Aqui vc tem que colocar a variável cor e não a palavra cor.
  • a lógica de acerto também está incorreta. Você deve considerar o raio, uma implementação é a seguinte:
if((x > alvoX - raio) && (x < alvoX + raio) &&
                (y > alvoY - raio) && (y < alvoY + raio)) {
                pontos = pontos+1;
                        alert("acertou o alvo!");
                        pontosDoJogo(pontos);
        }

Espero ter ajudado. Bons estudos.

Oi Joel ainda resta alguma dúvida a respeito desse exercício ou já foi solucionada?