Olá pessoal,
Como a ideia é logica, tentei neste exercício eliminar todas as possibilidades para realizar a tarefa com as 3 teclas (Shift, Alt e Crtl). Não sei se daria para enxugar mais o código para realizar a tarefa interagindo junto com o usuário.
<h1>..:: Desenha Circulo ::..</h1>
<canvas id="tela" width="600" height="400"></canvas>
<h3>Status</h3>
<table>
<tr>
<td>Cor do circulo em HEX (<font color="red">botão direito</font>)</td>
<td><input id="cor" size="4" value="#0000FF"></td>
</tr>
<tr>
<td>Incremento <font color="red">SHIFT</font> /Decremento <font color="red">ALT ou CTRL</font></td>
<td><input id="botaoShiftAlt" size="4" value="5"></td>
</tr>
<tr>
<td>Valor atual do <font color="red">raio</font></td>
<td><input id="valorRaio" size="4" value="10"></td>
</tr>
</table>
<script>
var tela = document.getElementById('tela');
var lapis = tela.getContext('2d');
lapis.fillStyle = 'grey';
lapis.fillRect(0, 0, 600, 400);
var corHexa = '#';
//Valor padrão do raio
var raio = document.getElementById('valorRaio');
console.log(raio);
raio = parseInt(raio.value);
console.log(raio)
function corCirculo() {
var hexadecimais = '0123456789ABCDEF';
corHexa = '#';
for (var i = 0; i < 6; i++ ) {
corHexa += hexadecimais[Math.floor(Math.random() * 16)];
}
document.getElementById('cor').value = corHexa;
return false;
}
tela.oncontextmenu = corCirculo;
function desenhaCirculo(evento) {
//Cor do circulo
var corCirculo = document.getElementById('cor').value;
console.log(corCirculo);
//Valor do incremento para o botao Shift
var botaoShiftAlt = document.getElementById('botaoShiftAlt');
console.log(botaoShiftAlt)
botaoShiftAlt = parseInt(botaoShiftAlt.value);
console.log(botaoShiftAlt)
var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;
lapis.fillStyle = corCirculo;
lapis.beginPath();
var raioAnterior = raio;
//Variavel que indica se ira desenhar o circulo
var sai = false;
if ( (evento.altKey == true && evento.ctrlKey == true) || (evento.ctrlKey == true && evento.shiftKey) || (evento.altKey == true && evento.shiftKey) ) {
alert('Atenção só é permitido aperta uma tecla...');
sai = true;
} else if (evento.altKey == true || evento.ctrlKey == true ) {
raio -= botaoShiftAlt;
} else if (evento.shiftKey == true) {
raio += botaoShiftAlt;
}
console.log(raio);
if (sai == false) {
if (raio > 40) {
alert('Atenção!!!\nRaio ultrapassou 40.');
raio = raioAnterior;
} else if (raio <= 0) {
alert('Atenção!!!\nRaio inferior a 0.');
raio = raioAnterior;
} else {
lapis.arc(x, y, raio, 0, 2 * 3.14);
lapis.fill();
console.log(x + ',' + y);
}
}
document.getElementById('valorRaio').value = raio;
}
tela.onclick = desenhaCirculo;
</script>