Jump to content
brunoalves5

Jogo do Galo

Recommended Posts

brunoalves5

Boas, fiz aqui o jogo do galo em pascal, sei que qualquer um o faz mas e que eu estou no meu primeiro ano de programação e queria que o comentassem, na precisam de dizer que o codigo esta desnecessariamente complexo e grande xD, mas comentem o que acham do jogo em si sff

program Noname142;
uses crt;
var
    i,j,k,n,p,p2,p3,s,X,O,u,w,j1,j2,k1,jn1,jn2,sm:integer;
    mat,mat2:array[1..5,1..11] of string;
    abc,n1,n2,esp1,esp2,espaços:string;
    r:char;
begin
    espaços:='                                                                                 ';
    writeln;
    writeln('JOGO DO GALO    by  Bruno Alves');
    writeln;
    writeln;
    writeln('Nome do jogador 1');
    readln(n1);
    writeln('Nome do jogador 2');
    readln(n2);
    j1:=0;
    j2:=0;
    k1:=0;
repeat
    k1:=k1+1;
    for i:=1 to 5 do
    begin
        for j:=1 to 11 do
        begin
            if ((i mod 2)=0) then
            begin
                if ((j mod 4)=0) then
                begin
                    mat[i,j]:='+';
                end
                else
                begin
                    mat[i,j]:='-';
                end;
            end
            else
            begin
                if ((j mod 4 )=0) then
                begin
                    mat[i,j]:='|';
                end
                else
                begin
                    mat[i,j]:=' ';
                end;
            end;
        end;
    end;
    abc:='123456789';
    w:=0;
    for i:=1 to 5 do
    begin
        for j:=1 to 11 do
        begin
            if ((i mod 2)=0) then
            begin
                if ((j mod 4)=0) then
                begin
                    mat2[i,j]:='+';
                end
                else
                begin
                    mat2[i,j]:='-';
                end;
            end
            else
            begin
                if ((j=2) or (j=6) or (j=10)) then
                begin
                    w:=w+1;
                    mat2[i,j]:=abc[w];
                end
                else
                begin
                    if ((j mod 4 )=0) then
                    begin
                        mat2[i,j]:='|';
                    end
                    else
                    begin
                        mat2[i,j]:=' ';
                    end;
                end;
            end;
        end;
    end;
    k:=0;
    repeat
        if ((k1 mod 2)=0) then
        begin
            jn1:=2;
            jn2:=1;
        end
        else
        begin
            jn2:=2;
            jn1:=1;
        end;
        k:=k+1;
        clrscr;
        writeln;
        writeln('JOGO DO GALO    by  Bruno Alves');
        writeln;
        writeln;
        writeln('Teclas a utilizar:');
        writeln;
        for i:=1 to 5 do
        begin
            for j:=1 to 11 do
            begin
                write(mat2[i,j]);
            end;
            writeln;
        end;
        if (length(n1)>length(n2)) then
        begin
            sm:=length(n1)-length(n2);
            esp1:=copy(espaços,1,sm);
            esp2:='';
        end
        else
        begin
            sm:=length(n2)-length(n1);
            esp2:=copy(espaços,1,sm);
            esp1:='';
        end;
        writeln('                                       ',n1,': ',esp2,j1,' vitórias');
        writeln('                                       ',n2,': ',esp1,j2,' vitórias');
        for i:=1 to 5 do
        begin
            for j:=1 to 11 do
            begin
                write(mat[i,j]);
            end;
            writeln;
        end;
        writeln;
        writeln('Digite o nº correspondente ao sítio onde pretende colocar a figura:');
        writeln;
        if (jn1=1) then
        begin
            if ((k mod 2)<>0) then
            begin
                writeln('Vez de ',n1,' jogar:');
            end
            else
            begin
                writeln('Vez de ',n2,' jogar:');
            end;
        end
        else
        begin
            if ((k mod 2)<>0) then
            begin
                writeln('Vez de ',n2,' jogar:');
            end
            else
            begin
                writeln('Vez de ',n1,' jogar:');
            end;
        end;
        repeat
            u:=0;
            readln(n);
            p:=n;
            p2:=1;
            p3:=n;
            s:=2;
            if (n<10) then
            begin
                if ((k mod 2)=0) then
                begin
                    while(p3>3) do
                    begin
                        p2:=p2+2;
                        p3:=p3-3;
                    end;
                    while (p3>1) do
                    begin
                        p3:=p3-1;
                        s:=s+4;
                    end;
                    if (mat[p2,s]=' ') then
                    begin
                        mat[p2,s]:='O';
                        u:=1;
                    end
                    else
                    begin
                        writeln('Esta posição já está ocupada, escolha outra por favor.');
                    end;
                end
                else
                begin
                    while(p3>3) do
                    begin
                        p2:=p2+2;
                        p3:=p3-3;
                    end;
                    while (p3>1) do
                    begin
                        p3:=p3-1;
                        s:=s+4;
                    end;
                    if (mat[p2,s]=' ') then
                    begin
                        mat[p2,s]:='X';
                        u:=1;
                    end
                    else
                    begin
                        writeln('Esta posição já está ocupada, escolha outra por favor.');
                    end;
                end;
            end
            else
            begin
                writeln('Essa posição é inválida, escolha outra por favor.');
            end;
        until(u=1);
        X:=0;
        O:=0;
        if (mat[1,2]='X') and (mat[1,6]='X') and (mat[1,10]='X') then
        begin
            X:=1;
        end;
        if (mat[3,2]='X') and (mat[3,6]='X') and (mat[3,10]='X') then
        begin
            X:=1;
        end;
        if (mat[5,2]='X') and (mat[5,6]='X') and (mat[5,10]='X') then
        begin
            X:=1;
        end;
        if (mat[1,2]='X') and (mat[3,2]='X') and (mat[5,2]='X') then
        begin
            X:=1;
        end;
        if (mat[1,6]='X') and (mat[3,6]='X') and (mat[5,6]='X') then
        begin
            X:=1;
        end;
        if (mat[1,10]='X') and (mat[3,10]='X') and (mat[5,10]='X') then
        begin
            X:=1;
        end;
        if (mat[1,2]='X') and (mat[3,6]='X') and (mat[5,10]='X') then
        begin
            X:=1;
        end;
        if (mat[1,10]='X') and (mat[3,6]='X') and (mat[5,2]='X') then
        begin
            X:=1;
        end;
        if (mat[1,2]='O') and (mat[1,6]='O') and (mat[1,10]='O') then
        begin
            O:=1;
        end;
        if (mat[3,2]='O') and (mat[3,6]='O') and (mat[3,10]='O') then
        begin
            O:=1;
        end;
        if (mat[5,2]='O') and (mat[5,6]='O') and (mat[5,10]='O') then
        begin
            O:=1;
        end;
        if (mat[1,2]='O') and (mat[3,2]='O') and (mat[5,2]='O') then
        begin
            O:=1;
        end;
        if (mat[1,6]='O') and (mat[3,6]='O') and (mat[5,6]='O') then
        begin
            O:=1;
        end;
        if (mat[1,10]='O') and (mat[3,10]='O') and (mat[5,10]='O') then
        begin
            O:=1;
        end;
        if (mat[1,2]='O') and (mat[3,6]='O') and (mat[5,10]='O') then
        begin
            O:=1;
        end;
        if (mat[1,10]='O') and (mat[3,6]='O') and (mat[5,2]='O') then
        begin
            O:=1;
        end;
    until((O=1) or (X=1)) or (k=9);
    clrscr;
    writeln;
    writeln('Program by Bruno Alves');
    writeln;
    writeln;
    for i:=1 to 5 do
    begin
        for j:=1 to 11 do
        begin
            write(mat[i,j]);
        end;
        writeln;
    end;
    writeln;
    writeln;
    if (X=1) or (O=1) then
    begin
        if (jn1=1) then
        begin
            if (X=1) then
            begin
                writeln('O vencedor desta ronda é o jogador ',n1);
                j1:=j1+1;
            end
            else
            begin
                writeln('O vencedor desta ronda é o jogador ',n2);
                j2:=j2+1;
            end;
        end
        else
        begin
            if (O=1) then
            begin
                writeln('O vencedor desta ronda é o jogador ',n1);
                j1:=j1+1;
            end
            else
            begin
                writeln('O vencedor desta ronda é o jogador ',n2);
                j2:=j2+1;
            end;
        end;
    end
    else
    begin
        writeln('Empate!');
    end;
    writeln;
    writeln('Se não quiser jogar mais clique na tecla "N"');
    readln(r);
