#20 - Criando um Jogo da Velha com Python e Colorama
🌌 Projeto CodeVerse Python - #17/2025
Fala, Galera Dev! ✨
Depois de mergulharmos num projeto mais robusto com interface gráfica usando a biblioteca Tkinter no Artigo#19 o qual criamos uma calculadora visual em Python, que tal agora darmos um passo atrás... mas nem tanto assim? Vamos voltar ao nosso bom e velho terminal, mas com um um grande diferencial!
Chegou a hora de dar vida ao terminal usando cores, porque quem disse que preto e branco é a única opção? Nesse artigo, vamos criar um Jogo da Velha totalmente funcional no terminal, mas com uma interface colorida e vibrante, graças à poderosa (e divertida) biblioteca Colorama.
Durante esse pequeno tempo de leitura vou buscar explicar de maneira bem simples:
- O que é e como funciona a biblioteca Colorama;
- Como instalar e aplicar as cores no terminal Python;
- Como criar um jogo da velha simples e aplicar cores nele;
- E como tudo isso te deixa mais próximo de construir seu próprio J.A.R.V.I.S.
Vamos nessa? 🌟
_______________________________________________________________________________________________________________________________________________
🎨 Colorama: o "Manto da Invisibilidade" que pinta seu terminal com superpoderes
Sabe aquela sensação de que seu terminal é sem graça, sem vida? Pois é, o Colorama é tipo o Manto da Feiticeira Escarlate ou o Reator Arc do Tony Stark: simples na aparência, mas capaz de transformar completamente o ambiente! Colorama é uma biblioteca que adiciona cores e estilos aos textos do terminal, permitindo que você crie saídas mais organizadas, atraentes e interativas.
Tudo isso de uma forma bem simples e sem muito código como quase tudo na linguagem python! Então vamos por a mãe na masssa e ver como utilizar mais essa biblioteca python que pode e vai agregar bastante em seus projetos. Tudo depende da sua visão de desenvolvedor e procurar maneiras de inseri-la em seus projetos, deixando-os mais vivos e com aquele diferencial, vamos lá!
⚙ Como instalar o Colorama
Ela não vem instalada por padrão, então precisamos chamar o nosso martelo Mjolnir (também conhecido como pip):
pip install colorama
🎡 Como usar
from colorama import init, Fore, Back, Style
init()
print(Fore.RED + "Texto em vermelho")
print(Back.YELLOW + "Fundo amarelo")
print(Style.BRIGHT + "Texto em negrito")
print(Style.RESET_ALL + "Resetando tudo")
🪜 Principais funcionalidades
- Fore: muda a cor da fonte (texto)
- Back: muda a cor do fundo do texto
- Style: muda o estilo do texto
- Style.RESET_ALL: reseta as cores e estilos ao padrão
_______________________________________________________________________________________________________________________________________________
⚽ Criando um Jogo da Velha com Python e Colorama
Vamos ao jogo! Criar um jogo da velha é uma ótima forma de treinar lógica, manipulação de listas e condições. Vamos incrementar isso com cores usando o Colorama para destacar cada jogada!
Estrutura do jogo
- Tabuleiro usando uma lista
- Alternância de jogadores (X e O)
- Verificação de vencedor ou empate
- Exibição colorida das jogadas
💻 Mas... Falar é Facíl, Mostre-me o Código! rs
from colorama import init, Fore, Style
init()
# Inicializando o tabuleiro
board = [" " for _ in range(9)]
def display_board():
for i in range(0, 9, 3):
print(Fore.CYAN + "|".join(board[i:i+3]))
print("-" * 5)
def make_move(position, player):
if board[position] == " ":
board[position] = Fore.RED + "X" if player == "X" else Fore.GREEN + "O"
return True
return False
def check_winner():
combos = [(0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)]
for a,b,c in combos:
if board[a] != " " and board[a] == board[b] == board[c]:
return True
return False
def game():
current_player = "X"
for _ in range(9):
display_board()
move = int(input(Fore.YELLOW + f"{current_player}, escolha uma posição (0-8): "))
if make_move(move, current_player):
if check_winner():
display_board()
print(Fore.MAGENTA + f"{current_player} venceu!")
return
current_player = "O" if current_player == "X" else "X"
else:
print(Fore.RED + "Posição inválida. Tente novamente.")
print(Fore.MAGENTA + "Empate!")
game()
🤔 Mas calma, vamos entender cada parte do código como nos outros artigos, item a item, então vamos lá...
# Importações e inicialização
from colorama import init, Fore, Style
init()
- from colorama import init, Fore, Style: importa funções e constantes da biblioteca colorama, que permite imprimir texto colorido no terminal.
- init(): inicializa o colorama para funcionar corretamente em todos os sistemas operacionais (especialmente no Windows).
# Tabuleiro inicial
board = [" " for _ in range(9)]
- Cria uma lista com 9 espaços vazios, representando as 9 posições do tabuleiro (3x3).
- A lista será modificada à medida que os jogadores fizerem suas jogadas.
# Função para exibir o tabuleiro
def display_board():
for i in range(0, 9, 3):
print(Fore.CYAN + "|".join(board[i:i+3]))
print("-" * 5)
- for i in range(0, 9, 3): percorre os índices 0, 3 e 6. Isso permite exibir uma linha do tabuleiro a cada iteração.
- board[i:i+3]: pega três elementos por vez (uma linha).
- "|".join(...): separa os elementos com barras verticais, simulando o formato visual do jogo.
- Fore.CYAN: aplica cor ciano ao conteúdo impresso.
- print("-" * 5): imprime uma linha horizontal entre as linhas do tabuleiro.
# Função para fazer jogadas
def make_move(position, player):
if board[position] == " ":
board[position] = Fore.RED + "X" if player == "X" else Fore.GREEN + "O"
return True
return False
- make_move(position, player): tenta marcar uma jogada no tabuleiro.
- if board[position] == " ": verifica se a posição está vazia.
- Se estiver: (Marca "X" ou "O" com cor: vermelho para X, verde para O) & (Retorna True "jogada válida").
- Se não: Retorna False (jogada inválida).
# Função para verificar vencedor
def check_winner():
combos = [(0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)]
for a,b,c in combos:
if board[a] != " " and board[a] == board[b] == board[c]:
return True
return False
- combos: lista com todas as combinações possíveis de vitória (linhas, colunas e diagonais).
- for a,b,c in combos: percorre cada trio de índices.
- if board[a] != " ": garante que a posição está ocupada.
- board[a] == board[b] == board[c]: verifica se os três espaços têm o mesmo símbolo.
- Se sim, retorna True, indicando vitória.
- Se não encontrar nenhum trio vencedor, retorna False.
# Função principal do jogo
def game():
current_player = "X"
for _ in range(9):
display_board()
move = int(input(Fore.YELLOW + f"{current_player}, escolha uma posição (0-8): "))
if make_move(move, current_player):
if check_winner():
display_board()
print(Fore.MAGENTA + f"{current_player} venceu!")
return
current_player = "O" if current_player == "X" else "X"
else:
print(Fore.RED + "Posição inválida. Tente novamente.")
print(Fore.MAGENTA + "Empate!")
- current_player = "X": define o jogador inicial.
- for _ in range(9): máximo de 9 jogadas (tabuleiro cheio).
- Em cada rodada:
- - Exibe o tabuleiro com display_board().
- - Solicita a posição de jogada com input() e converte para inteiro.
- - Tenta fazer a jogada com make_move():
- - Se válida e houver vencedor, mostra o tabuleiro final e declara o vencedor.
- - Caso contrário, alterna o jogador com o ternário current_player = "O" if current_player == "X" else "X".
- - Se a jogada for inválida (posição ocupada), exibe uma mensagem de erro.
- Se o loop termina sem vencedor, imprime "Empate!".
# Chamada para iniciar o jogo
game()
- Executa o jogo quando o script é iniciado.
Esse código é tipo aquele projeto raiz, mas com um tempero moderno: o bom e velho Jogo da Velha direto no terminal, só que com cores vibrantes graças à mágica da biblioteca colorama. Logo de cara, a gente monta o tabuleiro com nove espaços vazios, representando as posições de 0 a 8. Cada jogador, na sua vez, escolhe onde quer marcar: o "X" aparece em vermelho, e o "O" em verde, tudo pra deixar o jogo mais visual e divertido.
A função que mostra o tabuleiro imprime tudo em bloquinhos de três, com separadores, daquele jeitinho clássico. Depois de cada jogada, o programa verifica se alguém ganhou, comparando várias combinações possíveis de vitória. Se alguém alinhar três símbolos, o jogo anuncia o vencedor com estilo. Caso contrário, se todo mundo jogar e ninguém vencer... temos um belo empate, com direito a mensagem especial!
No fim das contas, esse projetinho é uma aula prática sobre listas, funções, if, for, entrada de dados e até uso de biblioteca externa. É simples, direto e já deixa aquele gostinho de “quero mais”. E o melhor: abre as portas pra ir além — que tal uma versão com IA, multiplayer online ou até com voz estilo J.A.R.V.I.S.? 😎
_______________________________________________________________________________________________________________________________________________
🚀 Concluindo... Um pequeno passo com Colorama, um grande salto para o J.A.R.V.I.S.
E é isso! Hoje vimos como pequenas melhorias visuais no terminal podem transformar completamente a experiência do usuário. Com o Colorama, você deixa o terminal muito mais atrativo sem sair do modo texto!
Este é mais um passo da nossa jornada CodeVerse Python 2025, onde semanalmente vamos dominando um novo ponto da linguagem python para, no final do ano, estarmos prontos para reconstruir nosso próprio J.A.R.V.I.S., o assistente virtual do Homem de Ferro, 100% em Python! Espero ter agregado nem que seja um por cento em seu dia e seua jornada com este artigo. Muito obrigado por pelos feedbaks e curtidas. Tmj 🤝
Gostou? Curte, comenta e compartilha com a comunidade dev. Me segue nas redes e acompanhe essa jornada do ProjetoCodeVerse2025 no repositório Oficial:
- GitHub: https://github.com/Carlos-CGS
- LinkedIn: https://www.linkedin.com/in/carlos-cgs
Até a próxima, e que a Força das Bibliotecas esteja com você! 🧙♂️🪀