Crie este divertido jogo de numerologia em Python para praticar a manipulação de strings e aprender sobre o Tkinter.

FLAMES é um jogo divertido para crianças que representa Amigos, Amantes, Carinhosos, Casamento e Inimigos. O jogo pega os nomes de duas pessoas e, com uma série de etapas, determina seu relacionamento. Para jogar FLAMES, anote os nomes das duas pessoas, elimine as letras correspondentes e conte os caracteres restantes.

Repita as letras da palavra, FLAMES usando a contagem e remova essa letra. Por exemplo, se a contagem for quatro, remova a letra M. A contagem começa de E novamente. Repita esse processo até restar apenas uma letra, que denota o status do relacionamento.

O Módulo Tkinter

Para construir o jogo FLAMES, você usará o módulo Tkinter. Tkinter é um módulo multiplataforma, simples e fácil de usar que você pode usar para criar interfaces gráficas de usuário rapidamente. Alguns dos aplicativos que você pode criar como iniciante usando o Tkinter incluem um Reprodutor de música, Calendário, Ferramenta de conversão de peso, e um jogo de palavras cruzadas.

instagram viewer

Para instalar o tkinter em seu sistema, execute o seguinte comando no terminal:

pip instalar tkinter

Como construir o jogo FLAMES usando Python

Você pode encontrar o código-fonte do jogo FLAMES usando Python neste Repositório GitHub.

Importe o módulo Tkinter. Defina uma função, remove_match_char() que aceita duas listas como entrada. Use um loop for aninhado para iterar em ambas as listas. Verifique se há um caractere correspondente; se houver, remova-o de ambas as listas e crie uma terceira lista que concatene ambas as listas com um asterisco no meio. O asterisco atua como um delimitador.

Retorne a terceira lista junto com a correspondência encontrada como True. Caso nenhuma letra coincida, retorne a lista conforme criada acima.

de tkinter importar *

defremove_match_char(lista1, lista2):
para eu em intervalo (len (lista1)):
para j em intervalo (len (lista2)):
se lista1[i] == lista2[j]:
c = lista1[i]
lista1.remove (c)
list2.remove (c)
lista3 = lista1 + ["*"] + lista2
retornar [lista3, Verdadeiro]
lista3 = lista1 + ["*"] + lista2
retornar [lista3, Falso]

Defina uma função, diga_status(). Recupere o nome da pessoa que o usuário digitou usando o pegar() no widget Entrada. Converta todas as letras para minúsculas e elimine os espaços entre elas. Converta o nome em uma lista de caracteres. Repita isso com o nome da segunda pessoa e defina o Continuar variável para Verdadeiro.

defdiga_status():
p1 = Person1_field.get()
p1 = p1.inferior()
p1.replace(" ", "")
lista_p1 = lista (p1)
p2 = Person2_field.get()
p2 = p2.inferior()
p2.replace(" ", "")
lista_p2 = lista (p2)
proceder = Verdadeiro

Até que o valor de continue seja verdadeiro, chame o remove_match_char() função e passar as duas listas que você acabou de criar. Armazene a lista concatenada e o status do sinalizador recebido da função. Encontre o índice do asterisco que você inseriu e divida as strings em duas listas antes e depois dele.

Conte o número de personagens nas duas listas e defina uma lista que armazene os vários status que um relacionamento pode ter de acordo com o jogo FLAMES.

enquanto Continuar:
ret_list = remove_match_char (p1_list, p2_list)
con_list = ret_list[0]
prosseguir = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]

contagem = len (p1_list) + len (p2_list)
resultado = ["Amigos", "Amor", "Afeição", "Casado", "Inimigo", "Irmãos"]

Até que as letras na lista de resultados não sejam zero, armazene o valor do índice de onde você deve executar o fatiamento. Se o índice for maior ou igual a zero, divida as listas em duas partes e armazene a string concatenada com a parte direita adicionada primeiro na ordem. Isso garante que você possa contar no sentido anti-horário.

Insira o resultado no campo de status na primeira posição do caractere para exibir o status do relacionamento.

enquanto len (resultado) > 1:
split_index = (contagem % len (resultado) - 1)

se split_index >= 0:
direita = resultado[split_index + 1:]
esquerda = resultado[: split_index]
resultado = direita + esquerda
outro:
resultado = resultado[: len (resultado) - 1]

Status_field.insert(0, resultado[0])