until(r='N')or (r='n');
readln;
end.

É so copiar e por no vosso compilador

Digam o que acham sff

cumps


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
rubensilva95

Fogo para mim está muito bom!!!

Mas estou no 10º ano e tenho bases da programação e só tenho pascal este ano nos 3 anos (10,11,12)

Mas acho que a opinião de todos é valida. Para mim estás de parabéns.

Share this post


Link to post
Share on other sites
brunoalves5

tinha ai um pequeno erro com a seleçao dos vencedores mas ja corrigi

obrigado ;)


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
perez

eu o ano passado tambem fiz um mas com o design um pouco mais elaborado

        For desx := 1 to 23 do
            Begin
                Gotoxy(desx+5,6);
                Write(char(196));
                Gotoxy(desx+5,10);
                Write(char(196));
            end;
        For desy:= 1 to 11 do
            Begin
                desz:=179;
                Gotoxy(13,desy+2);
                Write(char(desz));
                Gotoxy(21,desy+2);
                Write(char(desz));
            end;
        {cruzes intersecçoes}
        Gotoxy(13,6);
        Write(char(197));
        Gotoxy(21,6);
        Write(char(197));
        Gotoxy(13,10);
        Write(char(197));
        Gotoxy(21,10);
        Write(char(197));
        {numeros}
        Gotoxy(9,4);
        Write('1');
        Gotoxy(17,4);
        Write('2');
        Gotoxy(25,4);
        Write('3');
        Gotoxy(9,8);
        Write('4');
        Gotoxy(17,8);
        Write('5');
        Gotoxy(25,8);
        Write('6');
        Gotoxy(9,12);
        Write('7');
        Gotoxy(17,12);
        Write('8');
        Gotoxy(25,12);
        Write('9');

