Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lógica em programação (Javascript)

Boa tarde!

Estou com dificuldade em criar a colisão da bolinha na raquete. Eu consegui fazer o movimento da raquete, porém ao continuar a lição e criar a função posterior para colisão. O jogo fica estático. Estou 2 dias nessa mesma parte e não consigo enxergar o erro. Por favor me ajudem!

  //Variáveis

//Formato da Bolinha let xbolinha = 300; let ybolinha = 200; let diametro = 20; let raio = diametro / 2;

//Velocidade da Bolinha let velocidadexbolinha = 3; //let velocidadeybolinha = 3;

//RAQUETES //Raquete1 let raqueteX1 = 05; let raqueteY1 = 175; let raqueteL1 = 05; let raqueteA1 = 75;

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

function draw() { background(0); mostrabolinha(); movimentabolinha(); limitedaborda(); Raquete1(); MovimentoRaquete1(); raquetada();

}

function mostrabolinha(){circle(xbolinha, ybolinha, diametro); }

function movimentabolinha(){ xbolinha += velocidadexbolinha;} {ybolinha += velocidadeybolinha;}

function limitedaborda(){ if (xbolinha + raio > width || xbolinha - raio < 0) {velocidadexbolinha *= -1;} if (ybolinha + raio > height || ybolinha - raio < 0){velocidadeybolinha *= -1;} }

function Raquete1(){rect(raqueteX1,raqueteY1,raqueteL1,raqueteA1);}

function MovimentoRaquete1() { if (keyIsDown(DOWN_ARROW)) { raqueteY1 += 10; } if (keyIsDown(UP_ARROW)) { raqueteY1 -= 10;}

function raquetada(){ if (xbolinha - raio < Raquete1 + raqueteL){velocidadexbolinha *= -1;} }

                      Fico no aguardo
1 resposta
solução!

Olá, Claudio!

Pelo código que você compartilhou, parece que o problema está na função "raquetada". Na linha onde você verifica a colisão da bolinha com a raquete, você está tentando somar a variável "Raquete1" com a variável "raqueteL", mas elas são diferentes tipos de dados. "Raquete1" é o nome da função que desenha a raquete, não é uma variável que representa a posição da raquete. Para corrigir isso, você precisa usar as variáveis corretas que definem a posição da raquete.

Além disso, você também precisa verificar a colisão nas outras direções (cima, baixo e direita) para garantir que a bolinha não passe pela raquete.

Aqui está um exemplo de como você pode corrigir a função "raquetada":

function raquetada() {
  if (xbolinha - raio < raqueteX1 + raqueteL1 && ybolinha - raio < raqueteY1 + raqueteA1 && ybolinha + raio > raqueteY1) {
    velocidadexbolinha *= -1;
  }
}

Com essa correção, a função irá verificar se a bolinha está colidindo com a raquete na direção horizontal (esquerda) e se a posição vertical da bolinha está dentro dos limites da raquete. Se a colisão for detectada, a velocidade da bolinha será invertida.

Espero que isso resolva o seu problema! Bons estudos!