Laydson, obrigado =]
Vamos lá, primeiro criei essa função e chamei só ela no draw e atribuo 0 para jogadores.
//receber quantidade de gols e de jogadores
function start(){
inp.input(escolheGols);
if (jogadores == 0){
telaInicial();
}else if(jogadores == 1){
//tela = 1;
jogo(1);
}else if(jogadores == 2){
//tela = 2;
jogo(2);
}
}
Aqui ela vai verificar o valor da variável jogadores para decidir como o jogo será montado, quando ele clicar em um dos botões o jogo vai ser montado conforme a opção selecionada. Isso é feito chamando a função jogo e passando o parâmetro 1 para singleplayer e 2 para multiplayer. Se a variável jogadores for = 0 ele vai executar a função telaInicial() que é a função que cria a tela de escolha que você comentou.
function telaInicial(){
noStroke();
stroke(255);
noFill();
rect(xBotaoSingle,yBotaoSingle,larguraBotoes,alturaBotoes,10);
rect(xBotaoMulti,yBotaoMulti,larguraBotoes,alturaBotoes,10);
noStroke();
fill(255);
textStyle(BOLD);
textAlign(CENTER,CENTER);
textSize(24);
//texto botoes
text("Single Player",xBotaoSingle+100,yBotaoSingle+25);
text("Multiplayer",xBotaoMulti+100,yBotaoMulti+25);
//texto selecao de gols
text("O jogo acaba em",300,100);
text("gols",475,100);
noFill();
noErase();
fill(255);
erase(75);
textSize(30);
textStyle(BOLDITALIC);
text("Controles",90,50);
textAlign(LEFT);
textStyle(BOLDITALIC);
textSize(20);
text("Player 1:",50,130);
textStyle(NORMAL);
textSize(14);
text("- W Sobe",50,155);
text("- S desce",50,175);
textStyle(ITALIC);
textSize(20);
text("Player 2:",50,250);
textStyle(NORMAL);
textSize(14);
text("- Seta para Cima",50,275);
text("- Seta para Baixo",50,295);
noFill();
noErase();
//MouseOver
fill(255);
erase(30);
rect(xBotaoSingle,mouse,larguraBotoes,alturaBotoes,10)
}
A função acima vai criar os botões de single ou multiplayer e os textos da tela inicial. Ainda não aparecem as raquetes e a bolinha porque as funções que fazem isso ainda não foram chamadas. Elas só serão chamadas quando o jogador clicar em um dos botões.
function jogo(qtdJogadores){
inp.hide(); // oculta o input durante o jogo
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
mostraRaquetes(xRaquete, yRaquete);
mostraRaquetes(xRaqueteOponente, yRaqueteOponente);
movimentaMinhaRaquete();
verificaColisaoRaquetes(xRaquete, yRaquete);
verificaColisaoRaquetes(xRaqueteOponente, yRaqueteOponente);
incluiPlacar();
// define a movimentacao da 2 raquete e cor do placar
if (qtdJogadores == 1){
movimentaRaqueteOponente();
r2 = 255;
g2 = 50;
b2 = 30;
}else if(qtdJogadores == 2){
movimentaRaquetePlayer2();
r2 = 100;
g2 = 255;
b2 = 0;
}
marcaPonto(jogadores);
bolinhaNaoFicaPresa();
jaJogou = true;
}
Aqui em cima ele vai montar o jogo em si, chamando todas as funções que no curso o professor colocou no draw, e tem um if para definir se ele exibira a raquete oponente ou a raquete do computador, de acordo com o numero que vai vir do botão que o jogador clicou. Ah, aqui também ele vai esconder a caixa que o jogador digita quantos gols o jogo acaba.
Nesse momento os botões e textos da tela inicial não aparecem mais porque a função telaInicial() que exibe eles não é mais executada.
Quando o jogo acaba ele chama a função recomecaJogo(), que é parecida com a função telaInicial(). Ela vai criar o botão de recomeçar.
A função abaixo verifica se o botão reiniciar foi apertado e chama a função resetaVariaveis()
function mouseClicked(){
if (mouseX >= xBotaoRecomeca && mouseX <= xBotaoRecomeca+larguraBotoes && mouseY >= yBotaoRecomeca && mouseY <= yBotaoRecomeca+alturaBotoes){
mouse = 600;
resetaVariaveis();
}
}
A função resetaVariaveis() vai zerar todas a variáveis do jogo, principalmente a jogadores e vai colocar o valor pra zero.
function resetaVariaveis(){
inp.show();
xBolinha = 300;
yBolinha = 200;
diametro = 15;
raio = diametro / 2;
//variaveis da raquete
xRaquete =5;
yRaquete = 150;
raqueteComprimento = 10;
raqueteAltura = 90;
//variaveis do oponente
xRaqueteOponente = 585;
yRaqueteOponente = 150;
//velocidade da bolinha
velocidadeXBolinha = random(aleatorio);
velocidadeYBolinha = random(aleatorio);
aleatorio = [-6,6];
//variaveis do placar
meusPontos = 0;
pontosOponente = 0;
//variaveis de controle
jogadores = 0;
jaJogou = false;
acabou = true;
trilha.loop();
}
Como a função start() fica sendo executada o tempo todo no draw, assim que jogadores voltar a ser 0 ela vai novamente chamar a variável telaInicial() e ai começa tudo de novo rs.
Espero que tenha dado pra entender. Qualquer coisa me fala que tento explicar melhor =]