Share this post


Link to post
Share on other sites
brunoalves5

eu ainda so sei mesmo as base de pascal xD

nunca trabalhei com gotoxy sequer xD


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
thoga31

O programa é um excelente exemplo de um jogo que recorre somente a recursos básicos do pascal. ;)

Por isto, está disponível na Wiki, seguindo este link.


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Já agora, faz o highlight do código no tópico. Lê-se melhor, como o @perez fez. ;)

(sem os espaços) [ code=pascal ] <código> [ /code ]


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

heheheh Ao tempo que não jogava isto!

Está muito bem. Claro que agora podes evoluir o código e o interface, mas para quem só tem bases, está optimo.

Já agora, fui desencantar o código do meu, que fiz em "mil novecentros e troca o passo"....

PROGRAM GALO_V1;
USES
    TP,DOS,CRT,DRIVERS,OBJECTS;

TYPE
    QUADRADO=(NULO,_O_,_X_);
    JOGADOR=(__O__,__X__);
CONST
     COR_O=2;
     COR_X=4;
VAR
   I,J:SHORTINT;
   PATH:DIRSTR;
   NAME:NAMESTR;
   EXT:EXTSTR;
   MAT:ARRAY[1..3,1..3] OF QUADRADO;
   JOG:JOGADOR;
   FINDOU,AINDA_NAO:BOOLEAN;
   JOGOS_GANHOS:ARRAY[JOGADOR] OF WORD;

PROCEDURE PRINCIPAL;FORWARD;
PROCEDURE NORM;
BEGIN
     REGS.AH:=$01;
     REGS.CH:=$06;
     REGS.CL:=$07;
     INTR($10,REGS);
