//Interface Gráfica utilizando Tkinter para a construção do jogo Pedra, Papel e Tesoura
Vídeo aula no YouTube: https://youtu.be/1LpHxmqU4AE
Faala Dev!!!
Seja bem vindo ao nosso terceiro passo nessa viagem buscando mais conhecimentos de Python. Um prazer imenso rever você aqui com a gente, aperte o cinto pois embarcaremos em mais uma viagem.
Nesse terceiro momento realizaremos a criação de uma interface gráfica para o jogo de Pedra, Papel e Tesoura ou o mundialmente conhecido Jokenpô.
Além desse texto, temos também um pequeno trecho da nossa live realizada ao vivo na Twitch! Disponibilizamos ele no canal do YouTube!
Cada código realizado durante a nossa jornada sempre estará disponível por aqui, no nosso GitHub do projeto: RoadMapPython.
Divirta-se e mãos à massa.
//Precisamos importar as bibliotecas que vão nos auxiliar nesse novo desafio
from random import randint /// Irá auxiliar à maquina na escolha de um número aleatório from tkinter import * /// Será responsável pela nossa janela gráfica from PIL import ImageTk, Image /// Nos auxiliará na manipulação das fotografias (importar as fotos e redimensionar)
#Iniciando a janela gráfica tela=Tk()
#CPU gerando um numero aleatório maquina =randint (1,3) print(maquina)
Calma, Calma Gafanhoto
Pense que você entra numa biblioteca grande, cheia de livros clássicos, de ficção , romance, quadrinhos e HQs, todos eles organizados em ninchos específicos em prateleiras que condizem com sua classificação, no nincho de clássicos, estarão presentes os livros de Guimarães Rosa, Mario de Andrade, Machado de Assis, dentre outros autores.
Daí você decide que naquela tarde chuvosa de domingo, gostaria de ler uma HQ do Homem Aranha, em meio aquela enorme biblioteca onde será que você irá obter sucesso ao procurar o seu HQ favorito?
Exatamente meu pequeno gafanhoto, no nincho de HQs.
Ao trabalharmos com funções em programação estaremos trabalhando com pequenos blocos de códigos que executam uma função bem definida.Logo, ao procurarmos as respostas para a tomada de decisão do computador é so ir no bloco definido e entender como o computador irá responder ao ser exposto aquele cenário.
//Vamos trabalhar com funçoes, dividindo cada possibilidade de jogada em um bloco
#Função Pedra def Pedra():
jogadajogador["text"]="Voce Jogou Pedra"
#Pedra
if maquina==1: # Caso o Jogador selecione Pedra e a Máquina Pedra # Obteremos um empate
Empate["text"]="Empate"
jogadamaquina["text"]="A maquina jogou Pedra"
elif maquina==2:# Caso o Jogador selecione Pedra e a Máquina Papel # Obteremos uma derrota Derrota["text"]="Derrota" jogadamaquina["text"]="A maquina jogou Papel"
elif maquina==3:# Caso o Jogador selecione Pedra e a Máquina Tesoura # Obteremos uma vitória Vitoria["text"]="Vitoria" jogadamaquina["text"]="A maquina jogou Tesoura"
#Função Papel def Papel(): jogadajogador["text"]="Voce Jogou Papel"
if maquina==2:
Empate["text"]="Empate"
jogadamaquina["text"]="A maquina jogou Papel"
elif maquina==1: Vitoria["text"]="Vitoria" jogadamaquina["text"]="A maquina jogou Pedra"
elif maquina==3: Derrota["text"]="Derrota" jogadamaquina["text"]="A maquina jogou Tesoura"
#Função Tesoura def Tesoura(): jogadajogador["text"]="Voce Jogou Tesoura"
if maquina==3:
Empate["text"]="Empate"
jogadamaquina["text"]="A maquina jogou Tesoura"
elif maquina==1: Derrota["text"]="Derrota" jogadamaquina["text"]="A maquina jogou Pedra"
elif maquina==2: Vitoria["text"]="Vitoria" jogadamaquina["text"]="A maquina jogou Papel"
Agora precisamos obter as fotos presentes na pasta, redimensionar elas e mostrar na tela.
Nessa interface gráfica construíremos botões com as imagens correspondentes.
Um botão com a foto de uma pedra, um para papel e para tesoura.
//Obter foto e redimensionar
photo1 = PhotoImage (file='pedra.png') photoimage = photo1.subsample(3, 3)
//Botao feito com a imagem
botao=Button(tela, image=photo1,command=Pedra) botao.place(x=100,y=100)
//Obter foto e redimensionar
photo = PhotoImage (file='papel.png') photoimage = photo1.subsample(10, 5)
//Botao feito com a imagem
botao1=Button(tela,image=photo,command=Papel) botao1.place(x=300,y=100)
//Obter foto e redimensionar
photo2 = PhotoImage (file='tesoura.png') photoimage = photo1.subsample(1,1 )
//Botao feito com a imagem
botao2=Button(tela,image=photo2, text='Tesoura',command=Tesoura) botao2.place(x=500,y=100)
Precisamos agora de um título para a aplicação, e algumas mensagens para serem exibidas em caso de vitória, derrota ou empate
//Titulo no topo da janela do Tkinter
Titulo=Label(tela,text=" Pedra , Papel e Tesoura",anchor=W).place(x=280,y=10,width=150,height=20)
//Mensagem na tela (Vitoria,Derrota e Empate)
Vitoria=Label(tela,text="",foreground="Green") Vitoria.place(x=300,y=250)
Derrota=Label(tela,text="",foreground="Red") Derrota.place(x=300,y=250)
Empate=Label(tela,text="",foreground="Gray") Empate.place(x=300,y=250)
//Jogada do Player
jogadajogador=Label(tela,text="") jogadajogador.place(x=300,y=300)
//Jogada da CPU
jogadamaquina=Label(tela,text="") jogadamaquina.place(x=300,y=350)
Por último,nosso botão sair, para fechar a aplicação e as dimensões da nossa janela gráfica
#Botao sair Sair=Button(tela, text='Sair',command=exit) Sair.place(x=300,y=400)
#Dimensões da janela gráfica tela.geometry("800x400+0+0") tela.configure(background="#800080") tela.mainloop()
Autor : Emanoel Faria ( GitHub : @ Whoefa)
Referências :