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

Eu nunca consigo marcar ponto... só o oponente...

Olá, podem dar uma olhada no meu código? Eu nunca consigo marcar ponto, a bolinha acompanha a raquete.... Já alterei a margem de erro de 30 para 40, 50, 35, 60.... e nada... (https://editor.p5js.org/paulinhagrio/sketches/-vd5HN1Fk)

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

//velocidade da bolinha let velocidadeXBolinha = 4; let velocidadeYBolinha = 4; let raqueteComprimento = 10; let raqueteAltura = 90;

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

//variaveis da raquete oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

let colidiu = false;

//Placar do jogo: let meusPontos = 0; let pontosDoOponente = 0;

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

function draw() { background(0); //determina a cor; mostraBolinha(); //aqui constava o código que foi lá para a funcao mostraBolinha - essa função cria a bolinha)

movimentaBolinha(); // aqui constava o codigo que foi la para a função movimentaBolinha)

verificaColisaoBorda(); // aqui constava o código que foi parar lá na função verificaColisaoBorda)

mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete);

mostraRaquete(xRaqueteOponente, yRaqueteOponente);

movimentaRaqueteOponente();

//verifica colisao da raquete do oponente: verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);

incluiPlacar();

marcaPonto();

}

function mostraBolinha() { circle(xBolinha, yBolinha, diametro); }

function movimentaBolinha() { xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

//(width = borda); (ou = ||) function verificaColisaoBorda() { if (xBolinha + raio > width || xBolinha - raio < 0){ velocidadeXBolinha *= -1 } //(height = altura) 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() { if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1 } }

function verificaColisaoRaquete(x, y){ colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if(colidiu){ velocidadeXBolinha *= -1 } }

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

//cria o placar e define qual local do canvas vai ficar:

function incluiPlacar(){ fill(255) //pinta os meus pontos de branco text(meusPontos, 278, 26) text(pontosDoOponente, 321, 26) }

function marcaPonto(){ if(xBolinha > 595){ meusPontos += 1; } if(xBolinha < 5){ pontosDoOponente += 1; }

}

1 resposta
solução!

Huhuuuu!!! Consegui! Bom, na verdade eu achei a resposta no Forum e adaptei ao que eu tinha. Agora sim os dois estão pontuando!

(*Eu só não entendi bem a lógica que fez eu começar a pontuar.... mas isso é só um detalhe, rsss lá na frente eu entendo!)

https://editor.p5js.org/paulinhagrio/sketches/-vd5HN1Fk

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

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software