Oi Luiz, tudo bem com você?
Agradeço por aguardar um retorno nosso.
Ao testar o seu código ele está funcionando corretamente e a mudança de cor quando acerta ficou muito legal, meus parabéns!
Para que possamos exibir a pontuação na tela, primeiro temos que criar um elemento HTML que será responsável por exibir o texto dessa pontuação e para isso, podemos utilizar o elemento parágrafo, como mostro abaixo:
<p></p>
Além disso, temos que identificar esse elemento de forma única, pois, através do JavaScript, iremos inserir a pontuação do usuário neste elemento <p>
quando houver um acerto. Como identificação, utilizaremos o atributo id
:
<p id="pontos"> </p>
Após isso, precisamos criar uma variável responsável por coletar os pontos, outra variável para capturar o elemento <p>
como mostro abaixo:
var pontos = 0;
var areaQueExibePontos = document.querySelector('#pontos');
Indo adiante, dentro da função dispara(evento)
, precisaremos incrementar a contagem de pontos quando o usuário acertar e além disso será necessário inserir essa quantidade no elemento parágrafo que foi selecionado:
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)) {
pontos++
alert('Acertou');
areaQueExibePontos.textContent = "Pontuação: " + pontos;
}
Com isso, será possível acessar na parte inferior do jogo, uma área que mostra a pontuação. Segue abaixo o código completo e o resultado de execução:
Código Completo:
<canvas width="600" height="400"></canvas>
<p id="pontos"> </p>
<script>
// busca o elemento do HTML que receberá a pontuação do jogador
var areaQueExibePontos = document.querySelector('#pontos');
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;
var pontos = 0; // essa linha
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, 10, 'red');
}
function posicaoAlvo(maximo) {
return Math.floor(Math.random() * maximo);
}
function atualizaTela(){
limpaTela();
xAleatorio = posicaoAlvo(600);
yAleatorio = posicaoAlvo(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)) {
pontos++
alert('Acertou');
areaQueExibePontos.textContent = "Pontuação: " + pontos;
}
}
tela.onclick = dispara;
</script>
Resultado:
Conte sempre com o fórum da Alura para evoluir seus estudos.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!