Boa tarde Devs! Compartilho com vocês minha solução.
<!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;
}
</style>
<title>Lógica de Programação II</title>
</head>
<body>
<div>
<h1>05 - Nosso primeiro jogo</h1>
<h3>08 - Desenhe obras de arte</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 draw = false;
var currentColor = "blue";
var xRed = 0;
var xGreen = 50;
var xBlue = 100;
var ySquares = 0;
var sizeSquares = 50;
// Função responsável por desenhar um quadrado na tela.
function drawSquare(x, y, sideSize, color) {
context.fillStyle = color;
context.fillRect(x, y, sideSize, sideSize)
context.fill();
}
// Função responsável por desenhar um círculo na tela.
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 a paleta de cores na tela.
function drawColorPalette() {
drawSquare(xRed, ySquares, sizeSquares, 'red');
drawSquare(xGreen, ySquares, sizeSquares, 'green');
drawSquare(xBlue, ySquares, sizeSquares, 'blue');
}
// 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 capturar os movimentos do mouse.
function dealWithMouseMovement(e) {
let [x, y] = coordinates(e);
if (draw && y > sizeSquares + 5) {
drawCircle(x, y, 5, currentColor);
}
if (y <= sizeSquares) {
if (x >= xRed && x <= sizeSquares) {
currentColor = "red";
} else if (x >= xGreen && x <= xGreen + sizeSquares) {
currentColor = "green";
} else if (x >= xBlue && x <= xBlue + sizeSquares) {
currentColor = "blue";
}
}
}
// Mostra os quadrados de seleção de cores.
drawColorPalette();
canvas.onmousemove = dealWithMouseMovement;
canvas.onmousedown = () => { draw = true; };
canvas.onmouseup = () => { draw = false; };
</script>
</body>
</html>