Skip to content

Instantly share code, notes, and snippets.

@rafaeltoledo rafaeltoledo/velha.pas Secret
Last active Oct 9, 2019

Embed
What would you like to do?
Jogo da Velha em Pascal
////////////////////////////////////////////////////////////////////////////
// //
// JOGO DA VELHA Versão 1 //
// Autor: Rafael Toledo //
// rafaeltoledo.net //
// //
////////////////////////////////////////////////////////////////////////////
program
jogo_da_velha;
uses
crt;
var
campo : array[1..3, 1..3] of integer;
i, j, vencedor, vez, jogada, numero_jogadas : integer;
jogada_ok : boolean;
begin
(* Inicializando o campo de jogo *)
for i := 1 to 3 do
begin
for j := 1 to 3 do
begin
campo[i, j] := 0;
end;
end;
(* Exibindo as instruções *)
writeln('JOGO DA VELHA - v1 - Instrucoes');
writeln;
writeln('O jogador 1 comeca. Digite o numero de 1 a 9 do teclado');
writeln('numerico correspondente a cada uma das "casas" do campo.');
writeln('Ganha o jogador que completar uma linha da horizontal,');
writeln('vertical ou diagonal.');
readkey; // Comando que "pausa", esperando o usuario teclar para continuar
vencedor := 0;
vez := 1;
numero_jogadas := 0;
while (vencedor = 0) do
begin
(* Desenhando o campo de jogo *)
clrscr; // Limpa a tela
writeln;
writeln(' ', campo[1, 1], ' | ', campo[1, 2], ' | ', campo[1, 3]);
writeln(' -----------');
writeln(' ', campo[2, 1], ' | ', campo[2, 2], ' | ', campo[2, 3]);
writeln(' -----------');
writeln(' ', campo[3, 1], ' | ', campo[3, 2], ' | ', campo[3, 3]);
writeln;
repeat // Aqui teremos uma consistência
write(' Digite a jogada, jogador ', vez, ': ');
readln(jogada);
(* Verificamos se a jogada é válida *)
if (jogada = 1) then
begin
if (campo[3, 1] = 0) then
begin
campo[3, 1] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 2) then
begin
if (campo[3, 2] = 0) then
begin
campo[3, 2] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 3) then
begin
if (campo[3, 3] = 0) then
begin
campo[3, 3] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 4) then
begin
if (campo[2, 1] = 0) then
begin
campo[2, 1] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 5) then
begin
if (campo[2, 2] = 0) then
begin
campo[2, 2] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 6) then
begin
if (campo[2, 3] = 0) then
begin
campo[2, 3] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 7) then
begin
if (campo[1, 1] = 0) then
begin
campo[1, 1] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 8) then
begin
if (campo[1, 2] = 0) then
begin
campo[1, 2] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else if (jogada = 9) then
begin
if (campo[1, 3] = 0) then
begin
campo[1, 3] := vez;
jogada_ok := true;
end
else
begin
jogada_ok := false;
end;
end
else
begin
jogada_ok := false;
end;
until(jogada_ok = true); // Até que uma jogada válida seja feita
numero_jogadas := numero_jogadas + 1; // Incrementa o contador de jogadas
(* Verificando se temos algum ganhador *)
if (campo[1, 1] = campo[1, 2]) and (campo[1, 2] = campo[1, 3]) and (campo[1, 3] <> 0) then
begin
vencedor := vez;
end
else if (campo[2, 1] = campo[2, 2]) and (campo[2, 2] = campo[2, 3]) and (campo[2, 3] <> 0) then
begin
vencedor := vez;
end
else if (campo[3, 1] = campo[3, 2]) and (campo[3, 2] = campo[3, 3]) and (campo[3, 3] <> 0) then
begin
vencedor := vez;
end
else if (campo[1, 1] = campo[2, 1]) and (campo[2, 1] = campo[3, 1]) and (campo[3, 1] <> 0) then
begin
vencedor := vez;
end
else if (campo[1, 2] = campo[2, 2]) and (campo[2, 2] = campo[3, 2]) and (campo[3, 2] <> 0) then
begin
vencedor := vez;
end
else if (campo[1, 3] = campo[2, 3]) and (campo[2, 3] = campo[3, 3]) and (campo[3, 3] <> 0) then
begin
vencedor := vez;
end
else if (campo[1, 1] = campo[2, 2]) and (campo[2, 2] = campo[3, 3]) and (campo[3, 3] <> 0) then
begin
vencedor := vez;
end
else if (campo[1, 3] = campo[2, 2]) and (campo[2, 2] = campo[3, 1]) and (campo[3, 1] <> 0) then
begin
vencedor := vez;
end
else if (numero_jogadas = 9) then
begin
vencedor := 3; // Se já foram 9 rodadas e ninguém ganhou, o jogo acaba
end;
if (vez = 2) then
begin
vez := 1;
end
else
begin
vez := 2;
end;
end;
(* Mostrando o campo de jogo final *)
clrscr; // Limpa a tela
writeln;
writeln(' ', campo[1, 1], ' | ', campo[1, 2], ' | ', campo[1, 3]);
writeln(' -----------');
writeln(' ', campo[2, 1], ' | ', campo[2, 2], ' | ', campo[2, 3]);
writeln(' -----------');
writeln(' ', campo[3, 1], ' | ', campo[3, 2], ' | ', campo[3, 3]);
writeln;
if (vencedor = 1) then
begin
write(' Parabens Jogador 1! Voce ganhou!');
end
else if(vencedor = 2) then
begin
write(' Parabens Jogador 2! Voce ganhou!');
end
else
begin
write(' Ops... Deu velha...');
end;
readkey;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.