Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fui tentar fazer com outro método e nao consegui

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 * Math.PI);
    pincel.fill();
}

function limpaTela() {

    pincel.clearRect(0, 0, 600, 400);
}

var r = 20
var s = true

function pulsa(){

    if (r>30&&s==false) {r--}
    if (r==30&&s==true) {s=false}
    if (r<20&&s==true) {r++}
    if (r==20&&s==false) {s=true}

//eu sempre me perco no raciocínio na hora de usar if com > e <.

    limpaTela();
    desenhaCirculo(290,190,r,'green');

}

setInterval(pulsa,5)
1 resposta
solução!

Olá, Asafe! Tudo bem contigo?

Desculpe a demora em dar um retorno

Você esta no caminho ;-)

Coloquei abaixo minha solução com comentários utilizando sua ideia!

    /*  Comecei considerando s como true
        Se r é maior ou igual a 20 e s é igual a true
        e r é menor ou igual a 30 e s é igual a true
        Aumente o r
        "Coloquei a comparação dentro de 20 e 30 aumentando
        contanto que s seja true"
    */
    if ((r >= 20 && s == true) && (r <= 30 && s == true)) {
        r++;
    }
    /*Se r maior que 30 e s é igual a true
        s passa a valer false
        Diminua o r
        "Se passar de 30, mudei s para false e agora diminua o valor"
    */
    if (r > 30 && s == true) {
        s = false;
        r--
    }
    /*Se r é maior ou igual a 20 e s é igual a false
        e r é menor ou igual a 30 e s é igual a false
        Continue diminuindo o r
        "Coloquei a mesma comparação dentro de 20 e 30 só que diminuindo,
        e contanto que s seja false"
    */
    if ((r >= 20 && s == false) && (r <= 30 && s == false)) {
        r--;
    }
    /*Se r menor que 20 e s é igual a false
        s passa a valer true
        Agora aumene o valor de r
        "Se passar de 20, mudo s para true e agora aumente o valor"
    */
    if (r < 20 && s == false) {
        s = true;
        r++
    }

Espero ter ajudado, Asafe!

Um abraço e bons estudos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software