Jogo da Velha em Pascal

Padrão

Olá pessoal! Aqui estou eu de volta. E como prometido no final do último post, teremos uma “brincadeirinha”. Utilizando os conceitos que vocês já conhecem, elaborei um Jogo da Velha bem simples, mas bastante divertido, que roda em modo console. Com isso, vocês irão perceber que o que mais importa quando se vai programar é a IMAGINAÇÃO e a CRIATIVIDADE! 🙂

tela-jogo-velha

Bom, o link com o código-fonte está aqui. Escrevi e compilei ele na IDE do Free Pascal, mas acredito que vocês conseguirão compilá-lo sem problema nenhum tanto no Pascal Zim, quanto no Turbo Pascal. Pra compilar no Pascal Zim, é só retirar a área que contém as Uses crt; e no Turbo Pascal, se caso estiver utilizando a versão Windows, colocar wincrt em vez de crt.

Vou então explicar as partes principais do código (que também está com alguns comentários)

var
   campo : array[1..3, 1..3] of integer;
   i, j, vencedor, vez, jogada, numero_jogadas : integer;
   jogada_ok : boolean;

Na declaração de variáveis, temos uma matriz 3×3 chamada campo, que representará o nosso campo de jogo. Logo em seguida, temos i e j, que são os índices que utilizaremos em algumas partes para varrer a matriz. vez representa de quem é a vez de jogar (no caso, jogador 1 ou jogador 2) . Jogada, irá armazenar o número inteiro correspondente a uma jogada (número de 1 a 9). Numero_jogadas será um contador de jogadas, pois o jogo, invariavelmente, acaba após 9 jogadas, mesmo que não haja vencedores. Por último, temos a variável booleana jogada_ok, que será o indicador para a próxima jogada. Nela colocaremos um valor verdadeiro ou falso após conferir se o número digitado pelo jogador resulta em uma jogada válida (número de 1 a 9 e se o campo selecionado já não foi marcado em uma jogada anterior).

(* 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;

No início do processamento, inicializamos o campo de jogo, com dois fors encadeados, setando todas as posições da matriz com o valor 0, que indicará ‘vazio’ em nosso jogo. Após isso são exibidas as instruções aos jogadores e espera-se que uma tecla seja pressionada para continuar, através da função readkey.

Logo em seguida, realizamos algumas inicializações de variáveis. Setamos o valor 0 para a variável vencedor. Esta variável irá armazenar o valor 1 ou 2 dependende de quem ganhar o jogo, ou ainda o valor 3 caso o jogo termine empatado. Inicializamos também a variável vez, definindo o jogador 1 como quem vai iniciar o jogo, e a variável numero_jogadas, que será o nosso contador de jogadas, com o valor 0.

Prosseguindo, entramos dentro do looping principal do jogo, controlado pela variável vencedor (enquanto igual a zero, ou seja, enquanto não houver vencedor). Dentro do looping, limpamos a tela com a função clrscr (clear screen), e mostramos o campo de jogo atual.

Em seguida, temos uma consistência. Consistência vem a ser um método de “forçar” o usuário em um programa a inserir uma entrada desejada. Com o uso de consistências, evita-se que o programa reaja de maneira indesejada, devido a entradas inesperadas. Neste caso do nosso jogo, obtemos a leitura de uma jogada e verificamos se ela é válida, conferindo se a célula selecionada está livre e se o valor digitado corresponde a uma célula válida. Dessa forma, enquanto não tivermos uma jogada válida, ficaremos em looping.

Caso a jogada seja válida, incrementamos o contador de jogadas e conferimos se existe algum ganhador. Passamos a vez para o outro jogador e voltamos ao início do looping principal, até que haja um vencedor, ou o número máximo de jogadas seja atingido. Ao final, exibimos na tela o campo de jogo novamente, e apresentamos o resultado final.

Bom, pessoal, o jogo foi feito de maneira bem simples (pode não ser a maneira mais eficiente de se fazer), mas fiz com o intuito de mostrar a vocês um exemplo do que já podem programar com o conhecimento que já sabem. Apesar de não ter nenhuma interface gráfica, ele já serve pra gastar uns minutinhos aí se divertindo e ainda mostrar pros seus amigos.

Fica aí, então, a dica: que tal fazer um RPG de opções? Com o conteúdo dos próximos posts, vocês verão que o principal para se desenvolver um jogo não é o conhecimento da linguagem (obviamente, é necessário um certo conhecimento…), mas a criatividade e a capacidade de abstração (transformar o pensamento humano em lógica de programação!).

Bom, então até o próximo post, com um conteúdo bastante útil para a programação: Registros (estruturas). Abraço a todos e até a próxima!

C:Músicas LitúrgicasLiturgia XI – Tempo Comum Ano Cvence