Defina uma função, limpar tudo(). Use a função delete() do primeiro ao último índice nos três campos de entrada para limpar o conteúdo exibido na tela. Use o método focus_set() no primeiro campo de entrada para ativar e indicar ao usuário para inserir valores nele.

deflimpar tudo():
Person1_field.delete(0, FIM)
Person2_field.delete(0, FIM)
Status_field.delete(0, FIM)
Person1_field.focus_set()

Inicialize a instância do Tkinter e exiba a janela raiz passando-a para a classe. Defina a cor de fundo de sua escolha, o tamanho e o título de seu aplicativo.

raiz = Tk()
root.configure (background='#A020F0')
raiz.geometria("700x200")
root.title("Jogo das CHAMAS")

Defina três rótulos para denotar as duas pessoas e seu status de relacionamento. Defina a janela pai na qual deseja colocá-los, o texto que deve ser exibido, a cor da fonte, a cor do plano de fundo e os estilos de fonte. Adicione algum preenchimento na direção horizontal.

label1 = Rótulo (raiz, texto="Nome 1: ", fg ='#ffffff',bg='#A020F0', fonte=("arial",20,"audacioso"), padx='20')
label2 = Rótulo (raiz, texto="Nome 2: ", fg ='#ffffff',bg='#A020F0', fonte=("arial",20,"audacioso"), padx='20')
label3 = Label (raiz, text="Status de relacionamento: ", fg ='#ffffff', bg ='#A020F0',fonte=("arial",20,"audacioso"), padx='20')

Use o gerenciador de grade para organizar os três widgets na primeira coluna. Coloque a primeira etiqueta na segunda linha, a segunda etiqueta na terceira linha e a terceira etiqueta na quarta linha.

label1.grid (linha=1, coluna=0)
label2.grid (linha=2, coluna=0)
label3.grid (linha=4, coluna=0)

Defina três widgets de entrada para obter os valores das duas pessoas e exibir seus status. Defina a janela pai na qual deseja colocar os widgets e os estilos de fonte que ela deve ter.

Person1_field = Entrada (raiz, fonte=("arial", 15, "audacioso"))
Person2_field = Entrada (raiz, fonte=("arial", 15, "audacioso"))
Status_field = Entrada (raiz, fonte=("arial",15,"audacioso"))

Da mesma forma, use o gerenciador de grade para organizar os widgets na segunda coluna. Use o ipadx propriedade para definir o número de pixels a serem preenchidos dentro das bordas do widget.

Person1_field.grid (linha=1, coluna=1, ipadx="50")
Person2_field.grid (linha=2, coluna=1, ipadx="50")
Status_field.grid (linha=4, coluna=1, ipadx="50")

Defina dois botões, Enviar e Claro. Defina a janela pai na qual deseja colocá-los, o texto que deve ser exibido, a cor de fundo, a cor da fonte, as funções que devem executar quando clicados e os estilos de fonte.

Use o gerenciador de grade para colocar os botões na quarta e na sexta linha da segunda coluna, respectivamente.

botão1 = Botão (raiz, texto="Enviar", bg ="#00ff00", fg ="preto", comando=tell_status, fonte=("arial",13,"audacioso") )
botão2 = Botão (raiz, texto="Claro", bg ="#00ff00", fg ="preto", comando=limpar_tudo, fonte=("arial",13,"audacioso"))
button1.grid (linha=3, coluna=1)
button2.grid (linha=5, coluna=1)

O circuito principal() A função diz ao Python para executar o loop de eventos Tkinter e escutar os eventos até que você feche a janela.

root.mainloop()

Junte todo o código e prepare-se para jogar o jogo FLAMES ao seu alcance.

Saída de amostra do jogo FLAMES

Ao executar o programa acima, o programa exibe o aplicativo do jogo FLAMES com três rótulos, três campos de entrada e dois botões organizados em uma grade. Ao inserir os nomes "Tony Stark" e "Pepper Potts", o programa exibe seu status de relacionamento como "Love".

Jogos que você pode construir usando Python

Pygame, Arcade, Panda3D, PyOpenGL e Pyglet são alguns módulos úteis com os quais você pode criar jogos em Python. Usando o Pygame, você pode criar jogos 2D como Super Mario Bros, Flappy Bird e Snake. Usando o Arcade, você pode construir um clone de Pac-Man, Asteroids ou Breakout.

O Panda3D pode ajudá-lo a criar jogos 3D como Toontown Online, Pirates of the Caribbean Online e Disney's Virtual Magic Kingdom.