Antes de iniciar as novas aulas, tentei criar o jogo do alvo por conta própria, utilizando os conhecimentos anteriores. Tive apenas que pesquisar no Google como usar o Math.random para gerar um número aleatório entre dois valores. Fora isso, tudo já havia sido passado pelo professor.
Funcionou! Falta só eu acertar a questão do limite que o alvo deve aparecer. Eu utilizei tela.offsetLeft e tela.offsetTop, mesmo assim ele segue vazando do canvas.
Vamos ver nas aulas o que posso melhorar!
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
var limiteHorizontal = 600
var limiteVertical = 400
pincel.fillStyle = 'white';
pincel.fillRect(0, 0, limiteHorizontal, limiteVertical);
var raioMenor = 10;
var raioMeio = raioMenor + 10
var raioMaior = raioMeio +10
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, limiteHorizontal, limiteVertical);
}
function atualizaTela() {
function xAleatorio() {
return Math.random() * ((limiteHorizontal - raioMaior) - (tela.offsetLeft + raioMaior));
}
function yAleatorio() {
return Math.random() * ((limiteVertical - raioMaior) - (tela.offsetTop + raioMaior));
}
var xAleatorio = xAleatorio();
var yAleatorio = yAleatorio();
limpaTela();
desenhaCirculo(xAleatorio, yAleatorio, raioMaior, 'red'); // maior círculo
desenhaCirculo(xAleatorio, yAleatorio, raioMeio, 'white');
desenhaCirculo(xAleatorio, yAleatorio, raioMenor, 'red'); // menor circulo
function dispara(evento) {
var xDisparado = evento.pageX - tela.offsetLeft;
var yDisparado = evento.pageY - tela.offsetTop;
if(xDisparado >= (xAleatorio - raioMenor) && xDisparado <= (xAleatorio + raioMenor) && yDisparado >= (yAleatorio - raioMenor) && yDisparado <= (yAleatorio + raioMenor)) {
alert("Acertou!");
}
}
tela.onclick = dispara;
}
setInterval(atualizaTela, 1000);
</script>