END;
PROCEDURE OFF;
BEGIN
     REGS.AH:=$01;
     REGS.CH:=$70;
     REGS.CL:=$00;
     INTR($10,REGS);
END;
PROCEDURE DESENHA(TIPO:QUADRADO;I,J:SHORTINT);
VAR
   X,Y:BYTE;
BEGIN
     DONEEVENTS;
     CASE I OF
          1:X:=23;
          2:X:=36;
          3:X:=49;
     END;
     CASE J OF
          1:Y:=6;
          2:Y:=11;
          3:Y:=16;
     END;
     CASE TIPO OF
          NULO:FILLSCR(X,Y,X+10,Y+3,7);
          _O_:FILLSCR(X,Y,X+10,Y+3,COR_O);
          _X_:FILLSCR(X,Y,X+10,Y+3,COR_X);
     END;
     WINDOW(1,1,80,25);
     TEXTBACKGROUND(1);
     INITEVENTS;
END;
PROCEDURE GANHOU(TIPO:SHORTINT;JOG:QUADRADO);
VAR
   X,Y:BYTE;
BEGIN
     DONEEVENTS;
     CASE JOG OF
          _O_:JOGOS_GANHOS[__O__]:=JOGOS_GANHOS[__O__]+1;
          _X_:JOGOS_GANHOS[__X__]:=JOGOS_GANHOS[__X__]+1;
     END;
     TEXTBACKGROUND(1);
     TEXTCOLOR(COR_O);
     WRITEXY('██',4,5);
     TEXTCOLOR(14);
     WRITE(' = ',JOGOS_GANHOS[__O__]);
     TEXTCOLOR(COR_X);
     WRITEXY('██',66,5);
     TEXTCOLOR(14);
     WRITE(' = ',JOGOS_GANHOS[__X__]);
     CASE JOG OF
          _O_:TEXTCOLOR(COR_O+128);
          _X_:TEXTCOLOR(COR_X+128);
     END;
     CASE TIPO OF
          1:BEGIN
                 FOR X:=23 TO 33 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=23 TO 33 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=23 TO 33 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
          2:BEGIN
                 FOR X:=36 TO 46 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
          3:BEGIN
                 FOR X:=49 TO 59 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
          4:BEGIN
                 FOR X:=23 TO 33 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
            END;
          5:BEGIN
                 FOR X:=23 TO 33 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
            END;
          6:BEGIN
                 FOR X:=23 TO 33 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
          7:BEGIN
                 FOR X:=23 TO 33 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=49 TO 59 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
          8:BEGIN
                 FOR X:=49 TO 59 DO
                     FOR Y:=6 TO 9 DO
                         WRITEXY('█',X,Y);
                 FOR X:=36 TO 46 DO
                     FOR Y:=11 TO 14 DO
                         WRITEXY('█',X,Y);
                 FOR X:=23 TO 33 DO
                     FOR Y:=16 TO 19 DO
                         WRITEXY('█',X,Y);
            END;
     END;
     INITEVENTS;
     GOTOXY(1,22);
     CLREOL;
     TEXTCOLOR(14);
     WRITEXY('Ganhou o',8,11);
     WRITEXY('jogador:',8,12);
     CASE JOG OF
          _O_:TEXTCOLOR(COR_O);
          _X_:TEXTCOLOR(COR_X);
     END;
     WRITEXY('██',11,14);
     TEXTCOLOR(15);
     TEXTBACKGROUND(3);
     WRITEXY('  Continuar  ',65,11);
     WRITEXY('  Cancelar   ',65,14);
     REPEAT
           IF (MOUSEBUTTONS=$01) AND (MOUSEWHERE.X+1 IN [65..77]) THEN CASE MOUSEWHERE.Y+1 OF
                                                                            11:PRINCIPAL;
                                                                            14:BEGIN
                                                                                    NORM;
                                                                                    DONEEVENTS;
                                                                                    TEXTCOLOR(7);
                                                                                    FILLSCR(1,1,80,25,0);
                                                                                    HALT;
                                                                               END;
                                                                       END;
           DELAY(100);
     UNTIL FALSE;
