jogo do Galo - 1ª parte

 Program Jogo_do_Galo;

Uses crt,dos;
 
procedure clrmsg;
var i:byte;
begin
     textbackground(0);
     gotoxy(11,19);
     for i:=0 to 58 do
         write(' ');
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure ambasmsg;
begin
     gotoxy(17,19);
     textcolor(6);
     write('Ligue o Numeric Lock (Num Lock) e use o Keypad');
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure keypadmsg;
begin
     gotoxy(34,19);
     textcolor(6);
     write('Use o Keypad');
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure NumLmsg;
begin
     gotoxy(24,19);
     textcolor(6);
     write('Ligue o Numeric Lock (Num Lock)');
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure FESTA_1;
var c,i:byte;
begin
     repeat
     textbackground(0);
     for c:=1 to 3 do
         begin
              gotoxy(14,10+c);
              for i:=1 to 7 do
                  write(' ');
         end;
     {---------}
     if keypressed then exit;
     textcolor(14);
     gotoxy(17,11);
     write('');
     {ombros}
     textcolor(2);
     gotoxy(16,11);
     write('_');
     gotoxy(18,11);
     write('_');
     {bra‡os}
     gotoxy(15,12);
     write('/');
     gotoxy(19,12);
     write('\');
     {tronco}
     textcolor(2);
     gotoxy(17,12);
     write('Û');
     {pernas}
     textcolor(1);
     gotoxy(16,13);
     write('/');
     gotoxy(18,13);
     write('\');
     {p‚s}
     textcolor(15);
     gotoxy(15,13);
     write('_');
     gotoxy(19,13);
     write('_');
     delay(300);
     textcolor(0);
{---------}
     textbackground(0);
     for c:=1 to 3 do
         begin
              gotoxy(14,10+c);
              for i:=1 to 7 do
                  write(' ');
         end;
{---------}
     if keypressed then exit;
     {cabe‡a}
     textcolor(14);
     gotoxy(17,11);
     write('');
     {bra‡os e ombros}
     textcolor(2);
     gotoxy(15,11);
     write('\_');
     gotoxy(18,11);
     write('_/');
     {tronco}
     gotoxy(17,12);
     write('Û');
     {pernas}
     textcolor(1);
     gotoxy(15,12);
     write('__');
     textcolor(15);
     gotoxy(14,12);
     write('_');
     textcolor(1);
     gotoxy(18,12);
     write('__');
     textcolor(15);
     gotoxy(20,12);
     write('_');
     delay(300);
     until keypressed;
end;
 
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure FESTA_2;
var c,i:byte;
begin
     repeat
     textbackground(0);
     for c:=1 to 3 do
         begin
              gotoxy(59,10+c);
              for i:=1 to 7 do
                  write(' ');
         end;
     {---------}
     if keypressed then exit;
     textcolor(14);
     gotoxy(62,11);
     write('');
     {ombros}
     textcolor(2);
     gotoxy(61,11);
     write('_');
     gotoxy(63,11);
     write('_');
     {bra‡os}
     gotoxy(60,12);
     write('/');
     gotoxy(64,12);
     write('\');
     {tronco}
     textcolor(2);
     gotoxy(62,12);
     write('Û');
     {pernas}
     textcolor(1);
     gotoxy(61,13);
     write('/');
     gotoxy(63,13);
     write('\');
     {p‚s}
     textcolor(15);
     gotoxy(60,13);
     write('_');
     gotoxy(64,13);
     write('_');
     delay(300);
     textcolor(0);
{---------}
     textbackground(0);
     for c:=1 to 3 do
         begin
              gotoxy(59,10+c);
              for i:=1 to 7 do
                  write(' ');
         end;
{---------}
     if keypressed then exit;
     {cabe‡a}
     textcolor(14);
     gotoxy(62,11);
     write('');
     {bra‡os e ombros}
     textcolor(2);
     gotoxy(60,11);
     write('\_');
     gotoxy(63,11);
     write('_/');
     {tronco}
     gotoxy(62,12);
     write('Û');
     {pernas}
     textcolor(1);
     gotoxy(60,12);
     write('__');
     textcolor(15);
     gotoxy(59,12);
     write('_');
     textcolor(1);
     gotoxy(63,12);
     write('__');
     textcolor(15);
     gotoxy(65,12);
     write('_');
     delay(300);
     until keypressed;
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure jog1win(nome:string;simb:char);
begin
     clrmsg;
     gotoxy(27,19);
     textcolor(3);
     write('O ',nome,' ');
     textcolor(5);
     write('(');
     textcolor(6);
     write(simb);
     textcolor(5);
     write(')');
     gotoxy(44,19);
     textcolor(4+BLINK);
     write('  GANHOU !!');
     festa_1;
end;
{*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
procedure jog2win(nome:string;simb:char);
begin
     clrmsg;
     gotoxy(27,19);
     textcolor(3);
     write('O ',nome,' ');
     textcolor(5);
     write('(');
     textcolor(6);
     write(simb);
     textcolor(5);
     write(')');
     gotoxy(44,19);
     textcolor(4+BLINK);
     write('  GANHOU !!');
     festa_2;
end;
(*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*/*\*)
type
casa=record
  ck:boolean;
  simb:char;
end;
jogador=record
  pt:byte;
  nm:string[9];
  simb:char;
end;
 
var cs:array[1..9] of casa;
    jog1,jog2:jogador;
    linha:boolean;
    tent,max_num,num_jogad:byte;
    code:integer;
    c:word;
    tecla,simb:char;
label p,fim;
begin
     { ecran de pedir os nomes }
     textcolor(0);
     textbackground(7);
     clrscr;
     SetCBreak(false);
     {--}
     textbackground(1);
     for c:=1 to 80 do
         write(' ');
     gotoxy(30,1);
     textcolor(15);
     textbackground(1);
     write('JOGO DO GALO - Nomes');
     gotoxy(3,25);
     textcolor(0);
     textbackground(7);
     write('Insira o nome dos jogadores com o m ximo de 9 letras cada um.');
     {--}
     textbackground(1);
     textcolor(10);
     gotoxy(1,2);
     for c:=1 to 1840 do
         write('±');
     {--}
     gotoxy(7,10);
     textcolor(0);
     textbackground(3);
     write('Insira o nome do 1§ Jogador (DEFAULT=Jogador 1) :');
     gotoxy(7,13);
     textcolor(0);
     textbackground(3);
     write('Insira o nome do 2§ Jogador (DEFAULT=Jogador 2) :');
     gotoxy(7,16);
     write('Insira o numero m ximo de pontos:');
     {*}
     textcolor(7);
     gotoxy(57,10);
     for c:=0 to 10 do
         write('Û');
     textcolor(7);
     gotoxy(57,13);
     for c:=0 to 10 do
         write('Û');
     textcolor(7);
     gotoxy(41,16);
     for c:=1 to 3 do
         write('Û');
     gotoxy(58,10);
     textcolor(0);
     textbackground(7);
     readln(jog1.nm);
     if ((jog1.nm='') or (jog1.nm=' ')) then
        begin
             gotoxy(58,10);
             writeln('Jogador 1');
            jog1.nm:='Jogador 1';
        end;
     gotoxy(58,13);
     textcolor(0);
     textbackground(7);
     readln(jog2.nm);
     if ((jog2.nm='') or (jog2.nm=' ')) then
        begin
             gotoxy(58,13);
             writeln('Jogador 2');
             jog2.nm:='Jogador 2';
        end;
     jog1.nm[1]:=upcase(jog1.nm[1]);
     jog2.nm[1]:=upcase(jog2.nm[1]);
     gotoxy(1,25);
     textbackground(7);
     for c:=1 to 79 do
         write(' ');
     gotoxy(3,25);
     textcolor(0);
     textbackground(7);
     write('Insira o numero m ximo de pontos de 1 a 9 (DEFAULT= 5)');
     max_num:=5;
     code:=2;
     tecla:=#53;
     repeat
           val(tecla,max_num,code);
           if ((code<>0) or (max_num=0)) then
              begin
                   gotoxy(42,16);
                   textcolor(0);
                   max_num:=10;
                   textbackground(7);
                   writeln('N');
              end
           else
               begin
                    gotoxy(42,16);
                    textcolor(0);
                    textbackground(7);
                    writeln(max_num);
               end;
           tecla:=readkey;
           if tecla=#0 then
              tecla:=readkey;
     until ((tecla=#13) and (max_num in [1..9]));
     jog1.pt:=0;
     jog2.pt:=0;
     jog1.simb:='X';
     jog2.simb:='O';
(****************************************************************)
     num_jogad:=0;
     repeat
       { Defini‡äes iniciais }
       for c:=1 to 9 do
           cs[c].ck:=false;
       linha:=false;
       tent:=0;
       tecla:=#0;
       num_jogad:=num_jogad+1;
       if odd(num_jogad) then
         begin
              jog1.simb:='X';
              jog2.simb:='O';
         end
       else
         begin
              jog1.simb:='O';
              jog2.simb:='X';
         end;