<canvas width="800" height="600"></canvas>
<button onclick="aleatorizaAlvo()">Iniciar!</button>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
var largura = 800;
var altura = 600;
function desenhaRetangulo() {
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, largura, altura);
}
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, largura, altura);
var raio = 10;
var randomX;
var randomY;
function desenhaCirculo(x, y, raio, cor) {
pincel.fillStyle = cor;
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2 * Math.PI);
pincel.fill();
}
function aleatorizador(maximo) {
randomX = Math.floor(Math.random() * 600);
randomY = Math.floor(Math.random() * 400);
}
function alvo(x, y) {
desenhaCirculo(randomX,randomY, raio + 20, 'red'); // maior círculo
desenhaCirculo(randomX,randomY, raio + 10, 'white');
desenhaCirculo(randomX,randomY, raio, 'red'); // menor circulo
}
function aleatorizaAlvo() {
desenhaRetangulo();
aleatorizador();
alvo();
console.log(randomX + "," + randomY);
}
function dispara(evento) {
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
if (x <= (randomX + 10) && x > (randomX - 10) && y < (randomY + 10) && y > (randomY - 10)) {
console.log("Acertou!");
aleatorizaAlvo();
}
// lógica de acerto?
}
tela.onclick = dispara;
</script>
na realidade não tão tiro ao alvo assim, ele somente resete o alvo em uma nova posição quando você clica nela, fazendo dele mais um teste e pratica de mira, bom pra galera do cs e valorant :)