1
resposta

Pong para 2 jogadores

Peguei emprestado de um dos alunos do curso um código de finalização do jogo, e em vez de jogarmos com a máquina esse pong é para 2 jogadores, onde a raquete da esquerda e comandada pelas teclas w (para cima) e s (para baixo) e a da direita pelas teclas seta pra cima e seta pra baixo.

link do jogo:https://editor.p5js.org/ebrithil_6755/sketches/BlrEmgXak

código pra quem quiser: //variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 13; let raio = diametro/2;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 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 xOponente = 585 let yOponente = 150 let velocidadeY;

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

//variáveis do som do jogo let raquetada let pontos let trilha

let vencedor;

//funções do som

function preload(){ trilha = loadSound("trilha.mp3") pontos = loadSound("ponto.mp3") raquetada = loadSound("raquetada.mp3") }

//funções do cenário function setup() { createCanvas(600, 400); trilha.loop() }

function draw() { background(0); placar() ponto() mostraBolinha(); movimentaBolinha() verificaColisaoBorda() mostraRaquete(xRaquete,yRaquete) mostraRaquete(xOponente,yOponente) movimentaRaquete() verificaColisaoRaquete(xRaquete,yRaquete) verificaColisaoRaquete(xOponente,yOponente) movimentaOponente() fimDoJogo()

}

//funções da bolinha 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 } }

//funçoes da raquete function mostraRaquete(x,y){ rect(x, y, raqueteComprimento, raqueteAltura) }

function movimentaRaquete(){ if (keyIsDown(87)){ yRaquete -= 10; } if (keyIsDown(83)) { yRaquete += 10; } }

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

//funções do oponente function movimentaOponente(){ velocidadeY = yBolinha -yOponente - raqueteComprimento/ 2 -85 yOponente += velocidadeY }

function movimentaOponente(){ if (keyIsDown(UP_ARROW)){ yOponente -= 10; } if (keyIsDown(DOWN_ARROW)) { yOponente += 10; } }

//placar function placar(){ stroke(255) textAlign(CENTER) textSize(16) fill(255,140,0) rect(150,10, 40, 20) fill(255) text(meusPontos, 170, 26) fill(255,140,0) rect(450,10, 40, 20) fill(255) text(pontosOponente, 470, 26) }

function ponto(){ if(xBolinha>590){ meusPontos +=1 pontos.play()

} if(xBolinha<10){ pontosOponente +=1 pontos.play()

} }

function fimDoJogo() {

if (meusPontos >= 10) { fill(255); text("Você venceu", 50, 26); velocidadeXBolinha = 0; velocidadeYBolinha = 0; xBolinha = 300; yBolinha = 200; meusPontos = 10; trilha.stop(); pontos.stop(); raquetada.stop(); } if (pontosOponente >= 10) { fill(255); text("Oponente venceu", 350, 26); velocidadeXBolinha = 0; velocidadeYBolinha = 0; xBolinha = 300; yBolinha = 200; pontosDoOponente = 10; trilha.stop(); pontos.stop(); raquetada.stop(); } }

pretendo futuramente criar um menu antes do jogo com as opções de 1 ou 2 jogadores

1 resposta

Olá, Lucas! Tudo bem contigo?

Muito bacana sua iniciativa e algo bem comum é pegar código emprestado dos colegas :). O importante mesmo é compreender a lógica e o que acontece por trás do código.

A implementação ficou funcional e isso é maravilhoso, continue com esse foco pois isso irá impulsionar ainda mais os seus estudos!

Apenas deixo uma sugestão em relação ao uso do fórum. Uma dica bacana é utilizar a ferramenta inserir bloco de código aqui do fórum. Assim seu código ficará indentado e possibilitará a verificação de erros com mais rapidez. Vou deixar também um link que redireciona para um tópico que ensina sua utilização: Link com tutorial para usar botão inserir bloco de código:

Um abraço e bons estudos!!!