3
respostas

Deu certo, mas nao consigo aumentar o valor do raio para ver melhor

3 respostas

Olá Matheus, tudo bem com você?

Isso acontece porque a lógica do seu programa contém alguns errinhos, vou te mostrar:

A nossa variável raio começa com 50

Com a primeira verificação que é verdadeira:

if (raio == 50) {
    raio = true;
} 

Mudamos o valor do raio de 50 para true, então ele deixa de ser número, e com isso ele só irá voltar a ter um valor nessa segunda verificação:

if (raio) {
    raio++;
} 

Isso porque o valor true, está associado ao número 1, então o que fizemos na verdade foi transformar o raiode 50, para 1 e agora para 2

Dessa maneira o nosos programa irá continuar funcionando acrescentando de 1 em 1, pois qualquer número positivo é verdadeiro dentro dessa última verificação

Então o fluxo está basicamente assim:

  • Raio = 50
  • Raio = 1
  • Raio = 2 .....49
  • Raio = 50
  • Raio = 1

E quando raio voltar a ser 50, pela verificação inicial voltará a ser 1, por isso que não importa o número que você estava colocando para o raio, pois na primeira verificação você jogava ele para 1, na verdade o que de fato está definindo o tamanho do raio é essa primeira verificação, se você colocar por exemplo:

if ( raio == 500)

Ele irá crescer até 500 e depois voltará a ser 1!

Dessa maneira esses 2 ifs nunca eram executados:

                if (raio == 100) {
                    raio = false;
                }

E por consequência do raio nunca valer false:

else {
    raio--;
}

Para corrigir isso temos que fazer igual o instrutor e ter uma variável de controle de crescimento :)

Qualquer coisa estou a disposição Abraços e Bons Estudos!

Segue a explicação do Geovani ;-)

Ah sim, obrigado. Tinha esquecido que o operador logico tinha valor. Agora deu certo function processa(){ limpatela();

    if(raio==50){
        flag=true;
    }else{
        if(raio==100){
            flag=false;
        }
    }
    if(flag){
        raio++;
    }else{
        raio--;
    }

    desenha(raio);
}

setInterval(processa,20);