1
resposta

PLACAR SOMANDO ERRADO

Toda vez que o oponente pontua ele soma de 13 em 13 pontos

//variáveis da bolinha let xBolinha = 300 let yBolinha = 200 let diametro = 25 let raio = diametro / 2 let velocidadeXbolinha = 2 let velocidadeYbolinha = 6 let velocidadeRaqueteOponente = 6

//variáveis da raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90;

let colidiu = false

//variáveis do oponente let xraqueteOponente = 585 let yraqueteOponente= 150 let raqueteOponenteComprimento= 10 let raqueteOponenteAltura = 90

//variáveis placar let meusPontos = 0 let pontosOponente = 0

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

function draw() { background(0) mostrarBolinha () movimentaBolinha () colisãoBordas () mostraRaquete() movimentaMinhaRaquete() verificaColisaoRaquete() colisaoMinhaRaqueteBiblioteca() raqueteOponente () movimentaRaqueteOponente () bordasRaqueteOponente () verificaColisaoRaqueteOponente() placarDoJogo () pontuacaoJogo () }

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

function mostrarBolinha () { fill (color (175,100,220)) circle (xBolinha,yBolinha,diametro) }

function movimentaBolinha () { xBolinha += velocidadeXbolinha; yBolinha += velocidadeYbolinha;}

function colisãoBordas () { if (xBolinha + raio > width || xBolinha - raio < 0) { velocidadeXbolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeYbolinha *= -1; } }

function mostraRaquete() { fill (color (0,126,155))rect(xRaquete, yRaquete, raqueteComprimento, raqueteAltura); }

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

function raqueteOponente () { fill (color(255,204,0)) rect (xraqueteOponente,yraqueteOponente,raqueteOponenteComprimento,raqueteOponenteAltura)

}

function colisaoMinhaRaqueteBiblioteca() { collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, diametro)}

function movimentaRaqueteOponente () { yraqueteOponente += velocidadeRaqueteOponente yraqueteOponente = yBolinha - 50 }

function bordasRaqueteOponente () { if (yraqueteOponente > height || yraqueteOponente < 0) { velocidadeRaqueteOponente *= -1 } } function verificaColisaoRaqueteOponente() { if (xBolinha + raio > xraqueteOponente +raqueteOponenteComprimento) { velocidadeXbolinha *= -1 } }

function placarDoJogo () { fill (255) textFont('Arial',[30]) text(meusPontos,278,26) text(pontosOponente,321,26) }

function pontuacaoJogo () { if (xBolinha > 580) {meusPontos +=1 } if (xBolinha <25) {pontosOponente +=1 } }

1 resposta

O problema está na função pontuacaoJogo, a função está pontuando para o oponente quando xBolinha < 25, quando a bolinha chega no 24 o oponente ganha um ponto, depois a bolinha vai pro 23 o oponente ganha outro, e assim sucessivamente, depois que a bolinha bate na borda e volta, o oponente vai ganhando pontos na volta tbm.

Tente substituir o 25 por 13, pois quando a bolinha bate no 12 ela volta, então o oponente só vai ter 1 "frame" para receber esse ponto.

function pontuacaoJogo () { if (xBolinha > 580) {meusPontos +=1 } if (xBolinha <13) {pontosOponente +=1 } }

Caso você ainda ganhe pontos a mais, você pode diminuir mais o valor e ir testando, se o oponente parar de receber pontos é so ir aumentando.

Espero ter ajudado :)