END;

PROCEDURE PRINCIPAL;
BEGIN
     DONEEVENTS;
     FOR I:=1 TO 3 DO
         FOR J:=1 TO 3 DO
             MAT[i,J]:=NULO;
     JOG:=__O__;
     AINDA_NAO:=TRUE;
     FILLSCR(1,1,80,25,1);
     TEXTCOLOR(15);
     HOR(4,3,73,'═');
     HOR(4,23,73,'═');
     WRITEXY('GALO V1.0',4,2);
     TEXTCOLOR(11);
     WRITEXY('SoftStar Inc. (c) 21995',56,2);
     TEXTCOLOR(10);
     WRITEXY('Programado por:',4,24);
     TEXTCOLOR(14);
     WRITEXY('Nuno Miguel B. Picado',57,24);
     TEXTCOLOR(0);
     FILLSCR(21,5,61,20,7);
     WINDOW(21,5,61,21);
     HOR(1,1,40,'█');
     HOR(1,6,40,'█');
     HOR(1,11,40,'█');
     HOR(1,16,40,'█');
     VER(1,2,14,0,'██');
     VER(14,2,14,0,'██');
     VER(27,2,14,0,'██');
     VER(40,2,14,0,'██');
     WINDOW(1,1,80,25);
     TEXTBACKGROUND(1);
     TEXTCOLOR(COR_O);
     WRITEXY('██',4,5);
     TEXTCOLOR(14);
     WRITE(' = ',JOGOS_GANHOS[__O__]);
     TEXTCOLOR(COR_X);
     WRITEXY('██',66,5);
     TEXTCOLOR(14);
     WRITE(' = ',JOGOS_GANHOS[__X__]);
     TEXTCOLOR(0);
     TEXTBACKGROUND(1);
     INITEVENTS;
     REPEAT
           FINDOU:=TRUE;
           I:=0;
           J:=0;
           TEXTCOLOR(14);
           WINDOW(1,1,80,25);
           S:='Jogador actual:   ';
           WRITEXY(S,40-(LENGTH(S) DIV 2),22);
           CASE JOG OF
                __O__:TEXTCOLOR(COR_O);
                __X__:TEXTCOLOR(COR_X);
           END;
           WRITEXY('██',WHEREX-2,WHEREY);
           IF MOUSEBUTTONS=$01 THEN BEGIN
                                         IF MOUSEWHERE.X+1 IN [23..33] THEN I:=1;
                                         IF MOUSEWHERE.X+1 IN [36..46] THEN I:=2;
                                         IF MOUSEWHERE.X+1 IN [49..59] THEN I:=3;
                                         IF MOUSEWHERE.Y+1 IN [6..9] THEN J:=1;
                                         IF MOUSEWHERE.Y+1 IN [11..14] THEN J:=2;
                                         IF MOUSEWHERE.Y+1 IN [16..19] THEN J:=3;
                                         IF (I<>0) AND (J<>0) AND (MAT[i,J]=NULO) THEN BEGIN
                                                                                            CASE JOG OF
                                                                                                 __O__:BEGIN
                                                                                                            MAT[i,J]:=_O_;
                                                                                                            JOG:=__X__;
                                                                                                       END;
                                                                                                 __X__:BEGIN
                                                                                                            MAT[i,J]:=_X_;
                                                                                                            JOG:=__O__;
                                                                                                       END;
                                                                                            END;
                                                                                            DESENHA(MAT[i,J],I,J);
                                                                                       END;
                                         IF (MAT[1,1]=MAT[1,2]) AND (MAT[1,2]=MAT[1,3]) AND (MAT[1,1]<>NULO)
                                            THEN GANHOU(1,MAT[1,1]);
                                         IF (MAT[2,1]=MAT[2,2]) AND (MAT[2,2]=MAT[2,3]) AND (MAT[2,1]<>NULO)
                                            THEN GANHOU(2,MAT[2,1]);
                                         IF (MAT[3,1]=MAT[3,2]) AND (MAT[3,2]=MAT[3,3]) AND (MAT[3,1]<>NULO)
                                            THEN GANHOU(3,MAT[3,1]);
                                         IF (MAT[1,1]=MAT[2,1]) AND (MAT[2,1]=MAT[3,1]) AND (MAT[1,1]<>NULO)
                                            THEN GANHOU(4,MAT[1,1]);
                                         IF (MAT[1,2]=MAT[2,2]) AND (MAT[2,2]=MAT[3,2]) AND (MAT[1,2]<>NULO)
                                            THEN GANHOU(5,MAT[1,2]);
                                         IF (MAT[1,3]=MAT[2,3]) AND (MAT[2,3]=MAT[3,3]) AND (MAT[1,3]<>NULO)
                                            THEN GANHOU(6,MAT[1,3]);
                                         IF (MAT[1,1]=MAT[2,2]) AND (MAT[2,2]=MAT[3,3]) AND (MAT[1,1]<>NULO)
                                            THEN GANHOU(7,MAT[1,1]);
                                         IF (MAT[3,1]=MAT[2,2]) AND (MAT[2,2]=MAT[1,3]) AND (MAT[3,1]<>NULO)
                                            THEN GANHOU(8,MAT[3,1]);
                                    END;
           FOR I:=1 TO 3 DO
               FOR J:=1 TO 3 DO
                   IF MAT[i,J]=NULO THEN FINDOU:=FALSE;
           IF FINDOU THEN BEGIN
                               IF AINDA_NAO THEN BEGIN
                                                      GOTOXY(1,22);
                                                      CLREOL;
                                                      TEXTCOLOR(14);
                                                      WRITEXY('  Não há',6,12);
                                                      WRITEXY('vencedores.',6,13);
                                                      TEXTCOLOR(15);
                                                      TEXTBACKGROUND(3);
                                                      WRITEXY('  Continuar  ',65,11);
                                                      WRITEXY('  Cancelar   ',65,14);
                                                      AINDA_NAO:=FALSE;
                                                 END;
                               REPEAT
                                     IF (MOUSEBUTTONS=$01) AND (MOUSEWHERE.X+1 IN [65..77])
                                        THEN CASE MOUSEWHERE.Y+1 OF
                                                  11:PRINCIPAL;
                                                  14:BEGIN
                                                          NORM;
                                                          DONEEVENTS;
                                                          TEXTCOLOR(7);
                                                          FILLSCR(1,1,80,25,0);
                                                          HALT;
                                                     END;
                                             END;
                                     DELAY(100);
                               UNTIL FALSE;
                          END;
           DELAY(150);
     UNTIL MOUSEBUTTONS=$02;
     DONEEVENTS;
     NORM;
     TEXTCOLOR(7);
     FILLSCR(1,1,80,25,0);
     HALT;
