Resultados 1 a 7 de 7

Tópico: Jogo do Galo em Pascal

  1. #1

    Jogo do Galo em Pascal

    Boas!

    Tenho aqui um jogo do galo que fiz durante as aulas de IP este ano (com ajuda em jogos já feitos), mas tem um erro que não consigo arranjar. Quando faço o 3 em linha, o último simbolo não aperece, ou seja, por exemplo, quando tenho 2 X na diagonal e ponho o 3º X no canto, simplesmente não aparece, mas diz quem ganhou que neste caso era o jogador do X.

    Será que alguém me pode dar um jeitinho e arranjar o problema? E já agora, queria fazer um quadrado à volta do jogo, mas sem ser com muitos gotoxy (só consigo fazer assim).

    Eu sei que tá muito simples, mas não sou nenhum génio da programação

    Código:
    program jogo_do_galo_final;
    uses crt;
    var jogada:integer;
        vez:char;
        posicao:array[1..9] of string;
        fim:integer;
        i:integer;
        vencedor:char;
     
    {========================}
     
    procedure teclas;
    begin
            clrscr;
            writeln;
            writeln('Teclas do Jogo');
            writeln;
            writeln(' 7 | 8 | 9 ');
            writeln('---+---+---');
            writeln(' 4 | 5 | 6 ');
            writeln('---+---+---');
            writeln(' 1 | 2 | 3 ');
    end;
     
    {=======================}
     
    procedure jogo;
    begin
            gotoxy(30,10);
            writeln('Jogo do Galo');
            gotoxy(30,12);
            writeln(' ',posicao[7],' | ',posicao[8],' | ',posicao[9]);
            gotoxy(30,13);
            writeln('---+---+---');
            gotoxy(30,14);
            writeln(' ',posicao[4],' | ',posicao[5],' | ',posicao[6]);
            gotoxy(30,15);
            writeln('---+---+---');
            gotoxy(30,16);
            writeln(' ',posicao[1],' | ',posicao[2],' | ',posicao[3]);
     
    end;
     
    {========================}
     
    procedure verifica;
    begin
            if (posicao[1]+posicao[2]+posicao[3]) = 'XXX' then vencedor:='X';
            if (posicao[4]+posicao[5]+posicao[6]) = 'XXX' then vencedor:='X';
            if (posicao[7]+posicao[8]+posicao[9]) = 'XXX' then vencedor:='X';
            if (posicao[1]+posicao[4]+posicao[7]) = 'XXX' then vencedor:='X';
            if (posicao[2]+posicao[5]+posicao[8]) = 'XXX' then vencedor:='X';
            if (posicao[3]+posicao[6]+posicao[9]) = 'XXX' then vencedor:='X';
            if (posicao[7]+posicao[5]+posicao[3]) = 'XXX' then vencedor:='X';
            if (posicao[1]+posicao[5]+posicao[9]) = 'XXX' then vencedor:='X';
            if (posicao[1]+posicao[2]+posicao[3]) = 'OOO' then vencedor:='O';
            if (posicao[4]+posicao[5]+posicao[6]) = 'OOO' then vencedor:='O';
            if (posicao[7]+posicao[8]+posicao[9]) = 'OOO' then vencedor:='O';
            if (posicao[1]+posicao[4]+posicao[7]) = 'OOO' then vencedor:='O';
            if (posicao[2]+posicao[5]+posicao[8]) = 'OOO' then vencedor:='O';
            if (posicao[3]+posicao[6]+posicao[9]) = 'OOO' then vencedor:='O';
            if (posicao[7]+posicao[5]+posicao[3]) = 'OOO' then vencedor:='O';
            if (posicao[1]+posicao[5]+posicao[9]) = 'OOO' then vencedor:='O';
            if (i=9) and (vencedor=' ')
            then begin
                            gotoxy(30,18);
                            writeln('Empate!');
                            writeln;
                            readln;
                            fim:=1;
                 end;
            if (vencedor<>' ')
            then begin
                            gotoxy(30,18);
                            writeln('O jogador ',vencedor,' ganhou!');
                            writeln;
                            readln;
                            fim:=1;
                 end;
    end;
     
    {***************************}
     
    begin
            vencedor:=' ';
            for i := 1 to 9 do
            posicao[i]:=' ';
            fim:=0;
            vez:='O';
            i:=0;
            while fim <> 1 do
            begin
                    if vez = 'X'
                    then vez:='O'
                    else vez := 'X';
                    teclas;
                    jogo;
                    jogada:=0;
                    while (jogada=0) and (fim <> 1) do
                    begin
                            writeln;
                            write('Vez do jogador ',vez,': ');
                            readln(jogada);
                            if jogada=0
                            then fim:=1;
                            if posicao[jogada]=' '
                            then posicao[jogada]:=vez
                            else jogada:=0;
                    end;
            verifica;
            end;
    end.
    Espero que alguém se disponibilize e desde já, obrigado!
    Última edição de Transfixer; 08-06-2008 às 20:42

  2. #2
    eu pouco ou nada percebo disto mas depois de tar pronto poe um link para nos sacar-mos para ver como está.

    cumps

  3. #3
    Eu não fiz com readkeys porque dava mais trabalho xP

  4. #4
    I fold therefore I AM
    Data do Registo
    19-12-2004
    Local
    Coimbra
    Eu fiz uma vez um jogo em turbopascal do galo... o prof disse-me para eu nao fazer mais nada até ao fim do ano q parecia mal xD mas já nao faço a minima onde anda ele...


  5. #5

  6. #6
    Até me lembro de ter feito também um jogo do galo no Pascal, mas se queres que te diga, eu fiz de uma maneira muito mais complicada.

    Acho que as procedures que fizeste estão correctas.

    O problema só pode estar no main dentro desse ciclo while.

  7. #7
    Folding Member Avatar de BaM MaRgErA
    Data do Registo
    02-06-2004
    Local
    Amadora
    Se eu não me engano, a função "jogo" é a que desenha. Ou seja, na tua ultima jogada vencedora, tu fazes um verifica. Lá dentro ele muda a a variável "fim" para 1 (porque ha um vencedor), mas nao entra dentro do while, logo não faz o ultimo "jogo" (que iria desenhar o resultado final). Penso eu
    <Insira uma mensagem pessoal>

Tópicos Similares

  1. Jogo do galo c#
    By Devil_Angel100 in forum Programação
    Respostas: 9
    Última Mensagem: 16-02-2010, 19:49
  2. Jogo do Galo em vb
    By M@r!0 in forum Programação
    Respostas: 15
    Última Mensagem: 07-01-2010, 22:02
  3. Jogo do Galo em C
    By nielsky in forum Programação
    Respostas: 14
    Última Mensagem: 01-01-2010, 16:38
  4. Jogo do galo VS Pc
    By johnyman in forum Programação
    Respostas: 6
    Última Mensagem: 16-07-2007, 03:33
  5. [HELP] jogo do galo @ pascal
    By Ghetto_smurf in forum Programação
    Respostas: 2
    Última Mensagem: 05-06-2006, 13:22

Registe-se no fórum e active o seu registo para deixar de ver este anúncio.