![Recriando o BFCM Globe do Shopify usando react-globe.gl](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706194139_Recriando-o-BFCM-Globe-do-Shopify-usando-react-globegl-150x150.jpg)
Recriando o BFCM Globe do Shopify usando react-globe.gl
25 de janeiro de 2024![A abordagem silenciosa da IBM para IA, Wasm e Serverless](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706196006_A-abordagem-silenciosa-da-IBM-para-IA-Wasm-e-Serverless-150x150.png)
A abordagem silenciosa da IBM para IA, Wasm e Serverless
25 de janeiro de 2024Bem-vindo ao Python Tic-Tac-Toe. Esta é uma ótima maneira de obter algum código Python. Este projeto inclui lógica e fluxo de controle suficientes para ser desafiador, mas não tanto a ponto de exigir horas de trabalho duro. Em cerca de 30 minutos, mais ou menos dependendo do nível de experiência, você terá pelo menos um projeto concluído. O resultado final ficará assim:
Este projeto usa Python e Tkinter. Tkinter é o pacote GUI padrão do Python e vem com a linguagem Python instalada.
Precisamos apenas importar dois módulos Python.
Veja o código no Gist.
Vamos definir nossas funções para que possamos codificar sem sermos bloqueados por erros. O pass
palavra-chave é um espaço reservado e nos permitirá prosseguir sem escrever nenhum código adicional nas funções.
Veja o código no Gist.
Etapa 1: construir o quadro
O primeiro passo é o nosso passo pesado Tkinter porque o módulo Tkinter dá à placa sua forma e funcionalidade.
Definimos nossa placa como uma instância do quadro Tkinter. Isso se traduz em código como board = Tk()
. Adicionando
board.title("Tic-Tac-Toe")
ao arquivo de código intitula o quadro apropriadamente.
A próxima etapa é criar uma lista de personagens. Minha lista incluirá um “x” e um “o”. Meu código ficará assim characters = ("x", "o")
. Adicionar
board.mainloop()
na parte inferior do arquivo de código. Esta permanecerá como a última linha do código. Isso mantém o tabuleiro do jogo aberto e atento aos eventos.
Neste ponto, meu arquivo de código está assim:
Veja o código no Gist.
A seguir, vamos definir a variável player que determina de quem é a vez. A variável player usa o módulo Python aleatório para escolher o jogador inicial aleatoriamente. player = random.choice(characters)
Criamos os botões com um array bidimensional ou uma lista de listas. Como ainda não existem valores para os botões, vou atribuir a cada botão o valor de um espaço vazio. Você pode atribuir a cada botão qualquer valor que desejar dentro dessa matriz bidimensional, pois reatribuiremos valores quando criarmos valores de botão posteriormente neste processo.
Veja o código no Gist.
Vamos criar a barra de status informando a cada jogador de quem é a vez e o botão de novo jogo. O widget Label do Tkinter criará a barra de status.
Veja o código no Gist.
O botão do novo jogo será semelhante ao código abaixo. O command=restart
A seção deste código é o que acionará o início do novo jogo sempre que um jogador clicar no botão.
Veja o código no Gist.
Também precisamos criar um quadro que atribuirá a cada botão um local correto no quadro. Esse código fica assim:
Veja o código no Gist.
E o quadro ficará assim:
Agora é hora de construir os botões. A construção dos botões requer o uso de loops aninhados. O loop externo define o índice da linha. O loop interno define o índice da coluna. O bloco de código dentro dos loops constrói os botões, atribui a eles os atributos necessários e os adiciona à grade. Os botões têm duas funções. A primeira é uma função lambda que atribui o valor de seu índice de linha e índice de coluna a variáveis também denominadas linha e coluna que podem ser passadas para a segunda função, next_turn()
.
Os loops interno e externo têm um intervalo codificado de 3 porque as linhas e colunas do tabuleiro incluem três quadrados cada. Cada linha e coluna começam no índice 0.
Veja o código no Gist.
No final do estágio de construção do conselho, seu arquivo de código ficará assim:
Veja o código no Gist.
E o quadro ficará assim:
Etapa 2: adicione a lógica
O next_turn()
function é a primeira função lógica que construiremos. O propósito do
next_turn()
função é verificar se há um vencedor. Se não houver vencedor, o próximo jogador terá a vez. Mas como isso realmente funciona? (Não se esqueça de adicionar os parâmetros de linha/coluna à função.)
Veja o código no Gist.
O check_winner()
a função é a próxima. Nesta função, queremos verificar cada linha, coluna e diagonal em busca de vencedor ou empate. Isso se traduz no seguinte código:
Veja o código no Gist.
Neste ponto, você poderá clicar nos quadrados e ver os personagens aparecerem e contabilizar um vencedor. O quadro ficará assim:
Para identificar laços, precisaremos construir o empty_spaces()
função. Ao ser chamado, o
empty_spaces()
A função verificará se o texto do botão está em branco ou é um caractere. Se o texto for um caractere, a função diminuirá a contagem total do
spaces
variável.
Veja o código no Gist.
Adicionando empates, o tabuleiro ficará assim:
A última coisa que precisamos fazer antes de o projeto ser concluído é construir o restart()
função. Esta função atualizará a variável global do player, ajustará o texto da barra de status do player e redefinirá todo o texto do botão para espaços em branco.
Veja o código no Gist.
Isso conclui este tutorial sobre Python Tic-Tac-Toe! Este tutorial está intimamente relacionado com este tutorial em vídeo apresentado por Bro Code porque eles fizeram um ótimo trabalho explicando como e por que eu simplesmente não conseguia fazer em texto. Confira o vídeo para mais aprendizado.
Aqui está uma cópia/cola completa do arquivo de código:
Veja o código no Gist.
O post Tic-Tac-Toe com Python e Tkinter apareceu pela primeira vez em The New Stack.