Fala pessoal!
Alguém pode me ajudar? Não consegui aplicar a solução sugerida para quando a bolinha fica presa. Obrigado!
Segue o link para o meu código abaixo:
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!
Fala pessoal!
Alguém pode me ajudar? Não consegui aplicar a solução sugerida para quando a bolinha fica presa. Obrigado!
Segue o link para o meu código abaixo:
Olá, Rodrigo! Tudo certo?
Chequei seu código e fiz apenas algumas alterações, como retirar a função da bolinha não fica presa e modificar a condição de colisão. olha só:
//Variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;
//Velocidade da bolinha
let velocityXBolinha = 6;
let velocityYBolinha = 6;
//Variáveis da raquete
let xRaquete = 02;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;
//Variáveis do oponente
let xRaqueteOponente = 583;
let yRaqueteOponente = 150;
let velocidadeYOponente;
//Variável colisão
let colidiu = false
//Variável placar
let meusPontos = 0;
let pontosOponente = 0;
//Variáveis para os sons do jogo
let raquetada;
let ponto;
let trilha;
//Variável de erro do oponente
let chanceDeErrar = 0;
function preload(){
trilha = loadSound("trilha.mp3");
ponto = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3");
}
function setup() {
createCanvas(600, 400);
//trilha.loop();
}
function draw() {
background(0);
mostraBolinha();
movimentaBolinha();
movimentaMinhaRaquete();
//movimentaRaqueteOponente ();
verificaColisaoBorda();
mostraRaquete(xRaquete, yRaquete);
mostraRaqueteOponente (xRaqueteOponente, yRaqueteOponente);
verificaColisaoRaquete (xRaquete, yRaquete);
verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
incluiPlacar();
marcaPonto();
bolinhaNaoFicaPresa();
}
function mostraBolinha (){
circle(xBolinha, yBolinha,diametro)
}
function movimentaBolinha (){
xBolinha += velocityXBolinha;
yBolinha += velocityYBolinha;
}
function verificaColisaoBorda (){
if (xBolinha + raio > width || xBolinha - raio < 0){velocityXBolinha *=-1}
if (yBolinha + raio > height || yBolinha - raio < 0){velocityYBolinha *= -1}
}
function mostraRaquete (x, y) {
rect(x, y, raqueteComprimento, raqueteAltura);
}
function mostraRaqueteOponente () {
rect(xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura);
}
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){
velocityXBolinha *= -1;
raquetada.play();
}
}
function verificaColisaoRaquete (x, y){
colidiu = collideRectCircle (x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio)
if (colidiu){
velocityXBolinha *= -1;
raquetada.play();
}
}
function movimentaRaqueteOponente (){
velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
yRaqueteOponente += velocidadeYOponente + chanceDeErrar
calculaChanceDeErrar()
}
function calculaChanceDeErrar() {
if (pontosOponente >= meusPontos) {
chanceDeErrar += 50
if (chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
}
function incluiPlacar (){
stroke (255);
textAlign (CENTER);
textSize (16);
fill (color(255, 140, 0));
rect (150, 10, 40, 20);
fill (255);
text (meusPontos, 170, 26);
fill (color(255, 140, 0));
rect (450, 10, 40, 20);
fill (255);
text (pontosOponente, 470,26);
}
function marcaPonto (){
if (xBolinha > 590){
meusPontos += 1;
ponto.play();
}
if (xBolinha < 10){
pontosOponente += 1;
ponto.play();
}
}
function bolinhaNaoFicaPresa (){
if (xBolinha - raio < 0){
xBolinha = 35;
}
if (xBolinha - raio > 595){
xBolinha = 570
}
}Teste e verifique se funciona
Um abraço e bons estudos!
Olá Camila!
Muuuitíssimo obrigado!
Boa semana!
Rodrigo