END;
BEGIN
     CHECKBREAK:=FALSE;
     FSPLIT(PARAMSTR(0),PATH,NAME,EXT);
     OFF;
     JOGOS_GANHOS[__O__]:=0;
     JOGOS_GANHOS[__X__]:=0;
     PRINCIPAL;
END.

Escusado será dizer que isto já não compila... A unit TP, foi criada por mim na altura com algumas funções que me davam jeito em varios programas, e infelizmente o codigo dessa unit perdeu-se nas brumas da memória...

De qualquer maneira, aqui fica para quem quiser o link do jogo compilado:

http://www.mediafire.com/?i5pg333a4avc8mb

hehehe

PS: Só por curiosidade, estava eu na altura lá pelo 12º ano...


"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.

Share this post


Link to post
Share on other sites
thoga31

@nunopicado,

Excelente código! :P

É pena a tua biblioteca TP se ter perdido, se não até seria espectacular para a Wiki ter, finalmente, um código com recurso a uma biblioteca feita pelo programador - era a primeira biblioteca da Wiki. ;)

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

:P Ainda vou tentar ver se refaço a unidade, ou pelo menos as rotinas que forem sendo precisas! ;)

Obrigado!


"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.

Share this post


Link to post
Share on other sites
nunopicado

Olha, deu-me para isto, cá está... ;)  A famosa unit TP, ou como quem diz, a parte da unit TP necessária pela minha versão do GALO. A original era muito maior, mas já nem me lembro o que ela tinha lá.

