Não sei o que está de errado ele exibe apenas uma vez o alvo
<canvas width="800" height="600"></canvas>
<style type="text/css">
canvas{
border:2px solid #4455BB;
border-radius: 10px;
}
</style>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
var xAlvo;
var yAlvo;
var raioI = 49;
function limpaTela(){
pincel.clearRect(0, 0, 800, 600);
}
function desenhaCirculo(x, y, raio, cor) {
pincel.fillStyle = cor;
pincel.beginPath();
pincel.arc(x, y, raioI, 0, 2*Math.PI);
pincel.fill();
}
function densehaAlvo(x, y){
var i = 7;
while(i < raioI) {
desenhaCirculo(x, y, raioI, 'red');
raioI -= i;
desenhaCirculo(x, y, raioI, 'white');
raioI -= i;
}
/*while(i < raioI){
pincel.fillStyle = 'red';
pincel.beginPath();
pincel.arc(x, y, raioI, 0, 2*Math.PI);
pincel.fill();
raioI -= i;
pincel.fillStyle = 'white';
pincel.beginPath();
pincel.arc(x, y, raioI, 0, 2*Math.PI);
pincel.fill();
raioI -= i;
}*/
//console.log(raioI)
}
//densehaAlvo(xAlvo, yAlvo);
function sorteiaPosiçao(maximo) {
return Math.floor(Math.random()*maximo);
}
function movimenta() {
limpaTela();
xAlvo = sorteiaPosiçao(600);
yAlvo = sorteiaPosiçao(400);
console.log(xAlvo + ',' + yAlvo)
densehaAlvo(xAlvo, yAlvo);
}
setInterval(movimenta, 3000)
tela.onclick = function(evento){
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
if(x <= xAlvo+raioI && x >= xAlvo-raioI && y <= yAlvo+raioI && y >= yAlvo-raioI){
console.log('Acertou');
}else{
console.log(x + ',' + y);
}
}
</script>