2
respostas

[Dúvida] Jogo incompleto...

Boa tarde pessoal! O problema com meu jogo é que não consigo fazer o oponente errar e a bolinha segue ficando presa na raquete e marcando muitos pontos. Será que alguém pode me ajudar a deixar o jogo 100%?

Link: https://editor.p5js.org/Bertidu/sketches/Us_7WTEmq

Segue o código:

//variaveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 2;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6;

//variaveis da raquete let xRaquete = 5; let yRaquete = 150;

//posicao das raquetes let raqueteComprimento = 10; let raqueteAltura = 90;

//variaveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

//placar do jogo let meusPontos = 0; let pontosDoOponente = 0;

//sons do jogo let raquetada; let ponto; let trilha;

//chance de errar 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(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete01(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaqueteOponente(xRaqueteOponente, yRaqueteOponente); incluiPlacar(); marcaPonto(); calculaChanceDeErrar(); bolinhaNaoFicaPresa(); }

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(x,y) { rect(x, y, raqueteComprimento, raqueteAltura); }

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

if (keyIsDown(DOWN_ARROW)) { yRaquete += 10; } }

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

function verificaColisaoRaqueteOponente(){ if (xBolinha + raio > xRaqueteOponente && yBolinha + raio < yRaqueteOponente + raqueteAltura && yBolinha - raio > yRaqueteOponente - raqueteAltura){ velocidadeXBolinha *= -1; raquetada.play(); } }

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

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(pontosDoOponente, 470, 26);

}

function marcaPonto() { if (xBolinha > 590) { meusPontos += 1; ponto.play(); } if (xBolinha < 10) { pontosDoOponente += 1; ponto.play(); } }

function calculaChanceDeErrar() { if (pontosDoOponente >= meusPontos) { chanceDeErrar += 1 if (chanceDeErrar >= 39){ chanceDeErrar = 40 } } else{ chanceDeErrar -= 1 if (chanceDeErrar <= 35){ chanceDeErrar = 35 } } }

function bolinhaNaoFicaPresa(){ if (xBolinha - raio < 0){ Xbolinha = 23 } }

2 respostas

Boa tarde, No fórum tem diversas soluções o que funcionou pra mim foi simplesmente colocar as raquetes no limite da tela, assim não tem a possibilidade da bolinha passar da raquete no seu caso seria mudar

let xRaquete = 0; let xRaqueteOponente = 590;

espero ter ajudado, bons estudos.

Nenhuma do fórum me solucionou. Sobre a questão da raquete eu resolvi graças a ajuda do discord. Mas, a questão do oponente errar é que está difícil. De qualquer forma parabéns por encontrar sua solução e obrigado por tentar me ajudar.