Jogo da Velha em Python

 Olá querido leitor e leitora, tudo certo? Tomara que sim, pois hoje vamos construir juntos um jogo da velha em Python com menos de 100 linhas de código.


Será um programa de terminal, então não espera a mais bonita e inovadora interface gráfica. Neste poste será feito em um único arquivo python, porem pode ser feito em dois para melhor organização, como você pode ver no meu Github.

As funções

Para realizar esse projeto vamos fazer algumas funções (def) para melhor organização e não precisar repetir códigos. As defs que iremos usar serão: 

  • criarBoard - para criar a estrutura do jogo
  • printBoard - para mostrar a estrutura na tela
  • getInputValido - para verificar se a posição que o usuário informa é valida
  • verificaMovimento - para verificar se não tem nada nessa posição
  • fazMovimento - realizar a jogada
  • verificaGanhador - para saber quando o jogo acaba, com vencedor ou empate

Criando as def

Antes de começar a criar as definições, vamos criar duas variáveis:

  1. vazio - define o lugar como vazio
  1. token - jogadores "X" e "O"

Agora podemos começar a trabalhar com as definições. A primeira será a função criarBroad, que nesse caso faz uma lista de listas que forma a estrutura do jogo, então retornamos broad. Na próxima def, printBoard, criamos um loop, com o for para mostrar e deixa a estrutura no formato do jogo da velha.


Vamos criar a def"getInputValido". Vale ressaltar que nessa def vamos colocar um parâmetro "message". Começamos com um "try" onde criaremos a variável "n" que recebe o número e então um if para verificar se o número está entre 1 e 3 e então diminuímos um valor dele, pois uma lista começa em 0 e como vamos inserir em uma lista, não queremos inserir no lugar errado. 

A próxima def é "verificarMovimento" que vê se pode fazer o movimento e depois outra def para realizar o movimento. Aqui usamos a variável "token" para vem qual jogar é, e então inserir o valor correto (X, O).


Por fim uma linda e função repleta de "for" e "if" para verificar se ocorreu uma linha, coluna ou diagonal preenchida com valores iguais (X, O). Caso nenhum if seja verdadeiro e todas as casas preenchidas ele declara Empate.


Chamando funções

Criamos uma variável "c" e deixamos ela como uma string vazia. Então um while para repetir o jogo enquanto a variável "c" for diferente de "sim", onde no final do loop perguntamos ao usuário se ele quer continuar e armazenamos em "c" 

Colocamos a variável player como 0, outra variável colocamos a def criarBoard(), e outra variável vencedor recebendo a def verificaGanhador(broad). Começamos o loop em quando não houver vencedor.

Criamos duas variáveis, i e j recebendo a def getInutValido("Digite a linha/coluna: "). Depois um if para verificarMovimento(broad, i, j) e então fazMovimento(broad, i, j, player). Aqui um ponto interessante, ocorre a troca entre os jogadores, player += 1 vai somar mais um ao player e então fazer o modulo dois, então se player for 0 e somar 1 e fazer modulo 2 de 1 vai dar 1, então será o player 1, caso o player ja seja 1 somar 1 fica 2 o modulo de 2 é 0, assim trocando de player.

E verifica vencedor, se retornar True, faz o print da board, e se o vencedor é X, O, ou empate, pergunta se o usuário deseja continuar caso retorne False, volta ao loop. 

Código completo


Vida longa ao Python!!!

Comentários

Postagens mais visitadas deste blog

Comparação entre interface em Python e Java

A beleza do Python