https://editor.p5js.org/tacio608/sketches/ZSgZ8RbNZ
Ao colidir com a raquete o jogo trava.
Sou novato, já revisei algumas vezes olhando passo a passo e não identifico o erro.
https://editor.p5js.org/tacio608/sketches/ZSgZ8RbNZ
Ao colidir com a raquete o jogo trava.
Sou novato, já revisei algumas vezes olhando passo a passo e não identifico o erro.
Olá, Tacio! Tudo bem com você?
Visualizei seu P5 e pude observar apenas um pequeno detalhe diferente na sua variável velocidadeXBolinha. Olha só:
O P5 mostrou esse erro quando a bolinha toca na raquete:
p5.js says: There's an error due to "velocidadeXBolinha" not being defined in the current scope (on line 145 in about:srcdoc [about:srcdoc:145:9]). .
Isso significa que a variável velocidadeXBolinha não foi definida, então fui procurar por ela no seu código e percebi que você declarou a variável com um "b" minúsculo:
let velocidadeXbolinha = 6; //com um b minúsculo
No entanto, na função que faz a verificação da colisão da bolinha com a Raquete, você colocou o "B" maiúsculo, e foi isso que provocou o erro. Olha só a função verificaColisaoRaquete()
function verificaColisaoRaquete() {
if (xBolinha - raio < xRaquete + raqueteComprimento
&& yBolinha - raio < yRaquete + raqueteAltura
&& yBolinha + raio > yRaquete) {
velocidadeXBolinha *= -1; //aqui está com B maiúsculo
}
}
E por qual motivo isso acontece?
O JavaScript, que é a linguagem utilizada para construir o jogo, possui uma característica chamada de CamelCase (que significa Caminho ou Corcova do Camelo), ou seja, a linguagem é CaseSensitive e o interpretador identifica quando UmA LetRa é Maiúscula ou MinÚscula e faz a diferenciação entre elas.
Utilizamos o CamelCase para atribuição de nomes de variáveis ou funções por questões de boas práticas, pois assim o código fica mais organizado e legível.
Qual a possível solução?
Renomeei os nomes das varíaveis "velocidadeXbolinha" e funcionou direitinho, a lógica está já estava correta :)
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15
let raio = diametro / 2;
let velocidadeXBolinha = 6;
let velocidadeyBolinha = 6;
//variaveis da raquete
let xRaquete = 5
let yRaquete = 150
let raqueteComprimento = 10
let raqueteAltura = 90
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
mostraRaquete();
movimentaMinhaRaquete()
verificaColisaoRaquete();
}
function mostraBolinha(){
circle (xBolinha,yBolinha,diametro);}
function movimentaBolinha(){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeyBolinha;
}
function verificaColisaoBorda(){ 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)
mostraRaquete}
function movimentaMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)){
yRaquete += 10;}}
function verificaColisaoRaquete() {
if (xBolinha - raio < xRaquete + raqueteComprimento
&& yBolinha - raio < yRaquete + raqueteAltura
&& yBolinha + raio > yRaquete) {
velocidadeXBolinha *= -1;
}
}