Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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:
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);