Olá, Teria como alcançar o mesmo resultado das cores, sem usar tantos "if" mesmo utilizando "for" ou "while" no código? Ou talvez alguma mudança nesse mesmo código tirando linhas desnecessárias.
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, 600, 400);
function desenhaCirculo(x, y, raio, cor) {
pincel.fillStyle = cor;
pincel.beginPath();
pincel.arc(x, y, raio, 0, 2*3.14);
pincel.fill();
}
for(var x=200;x<500;x=x+100){
var cor="orange";
var tamanho = 50;
var y=200;
if(x==400){
cor="black";
}
desenhaCirculo(x,y,tamanho,cor);
if(x==300){
for(y=100;y<400;y=y+100){
cor="yellow";
if(y==200){
cor="red";
}
if(y==300){
cor="blue";
}
desenhaCirculo(x,y,tamanho,cor);
}
}
}
</script>
Edit: Creio que uma ideia seja formar 3 arrays, com as medidas "x", "y" e as cores, e deixar as coordenadas referenciadas em um ponto.