Jogo do Galo
O seguinte programa é o Jogo do Galo recorrendo tão-somente a recursos básicos do Pascal.
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.