3
respostas

SyntaxError: redeclaration of formal parameter

Olá, pessoal

Meu jogo está dando o seguinte erro:

SyntaxError: redeclaration of formal parameter "x"

(link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Redeclared_parameter#what_went_wrong)

Após ler não ficou muito claro pra mim o quê preciso corrigir. Poderiam me ajudar, por favor ?

O meu código é o seguinte:

//variáveis bolinha

let xBolinha = 250; let yBolinha = 200; let diametro = 24; let raio = diametro/2;

//velocidade bolinha

let velocidadeXBolinha = 7; let velocidadeYBolinha = 7;

//variáveis raquete

let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 100;

let colidiu = false;

//variáveis raquete do oponente

let xRaqueteOponente = 485; let yRaqueteOponente = 150;

let colidiu = false;

//placar do jogo

let meusPontos = 0; let pontosDoOponente =0;

function setup(){ createCanvas (500,400); }

//funções que aparecerão na tela

function draw(){ background (0); mostraBolinha(); mostraRaquete(); mostraRaqueteOponente(); bolinhaEmMovimento(); colisaoComAsBordas(); movimentaMinhaRaquete(); movimentaRaqueteOponente(); incluirPlacar(); marcaPonto(); //verificaColisaoRaquete(); colisaoMinhaRaqueteBiblioteca();

}

function mostraBolinha (){ circle (xBolinha, yBolinha, diametro); }

function bolinhaEmMovimento (){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

//para verificar colisão com as bordas

function colisaoComAsBordas(){ if (xBolinha + raio > width || xBolinha - raio < 0 ){ velocidadeXBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio <0){ velocidadeYBolinha *= -1; } }

function mostraRaquete(){ rect (xRaquete, yRaquete, raqueteComprimento, raqueteAltura) }

function mostraRaqueteOponente(){ rect(xRaqueteOponente,yRaqueteOponente,raqueteComprimento,raqueteAltura); }

function movimentaMinhaRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function movimentaRaqueteOponente(){ velocidadeYOponente = yBolinha - yRaqueteOponente -raqueteComprimento/2 -30; yRaqueteOponente += velocidadeYOponente; }

function incluirPlacar(){ stroke(255); textAlign(CENTER); textSize(16); fill(255,140,0); rect (160,10, 40,20); fill (255); text (meusPontos, 180,26); fill(255,140,0); rect (300,10, 40,20); fill (255); text (pontosDoOponente, 320,26);

}

function marcaPonto(){ if (xBolinha > 490){ meusPontos += 1; } if (xBolinha <10){ pontosDoOponente +=1; }}

function verificaColisaoRaquete(){ if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){ velocidadeXBolinha *= -1; } }

function colisaoMinhaRaqueteBiblioteca() { colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu) { velocidadeXBolinha *= -1; } }


Obrigado desde já

3 respostas

Boa noite, Caio. Quando eu fiz essa aula tive um problema semelhante. Pelo código que você copiou aqui, repara que você declarou let colidiu = false duas vezes, por isso está gerando essa mensagem de erro. Essa variável na verdade só faz parte do campo //variáveis raquete do oponente. Experimenta retirar essa repetição do campo //variáveis raquete logo acima. Vê se isso resolve aí do seu lado. Copiando e rodando aqui fazendo essa correção funcionou.

Caso isso não resolva, durante esse curso o que me ajudou muito foi sempre fazer um double-check naquele item Faça como eu fiz ao final de cada "módulo". Muitas vezes comparando com a versão final sempre acabava filtrando possíveis erros de digitação, indentação ou repetição de código.

Espero ter ajudado, abração.

Muito obrigado, Ivan !

Realmente eu não tinha percebido a repetição.

Fiz as correções sugeridas e agora está funcionando.

Forte abraço.

Show de bola! Estamos juntos, abração.