UNIT TP;

INTERFACE

USES
    CRT,DOS;

VAR
   REGS:REGISTERS;
   S:STRING;

PROCEDURE FILLSCR(Xinicio,Yinicio,Xfim,Yfim,COR:INTEGER);
PROCEDURE WRITEXY(FRASE:STRING;X,Y:INTEGER);
PROCEDURE HOR(X,Y,SIZE:INTEGER;CH:STRING);
PROCEDURE VER(X,Y,SIZE,UNKNOWN:INTEGER;CH:STRING);


IMPLEMENTATION


PROCEDURE FILLSCR(Xinicio,Yinicio,Xfim,Yfim,COR:INTEGER);
VAR
   I,J:INTEGER;
BEGIN
     TEXTBACKGROUND(COR);
     FOR I:=Xinicio TO Xfim DO
         FOR J:=Yinicio TO Yfim DO
             WRITEXY(' ',I,J);
END;

PROCEDURE WRITEXY(FRASE:STRING;X,Y:INTEGER);
BEGIN
     GOTOXY(X,Y);
     WRITE(FRASE);
END;

PROCEDURE HOR(X,Y,SIZE:INTEGER;CH:STRING);
VAR
   I:INTEGER;
BEGIN
     FOR I:=X TO X+SIZE DO
         WRITEXY(CH,I,Y);
END;

PROCEDURE VER(X,Y,SIZE,UNKNOWN:INTEGER;CH:STRING);
VAR
   I:INTEGER;
BEGIN
     FOR I:=Y TO Y+SIZE DO
         WRITEXY(CH,X,I);
END;

END.

Há ali no procedure VER um parametro extra que sinceramente, não tenho a mais pequena ideia de para que servia no original... lol  😳

De notar que isto foi feito em Turbo Pascal, pelo que não sei dizer se as restantes units usadas, originais do Turbo Pascal, existem nos compiladores actuais...


"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.

Share this post


Link to post
Share on other sites
thoga31

Muito fixe! ;)

Onde se coloca a Unidade depois de compilada?

Já agora, a sua compilação gera que tipo de ficheiro?


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

No Turbo Pascal gerava um ficheiro .TPU (TP.TPU neste caso) que pode ser colocado em qualquer lado desde que se indique a pasta ao compilador (Options => Directories no Turbo Pascal)!

Noutros compiladores o ficheiro gerado será outro mas o modo de usar será semelhante!


"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.

Share this post


Link to post
Share on other sites
thoga31

Nada como experimentar!

Mais uma coisa para eu fazer para os meus programas. Umas funções e uns procedimentos, à minha maneira, que me facilitem a vida, bastando depois fazer "uses myunit"! ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

tal e qual!

Mas não faças como o "outro"! Guarda bem o código fonte! Hehehe


"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.

Share this post


Link to post
Share on other sites
brunoalves5

Muito bom esse programa ;), a ver se algum dia serei capaz de fazer algo parecido xD

so tenho pascal este ano, no 10º, depois so na faculdade e que voltarei a ter, para o ano vou passar para C/C++


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
brunoalves5

ja agora, existe algum topico aberto propositadamente para a exibição de pequenos projectos pessoais?

e que eu queria tambem mostrar um outro programa que fiz a umas semanas...


O cérebro é uma coisa fantástica, toda a gente devia ter um.www.hypescience.comKeep learning...

Share this post


Link to post
Share on other sites
thoga31

ja agora, existe algum topico aberto propositadamente para a exibição de pequenos projectos pessoais?

e que eu queria tambem mostrar um outro programa que fiz a umas semanas...

Existe um quadro. Tens de pesquisar bem o fórum! ;)

Apresentação de Projectos de programação


Knowledge is free!

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.