1
resposta

Desenho da flor.

Meu código está funcionando, mas eu queria saber como faço para essa flor que desenhei uma vez se repetir mais vezes, para todos os lados ( direita esquerda, cima baixo), sem ter que ficar declarando as posições de x e y. Já tentei usando o for/while, mas não consegui. :/

<canvas width="600" height="400"></canvas>

<script>

    let canva = document.querySelector ("canvas");
    let pincel = canva.getContext ("2d");
    pincel.fillStyle = "lightblue";
    pincel.fillRect (0, 0, 600, 400);



    function desenhaCirculo (xCirculo, yCirculo, raio, cor){

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc (xCirculo, yCirculo, raio, 0, 2*Math.PI);
        pincel.fill();
    }


    function desenhaFlor (){

        desenhaCirculo (300, 200, 10, "yellow"); //centro
        desenhaCirculo (280, 200, 10, "purple"); //pétala esquerda
        desenhaCirculo (320, 200, 10, "purple"); //pétala direita
        desenhaCirculo (300, 180, 10, "purple"); //pétala superior
        desenhaCirculo (300, 220, 10, "purple"); //pétala inferior

    }


    desenhaFlor ();



</script>
1 resposta

Oi, Priscila :) Eu li sua questão e conseguir fazer aqui, veja se entende:

<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();
  }

  function desenhaFlor(centrox, centroy) {
    //scope da função desenha flor 
    var distanciaEntrePetalas = 20;
    //chamando a função desenha flor, ao invés de dar valores, passamos variavéis para que o cod possa ser mutado - centrox e y.
    desenhaCirculo(centrox, centroy, 10, 'yellow'); //centro
    desenhaCirculo(centrox - distanciaEntrePetalas, centroy, 10, 'red'); //pétala esquerda
    desenhaCirculo(centrox + distanciaEntrePetalas, centroy, 10, 'blue'); //pétala direita
    desenhaCirculo(centrox, centroy - distanciaEntrePetalas, 10, 'black'); //pétala superior
    desenhaCirculo(centrox, centroy + distanciaEntrePetalas, 10, 'purple'); //pétala inferior

  }
  //atribuiu variaveis ao y e deseguinou valor para distancia das flores. Sendo valor de y mutavél, distancia não.

  let y = 0;
  const distancia = 80;
  //aqui o loop externo vertical
  while (y < 400) {
    console.log("A condição é esta: y < 400, e o valor de y é " + y);
    var x = 0;
    //o novo de y é igual o valor antigo de y do que tiver a direita do sinal
    while (x < 600) {
      //loop interno horizontal
      console.log("Meu valor de y: " + y + " e meu valor de x: " + x);
      desenhaFlor(x, y);
      x += distancia
    }
    y += distancia
  }

</script>