image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Carlos CGS
Carlos CGS19/05/2025 08:14
Compartilhe
WEX - End to End EngineeringRecomendados para vocêWEX - End to End Engineering

#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")
    

    image

    🪜 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

    1. Tabuleiro usando uma lista
    2. Alternância de jogadores (X e O)
    3. Verificação de vencedor ou empate
    4. 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.

    image

    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:

    Até a próxima, e que a Força das Bibliotecas esteja com você! 🧙♂️🪀

    Compartilhe
    Recomendados para você
    WEX - End to End Engineering
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Comentários (0)
    Recomendados para vocêWEX - End to End Engineering