Nome: Everaldo José de Souza
Professor: PROF. MSc. Ricardo da Rosa
Disciplina: Algoritmo e linguagem de programação
program velha;
uses
crt;
var
i,jogada :integer;
valeu,win:boolean;
op,ganhador,vez :string;
xy :array[1..9] of string;
jogador:array[1..2] of string;
procedure tabuleiro;
begin
clrscr ;
writeln('Jogo da Velha');
writeln;
writeln(' ',xy[1],' | ',xy[2],' | ',xy[3]);
writeln('---+---+--- ');
writeln(' ',xy[4],' | ',xy[5],' | ',xy[6]);
writeln('---+---+--- ');
writeln(' ',xy[7],' | ',xy[8],' | ',xy[9]);
writeln;
writeln;
end;
procedure teste;
begin
//Testa se X ganhou
if ( xy[1]+xy[2]+xy[3] = 'XXX' ) or ( xy[4]+xy[5]+xy[6] = 'XXX' ) or ( xy[7]+xy[8]+xy[9] = 'XXX' ) or ( xy[1]+xy[4]+xy[7] = 'XXX' ) or ( xy[2]+xy[5]+xy[8] = 'XXX' ) or ( xy[3]+xy[6]+xy[9] = 'XXX' ) or ( xy[7]+xy[5]+xy[3] = 'XXX' ) or ( xy[1]+xy[5]+xy[9] = 'XXX' ) then
begin
ganhador:= 'X';
end;
//Testa se X ganhou
//Testa se O ganhou
if ( xy[1]+xy[2]+xy[3] = 'OOO' ) or ( xy[4]+xy[5]+xy[6] = 'OOO' ) or ( xy[7]+xy[8]+xy[9] = 'OOO' ) or ( xy[1]+xy[4]+xy[7] = 'OOO' ) or ( xy[2]+xy[5]+xy[8] = 'OOO' ) or ( xy[3]+xy[6]+xy[9] = 'OOO' ) or ( xy[7]+xy[5]+xy[3] = 'OOO' ) or ( xy[1]+xy[5]+xy[9] = 'OOO' ) then
begin
ganhador:= 'O';
end;
//Testa se O ganhou
//Imprime empate na tela
if (i = 9) and (ganhador= ' ') then
begin
tabuleiro;
writeln('Ninguem Venceu');
win := true;
end;
//Imprime empate na tela
//Imprime Vencedor na tela
if ganhador<> ' ' then
begin
tabuleiro;
if ( ganhador='X' ) then
begin
write('Parabéns ',jogador[1],' venceu');
end
else
begin
write('Parabéns ',jogador[2],' venceu');
end;
win := true;
end;
//Imprime Vencedor na tela
end;
Begin
//Estrutura para capturar jogador
for i := 1 to 2 do
begin
write( 'Nome do ',i,chr( 167 ),' jogador: ' ) ;
readln( jogador[i] ) ;
clrscr ;
end;
//Estrutura para capturar jogador
repeat
ganhador:= ' ';
//Popula tabuleiro com string de 1~9 usando tabela asc 49=1 ...
for i := 1 to 9 do
begin
xy[i]:=chr(i+48);
end;
//Popula tabuleiro com string de 1~9 usando tabela asc 49=1 ...
win := false;
vez := 'O';
i := 0;
while win <> true do
begin
inc(i);//incrementa o i = i:=i+1;
//So serve pra colorir o tabuleiro
textcolor( 14 ) ; textbackground( 3 ) ;
//So serve pra colorir o tabuleiro
//Controla Vez
if vez = 'X' then
begin
vez := 'O'
end
else
begin
vez := 'X';
end;
//Controla Vez
tabuleiro;
jogada := 0;
while (jogada = 0) and (win <> true) do
begin
valeu:=false;
repeat
//Controla Jogador
if ( vez='X' ) then
begin
write(jogador[1],' (',vez,'):')
end
else
begin
write(jogador[2],' (',vez,'):');
end;
//Controla Jogador
readln( jogada ) ;
//Testa se a joga pode ser realizada
if ( jogada >= 1) and (jogada <= 9 ) and (xy[jogada]=chr(jogada+48) ) then
begin
valeu:=true;
end
else
begin
clrscr ;
tabuleiro; //caso a joga nao possa ser realizada limpa tela e chama novamente o tabuleiro
end;
until(valeu=true);
//Testa se a joga pode ser realizada
if jogada = 0 then
begin
win:=true;
end;
if (xy[jogada] = chr(jogada+48)) then
begin
xy[jogada] := vez
end
else
begin
jogada := 0;
end;
end;
teste;
end;
writeln;
writeln;
writeln( 'Jogar novamente "S" ou "N"' ) ;
op:=readkey;
op:=upcase(op);
until ( op='N');
End.
uses
crt;
var
i,jogada :integer;
valeu,win:boolean;
op,ganhador,vez :string;
xy :array[1..9] of string;
jogador:array[1..2] of string;
procedure tabuleiro;
begin
clrscr ;
writeln('Jogo da Velha');
writeln;
writeln(' ',xy[1],' | ',xy[2],' | ',xy[3]);
writeln('---+---+--- ');
writeln(' ',xy[4],' | ',xy[5],' | ',xy[6]);
writeln('---+---+--- ');
writeln(' ',xy[7],' | ',xy[8],' | ',xy[9]);
writeln;
writeln;
end;
procedure teste;
begin
//Testa se X ganhou
if ( xy[1]+xy[2]+xy[3] = 'XXX' ) or ( xy[4]+xy[5]+xy[6] = 'XXX' ) or ( xy[7]+xy[8]+xy[9] = 'XXX' ) or ( xy[1]+xy[4]+xy[7] = 'XXX' ) or ( xy[2]+xy[5]+xy[8] = 'XXX' ) or ( xy[3]+xy[6]+xy[9] = 'XXX' ) or ( xy[7]+xy[5]+xy[3] = 'XXX' ) or ( xy[1]+xy[5]+xy[9] = 'XXX' ) then
begin
ganhador:= 'X';
end;
//Testa se X ganhou
//Testa se O ganhou
if ( xy[1]+xy[2]+xy[3] = 'OOO' ) or ( xy[4]+xy[5]+xy[6] = 'OOO' ) or ( xy[7]+xy[8]+xy[9] = 'OOO' ) or ( xy[1]+xy[4]+xy[7] = 'OOO' ) or ( xy[2]+xy[5]+xy[8] = 'OOO' ) or ( xy[3]+xy[6]+xy[9] = 'OOO' ) or ( xy[7]+xy[5]+xy[3] = 'OOO' ) or ( xy[1]+xy[5]+xy[9] = 'OOO' ) then
begin
ganhador:= 'O';
end;
//Testa se O ganhou
//Imprime empate na tela
if (i = 9) and (ganhador= ' ') then
begin
tabuleiro;
writeln('Ninguem Venceu');
win := true;
end;
//Imprime empate na tela
//Imprime Vencedor na tela
if ganhador<> ' ' then
begin
tabuleiro;
if ( ganhador='X' ) then
begin
write('Parabéns ',jogador[1],' venceu');
end
else
begin
write('Parabéns ',jogador[2],' venceu');
end;
win := true;
end;
//Imprime Vencedor na tela
end;
Begin
//Estrutura para capturar jogador
for i := 1 to 2 do
begin
write( 'Nome do ',i,chr( 167 ),' jogador: ' ) ;
readln( jogador[i] ) ;
clrscr ;
end;
//Estrutura para capturar jogador
repeat
ganhador:= ' ';
//Popula tabuleiro com string de 1~9 usando tabela asc 49=1 ...
for i := 1 to 9 do
begin
xy[i]:=chr(i+48);
end;
//Popula tabuleiro com string de 1~9 usando tabela asc 49=1 ...
win := false;
vez := 'O';
i := 0;
while win <> true do
begin
inc(i);//incrementa o i = i:=i+1;
//So serve pra colorir o tabuleiro
textcolor( 14 ) ; textbackground( 3 ) ;
//So serve pra colorir o tabuleiro
//Controla Vez
if vez = 'X' then
begin
vez := 'O'
end
else
begin
vez := 'X';
end;
//Controla Vez
tabuleiro;
jogada := 0;
while (jogada = 0) and (win <> true) do
begin
valeu:=false;
repeat
//Controla Jogador
if ( vez='X' ) then
begin
write(jogador[1],' (',vez,'):')
end
else
begin
write(jogador[2],' (',vez,'):');
end;
//Controla Jogador
readln( jogada ) ;
//Testa se a joga pode ser realizada
if ( jogada >= 1) and (jogada <= 9 ) and (xy[jogada]=chr(jogada+48) ) then
begin
valeu:=true;
end
else
begin
clrscr ;
tabuleiro; //caso a joga nao possa ser realizada limpa tela e chama novamente o tabuleiro
end;
until(valeu=true);
//Testa se a joga pode ser realizada
if jogada = 0 then
begin
win:=true;
end;
if (xy[jogada] = chr(jogada+48)) then
begin
xy[jogada] := vez
end
else
begin
jogada := 0;
end;
end;
teste;
end;
writeln;
writeln;
writeln( 'Jogar novamente "S" ou "N"' ) ;
op:=readkey;
op:=upcase(op);
until ( op='N');
End.
Nenhum comentário:
Postar um comentário