Boa noite pessoal! Compartilhando meu código.
<!DOCTYPE html>
<html lang="pt_BR">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
div {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 3px double brown;
padding: 25px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);
}
div h1,
h3 {
margin-bottom: 5px;
color: brown;
}
canvas {
background-color: lightgray;
scale: (0.1);
animation: .8s ease-in-out 0s 1 normal both running aparecimento
}
@keyframes aparecimento {
from {
transform: scale(0.1);
}
to {
transform: scale(1.0);
}
}
</style>
<title>Lógica de Programação II</title>
</head>
<body>
<div>
<h1>03 - Interagindo com o usuário</h1>
<h3>10 - Acertando o alvo</h3>
<canvas width="600" height="400"></canvas>
</div>
<script>
// Declaração das constantes.
const canvas = document.querySelector("canvas");
const context = canvas.getContext("2d");
// Declaração das variáveis.
var radiusCircle = 10;
var coordTargetX = 300;
var coordTargetY = 200;
// Função responsável por devolver os valores das coordenadas do canvas.
function coordinates(e) {
return [e.pageX - canvas.offsetLeft, e.pageY - canvas.offsetTop];
}
// Função responsável por desenhar os círculos do alvo.
function drawCircle(x, y, radius, color) {
context.fillStyle = color;
context.beginPath();
context.arc(x, y, radius, 0, 2 * Math.PI);
context.fill();
}
// Função responsável por desenhar o alvo.
function drawTarget(x, y) {
drawCircle(x, y, radiusCircle + 20, "red"); // maior círculo
drawCircle(x, y, radiusCircle + 10, "white");
drawCircle(x, y, radiusCircle, "red"); // menor circulo
}
// Função responsável por informar que o alvo foi atingido.
function shoot(e) {
let [x, y] = coordinates(e);
let [minX, minY, maxX, maxY] = [x - radiusCircle, y - radiusCircle, x + radiusCircle, y + radiusCircle];
let [targetX, targetY] = [coordTargetX, coordTargetY]
if (minX <= targetX && targetX <= maxX && minY <= targetY && targetY <= maxY) {
alert("Você ACERTOU!!!");
}
}
drawTarget(coordTargetX, coordTargetY);
canvas.onclick = shoot;
</script>
</body>
</html>