anonimo1337 0 Posted January 17 Report Share Posted January 17 Program ping_pong ; const cantoCima = 2 ; cantoBaixo = 10 ; cantoEsquerda = 2 ; cantoDireita = 38 ; var bolaX, bolaY: integer; // posicao x, y da bola raquete1X, raquete1Y: integer; // posicao x, y da raquete 1 raquete2X, raquete2Y: integer; // posicao x, y da raquete 2 moveBolaDireita, moveBolaBaixo: boolean ; // controla direcao da bola pontos: integer; acabouJogo: boolean ; menu1:real; nome1, nome2:string; Procedure menuin; //Interface do Menu Begin clrscr; Writeln; Writeln; writeln(' ----------- '); Writeln(' 1-Jogar '); writeln(' ----------- '); writeln; Writeln; writeln(' ---------------- '); Writeln(' 2-como jogar '); writeln(' ---------------- '); Writeln; Writeln; writeln; writeln(' ---------- '); Writeln(' 3-Sair '); writeln(' ---------- '); Writeln; menu1:=4 End; //Ecrã Inicial Begin textcolor (Red); Writeln (' - - - --- -´~~~~ '); Writeln (' ,´ `, '); Writeln (' ( , '); Writeln (' ( ) '); Writeln (' { --- ) '); Writeln (' { / / ) _ _ _ _ _ _ _ _ _ _ _ _ '); Writeln (' | --- | | | '); Writeln (' | | | Ping Pong | '); Writeln (' | | |_ _ _ _ _ _ _ _ _ _ _ _| '); Writeln (' \ / '); Writeln (' \ / '); Writeln (' - - -´~~~~ - - -´~~~~ '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' |_____| '); Textcolor (Black); Textbackground (White); Writeln(' ---------------------------------------------- '); Writeln(' | Insira o nome dos 2 jogadores para jogar | '); Writeln(' ---------------------------------------------- '); Textcolor (red ); Textbackground (Black); Readln(nome1); Readln(nome2); menuin; Repeat Readln(menu1); If menu1=1 then // Começa o jogo begin //---------------------------------------------------------------- // Desenha o campo do pong //---------------------------------------------------------------- procedure DesenhaCampo; begin textcolor(white); gotoxy(1,1); writeln(#201,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#203,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#187); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#202,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#188); writeln(''); writeln('------------------------'); writeln('Pascalzim PONG'); writeln('------------------------'); writeln('- Mateus Riva'); writeln('- Caio Augusto Faria'); writeln('- Denis Miura'); writeln('- Tobias Furtado'); writeln(''); writeln('Controles Jogador 1 => seta para cima, seta para baixo.'); writeln('Controles Jogador 2 => 8 para cima, 2 para baixo'); writeln(''); if(pontos <> 0) then writeln('Pontos: ', pontos); end; //---------------------------------------------------------------- // Move a bola pelo campo //---------------------------------------------------------------- procedure moveBola ; Begin // Move a bola na horizontal if (moveBolaDireita) then bolaX:= bolaX + 1 else bolaX:= bolaX - 1; // Move a bola na vertical if (moveBolaBaixo) then bolaY:= bolaY + 1 else bolaY:= bolaY - 1; // Se a bola bateu em cima ou embaixo do campo inverte sua direcao if (bolaY = cantoBaixo) or (bolaY = cantoCima) then moveBolaBaixo := not moveBolaBaixo ; // Desenha a bola na sua nova posicao gotoxy(bolaX,bolaY); write(#219); End ; //---------------------------------------------------------------- // Move as raquetes //---------------------------------------------------------------- procedure moveRaquetes ; var moveuRaquete : boolean ; Begin // Verifica se alguma raquete se moveu while keypressed do begin case readkey of // Seta para cima: move a raquete 1 para cima #72: if (raquete1Y > cantoCima+1) then raquete1Y:= raquete1Y - 1; // Seta para baixo: move a raquete 1 para baixo #80: if (raquete1Y < cantoBaixo) then raquete1Y:= raquete1Y + 1; // Numero 8: move a raquete 2 para cima '8': if (raquete2Y > cantoCima+1) then raquete2Y:= raquete2Y - 1; // Numero 2: move a raquete 2 para baixo '2': if (raquete2Y < cantoBaixo) then raquete2Y:= raquete2Y + 1; end; end ; // Desenha a raquete 1 textcolor (lightred); gotoxy(raquete1X,raquete1Y); write(#219); gotoxy(raquete1X,raquete1Y -1); write(#219); // Desenha a raquete 2 textcolor(lightblue); gotoxy(raquete2X,raquete2Y); write(#219); gotoxy(raquete2X,raquete2Y -1); write(#219) ; End; //---------------------------------------------------------------- // Verifica se a bola bateu em alguma raquete //---------------------------------------------------------------- procedure VerificaChoqueRaquete ; Begin // Se a bola bateu na raquete 1 joga ela para direita if (bolaX = raquete1X+1) then if (bolaY = raquete1Y) or (bolaY = raquete1Y-1) then begin moveBolaDireita := true ; pontos:= pontos + 1; end; // Se a bola bateu na raquete 2 joga ela para esquerda if (bolaX = raquete2X-1) then if (bolaY = raquete2Y) or (bolaY = raquete2Y-1) then begin moveBolaDireita := false ; pontos := pontos + 1; end; End; //---------------------------------------------------------------- // Inicia o jogo //---------------------------------------------------------------- procedure iniciaJogo ; Begin randomize; // Determina posicao inicial da bola bolaX:= 20; bolaY:= random(cantoBaixo-2) + 2; // Determina para que lado a começa a se mover moveBolaBaixo := true ; if(random(2) = 1) then moveBolaDireita := true else moveBolaDireita := false ; // Determina posicao inicial da raquete 1 raquete1X:= cantoEsquerda; raquete1Y:= (cantoCima+cantoBaixo) div 2 ; // Determina posicao inicial da raquete 2 raquete2X:= cantoDireita; raquete2Y:= (cantoCima+cantoBaixo) div 2 ; pontos := 0; // inicializacao do jogo acabouJogo := false ; clrscr; End; //---------------------------------------------------------------- // Fim do jogo: a bola passou por uma das raquetes //---------------------------------------------------------------- procedure VerificaFimJogo ; var resp : char ; Begin // Se a bola nao bateu no canto do tabuleiro sai do procedure if(bolaX <> cantoEsquerda-1) and (bolaX <> cantoDireita+1) then exit ; // Mostra qual jogador venceu o jogo textcolor(white); gotoxy(41,3); if (bolaX < cantoEsquerda) then writeln('Vencedor: Jogador 2') else writeln('Vencedor: Jogador 1'); // Pergunta se quer continuar jogando gotoxy(41,5); write('Digite <ENTER> para parar...'); gotoxy(41,7); write('Pressione outra tecla para jogar...'); resp := upcase(readkey); // Se a resposta é não, termina o programa if (resp= #13) then Begin acabouJogo := true ; exit ; End ; // Se a resposta é sim, reinicia o jogo iniciaJogo ; End ; //---------------------------------------------------------------- // Inicio do programa //---------------------------------------------------------------- Begin // Desenha o campo de jogo, de fundo verde textbackground(green); clrscr; DesenhaCampo; writeln('=> Pressione uma tecla para iniciar o jogo'); readkey ; // Roda o jogo iniciaJogo ; while not acabouJogo do begin delay(150); DesenhaCampo; moveBola ; moveRaquetes ; VerificaChoqueRaquete ; VerificaFimJogo ; end; End. End //Tela ao sair do Jogo Else if menu1=3 then Begin clrscr; Writeln; Textcolor (red); Writeln(' ---------------------------------------------- '); Writeln(' Obrigado por jogar! '); Writeln(' ---------------------------------------------- '); Writeln; Writeln; Writeln; Writeln; Textcolor (red); Writeln (' - - - --- -´~~~~ '); Writeln (' , ´ `, '); Writeln (' ( , '); Writeln (' ( ) '); Writeln (' { --- ) '); Writeln (' { / / ) '); Writeln (' | --- | '); Writeln (' | | '); Writeln (' \ / '); Writeln (' \ / '); Writeln (' - - -´~~~~ - - -´~~~~ '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' |_____| '); Writeln; Writeln; Writeln; Writeln; Writeln; End //Instruções Else if menu1=2 then Begin clrscr; Textcolor (11); Writeln; Writeln(' Se é o jogador 1, mova a raquete com as setas do lado esquerdo e direito (<--- --->) '); Writeln(' Se é o jogador 2, mova a raquete com o "A" e o "D" '); Writeln(' O jogo vai até aos 10 pontos '); Writeln; Writeln(' Quem fizer mais pontos ganha! '); Writeln; Writeln; writeln; writeln(' ----------------------------- '); writeln(' | Boa Sorte e boas raquetadas!| '); writeln(' ----------------------------- '); Textcolor (red); Writeln('Pressione esc para voltar ao Menu'); Readkey; menuin; End Else Writeln('Opção inválida'); Until ((menu1=1) or (menu1=2) or (menu1=3)); //Fim do Programa End. Alguem que me ajude, pff! Link to post Share on other sites
nunopicado 1,251 Posted January 17 Report Share Posted January 17 A minha bola de cristal está na oficina. Talvez se explicares qual é a tua dúvida... "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to post Share on other sites
thoga31 577 Posted January 18 Report Share Posted January 18 Quais os problemas que estás a ter? Knowledge is free! Link to post Share on other sites
anonimo1337 0 Posted January 18 Author Report Share Posted January 18 Está me a dar erro no "procedure moveBola ;" Em todos os procedure, eu fiz primeiro o menu e nao me dá erro nenhum, agora com o jogo está me a dar erro nos procedure Link to post Share on other sites
nunopicado 1,251 Posted January 18 Report Share Posted January 18 2 horas atrás, anonimo1337 disse: Está me a dar erro no "procedure moveBola ;" Qual o erro que dá? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to post Share on other sites
anonimo1337 0 Posted January 18 Author Report Share Posted January 18 procedure nao esperado Link to post Share on other sites
nunopicado 1,251 Posted January 18 Report Share Posted January 18 2 minutos atrás, anonimo1337 disse: procedure nao esperado Tens aí dois problemas: 1. Tens procedimentos dentro do corpo do programa. Isso não pode acontecer. Todos os procedimentos têm de estar fora do corpo, como tens o MenuIn (este é o único que está bem). Copia-os de onde estão para cima, entre as variáveis e o MenuIn, por exemplo, ou logo a seguir ao MenuIn. 2. Tens o inicio e o fim do programa duas vezes. Uma começa na linha 42 e vai até ao fim do programa, mas lá dentro, na linha 285, tens o inicio do programa outra vez, terminando na linha 304. O END. (END seguido de ponto) só pode existir uma vez, e é a última linha do programa. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now