Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Dúvida no Ex. 1 da Aula 5 - Desafio Final

Olá,

Tive algumas dificuldades e dúvidas nesse exercício, ai vai:

1 - No decorrer das vídeo aulas verifiquei que algumas functions são fechadas com o ; após a } e a maioria não está fechada. Exemplo:

var desenhaAlvo = function(x, y) { circulo(x, y, raio+30, "white"); circulo(x, y, raio+20, "red"); circulo(x, y, raio+10, "white"); circulo(x, y, raio, "red"); }; var circulo = function(x,y,raio, cor) { c.fillStyle = cor; c.beginPath(); c.arc(x,y,raio, 0, 2*Math.PI); c.fill(); }

Existe alguma diferença em utilizar ou não o ; para fechar uma function? Eu não percebi nenhuma...

2 - Algumas functions são chamadas utilizando o () e outras não. Exemplo:

var desenha = function() { limpa(); alvoX = sorteia(600); alvoY = sorteia(400); desenhaAlvo(alvoX, alvoY); }; setInterval(desenha, 3000);

A function limpa foi chamada utilizando o () e a function desenha, que está dentro de setInterval, não.

3 - Gostaria de poder gerar o alvo completamente dentro do canvas, sem deixar o alvo pela metade (fiz algumas tentativas porém não funcionou completamente, vou colar o código no final).

4 - Minha function limpaTela() está limpando o canvas e deixando-o branco. O que estou fazendo de errado?

O meu código:

<!DOCTYPE html>

7 respostas

excedi o número de caracteres, segue o código:

<!DOCTYPE html>

Não entendo pq não é possível visualizar o código.

solução!

Cara seguinte... o limpar tela é você tem que determinar o tamanho que quer limpar... se sua tela 600x600 e voce colocar

c.clearRect(0,0,600,600);

ele vai limpar todo o canvas.

igual o meu canvas tem 750x750;

porem eu quero limpar só uma parte entao coloquei

c.clearRect(15,15,700,700);

Sobre os {}, ;, e etc. Geralmente não da problema, pois com o tempo caiu em desuso.. Mas dependendo do navegador irá dar problema, então aconselho sempre utilizar.

Sobre o alvo ficar pela metade é o seguinte, o meu canvas tem tamnho por exemplo 750x750 então fiz o seguinte

" var geraNumero = function(){ numRandomico = Math.round(Math.random() 750); while (numRandomico < 45 || numRandomico > 710) { numRandomico = 0 numRandomico = Math.round(Math.random() 750); } }"

Determinei o máximo que ele pode passar, caso ele passe do que preciso ele recalcula até fica entre a faixa que eu quero, para que o raio dele nao fique para fora. Ai você precisa testar.

Att. Guilherme Urbinatti.

  • A função limpaTela funciona, só que ela limpa o canvas e muda para a cor branca o fundo da tela ao invés de continuar com a corcinza q fora estipulada.

  • O certo então é usar sempre o ponto e vírgula depois do fecha chave ?

  • Sobre o alvo ficou claro para mim, obrigado ! :)

  • Só mais uma questão, qual a diferença entre Math.round e Math.float ?

Obrigado

A função limpaTela funciona, só que ela limpa o canvas e muda para a cor branca o fundo da tela ao invés de continuar com a corcinza q fora estipulada. Sim.. o limpa tela faz esse processo, ele limpa tudo que foi criado em tela, se você quer manter cinza, dentro da function, vc tem que mandar pintar de novo. O que fiz, eu coloquei margem ao invés de pintar o fundo para determinar o campo do jogo e o tamanho do canvas.

O certo então é usar sempre o ponto e vírgula depois do fecha chave ? Sim, eu sempre utilizei e nunca tive problema com nenhum navegador.

Sobre o alvo ficou claro para mim, obrigado ! :)

Só mais uma questão, qual a diferença entre Math.round e Math.float. Math.float, nao ouvi falar.. me cite um exemplo..

Agora o Math.round ele faz o seguinte.:

x = Math.round(20.49); (x = 20)

Ele arredonda transforma em Integer.

Ou pode fazer isso tambem x = Math.round10(55.55, -1); x=(55.6)

x = Math.round10(55.549, -1); x= ( 55.5)

Oi Guilherme,

Eu me confundi de nome, o nome da function é Math.floor().

Obrigado pelos esclarecimentos.

Oi..

Resumo.: Math.floor() - Arredondar um número baixo para o seu número inteiro mais próximo.

Exemplo -

var a = Math.floor(0.70); var b = Math.floor(1.40); var c = Math.floor(5); var d = Math.floor(8.3); var e = Math.floor(-6.1); var f = Math.floor(-5.9);

a = 0 b = 1 c = 5 d = 8 e = -7 f = -6


Math.Round() - Arredondar um número para o número inteiro mais próximo.

var a = Math.round(2.60); var b = Math.round(2.50); var c = Math.round(2.49); var d = Math.round(-2.60); var e = Math.round(-2.50); var f = Math.round(-2.49);

a = 3 b = 3 c = 2 d = -3 e = -2 f = -2


Mais informações.: http://www.w3schools.com/jsref/