Olá amigos, na brincadeira de tentar me familiarizar com o "while" acabei por tentar fazer uma "borda" com a dita flor, primeiramente ficou horroroza por conta da falta de simetria, e por isso fui aumentando o código pra que ficasse tudo assim, simétrico! Nesse exemplo eu mantive então o miolo sempre vermelho, a alternância entre Laranja, Vermelho e Preto nas linhas, e os círculos internos Azuis e os externos Amarelos. Até aí tudo bem, fiz um loop infinito e travei o teste duas vezes, aprendi com meus erros e só por isso já valeu a prática. Minha dúvida aqui é se não tinha uma forma de eu "filtrar" essa informação, por exemplo, ao invés de eu fazer as flores, fazer de uma forma as bordas todas amarelas bem externas, depois as azuis mais ao centro e por fim as alternadas, ficando nesse mesmo formato e sem precisar fazer os 4xwhile (while de cima pra baixo, while de baixo pra direita, while da direita em cima pra baixo e por fim while de cima pra direita)? Ppra poder ficar simétrico tive q definir a cor de cada uma das "colunas/linhas" de "flores", depois fazer individualmente as "flores" nas bordas, já q elas sempre ficam com dois círculos amarelos e sem nenhum círculo azul...
Enfim, com o q foi passado até agora na aula, eu perdi alguma forma de fazer isso ficar mais "conciso"?
Muito obrigado!
<canvas width="624" height="480"></canvas>
<script>
var tela = document.querySelector("canvas");
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgrey';
pincel.fillRect(0, 0, 624, 480);
var radius = 8;
function drawCircle(x, y, radius, color){
pincel.fillStyle = color;
pincel.beginPath();
pincel.arc(x, y, radius, 0, 2*3.14);
pincel.fill();
}
function drawFlowerTop(x, y){
drawCircle(x, y-16, radius, 'yellow');
drawCircle(x, y+16, radius, 'blue');
drawCircle(x+16, y, radius, 'black');
drawCircle(x-16, y, radius, 'orange');
drawCircle(x, y, radius, 'red');
}
function drawFlowerLeft(x, y){
drawCircle(x, y-16, radius, 'black');
drawCircle(x, y+16, radius, 'orange');
drawCircle(x+16, y, radius, 'blue');
drawCircle(x-16, y, radius, 'yellow');
drawCircle(x, y, radius, 'red');
}
function drawFlowerBottom(x, y){
drawCircle(x, y-16, radius, 'blue');
drawCircle(x, y+16, radius, 'yellow');
drawCircle(x+16, y, radius, 'orange');
drawCircle(x-16, y, radius, 'black');
drawCircle(x, y, radius, 'red');
}
function drawFlowerRight(x, y){
drawCircle(x, y-16, radius, 'orange');
drawCircle(x, y+16, radius, 'black');
drawCircle(x+16, y, radius, 'yellow');
drawCircle(x-16, y, radius, 'blue');
drawCircle(x, y, radius, 'red');
}
z=radius*3;
x=z*3;
y=z;
/TopLeftFlower/
drawCircle(x/3, y-16, radius, 'yellow');
drawCircle(x/3, y+16, radius, 'orange');
drawCircle(x/3+16, y, radius, 'black');
drawCircle(x/3-16, y, radius, 'yellow');
drawCircle(x/3, y, radius, 'red');
while (x < 580){
drawFlowerTop(x, y);
x = x + (z*2);
}
/TopRightFlower/
drawCircle(x, y-16, radius, 'yellow');
drawCircle(x, y+16, radius, 'black');
drawCircle(x+16, y, radius, 'yellow');
drawCircle(x-16, y, radius, 'orange');
drawCircle(x, y, radius, 'red');
x=z;
y=z*3;
while (y < 450){
drawFlowerLeft(x, y);
y = y + (z*2);
}
/BottomLeftFlower/
drawCircle(x, y-16, radius, 'black');
drawCircle(x, y+16, radius, 'yellow');
drawCircle(x+16, y, radius, 'orange');
drawCircle(x-16, y, radius, 'yellow');
drawCircle(x, y, radius, 'red');
x=z*3;
y=z*19;
while (x < 580){
drawFlowerBottom(x, y);
x = x + (z*2);
}
/BottomRightFlower/
drawCircle(x, y-16, radius, 'orange');
drawCircle(x, y+16, radius, 'yellow');
drawCircle(x+16, y, radius, 'yellow');
drawCircle(x-16, y, radius, 'black');
drawCircle(x, y, radius, 'red');
x=z*25;
y=z*3;
while (y < 450){
drawFlowerRight(x, y);
y = y + (z*2);
}
</script>