Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
from tkinter import* from random import shuffle class Janela: def __init__(self,toplevel): #definiremos a janela para depois fecha-la self.janela=toplevel #criamos uma lista com os temas pra pessoa escolher, caso não haja na tela do tkinter será avisado que o tema não existe self.temas=["filmes","desenhos"] #criamos uma lista vazia letras=[] onde será armazenada as letras chutadas pelo usuário, pra quando ele repetir uma um aviso ser rertonado na tela, ou #já irmos imprimindo na tela as letras chutadas self.letras=[] # vamos criar uma lista onde será armazenada as letras certas chutadas pelo jogador formando a palavra da rodada self.quemeapalavra=[] #Para lidar com os espaços, letras maisculas, e verificar e a letra chutada compoe a palavra, vamos criar uma lista onde iremos manipula-la self.palavraanalise=[] # a palavra que será escondida será definida aqui e não na funções pois ela é geral pro jogo vamos consuta-la com mais de uma função. self.palavra="" #vamos criar o contador de erros, como temos cabeça, dois braços, tronco, e duas pernas é 6 self.erros=0 #Como queremos lidar com niveis vamos criar uma variavel nivel, ele jogara o jogador num arquivo referente ao tema de acordo com o nivel dele #por exemplo se ele for jogando e o nivel dele for o 2, sera aberto o arquivo filmes2. Serão dois niveis, a cada dois acertos ele sobe um nivel #então temos que criar uma variavel que conta a quantidade de acertos self.nivel=0 self.vitorias=0 self.fr1=Frame(toplevel) self.fr1.pack(pady=2,padx=2) self.fr2=Frame(toplevel) self.fr2.pack(pady=2,padx=2) self.fr3=Frame(toplevel) self.fr3.pack(pady=2,padx=2) self.fr4=Frame(toplevel) self.fr4.pack(pady=2,padx=2) self.fr5=Frame(toplevel) self.fr5.pack(pady=2,padx=2) self.fr6=Frame(toplevel) self.fr6.pack(pady=2,padx=2) self.fr7=Frame(toplevel) self.fr7.pack(pady=2,padx=2) self.fr8=Frame(toplevel) self.fr8.pack(pady=2,padx=2) self.titulo=Label(self.fr1,text="Jogo da Forca") self.titulo.pack(side=LEFT) self.tema=Button(self.fr2,text="Escolha um Tema:",state=NORMAL,command=self.tema) self.tema.pack(pady=5,padx=5,side=LEFT) #Aqui estamos definindo o state para depois de ter escolhido o tema o cara não ficar de graça e muda o tema no meio do jogo, ele terá que ir até o fim,por #o ultimo entry também tem o state e é inciado com disabled pro cara não reiniciar o jogo sem perder e matendo o level. #Habilitaremos e desabilitaremos tanto a entrada quanto o botão self.escolhadotema=Entry(self.fr2,width=15,state=NORMAL,textvar=tv) self.escolhadotema.pack(side=LEFT,padx=5) self.vertema=Button(self.fr3,text=" Ver temas",command=self.vertemas) self.vertema.pack(side=LEFT,padx=5) self.aviso=Label(self.fr4,text="") self.aviso.pack(side=LEFT) self.boneco=Label(self.fr5,text= ''' +---------------------+ | |''') self.boneco.pack(side=LEFT) self.escolherletra=Button(self.fr6, text= "Chute uma letra:",command=self.chute) self.escolherletra.pack(side=LEFT,padx=9) self.chutedaletra=Entry(self.fr6,width=15,textvar=tv2) self.chutedaletra.pack(side=LEFT) self.palavraescolhida=Label(self.fr7,text="") self.palavraescolhida.pack(side=LEFT) self.jogarnovamente=Button(self.fr8,text="Jogar Novamente?",state=DISABLED, command=self.pergunta) self.jogarnovamente.pack(side=LEFT) self.resposta=Entry(self.fr8,width=20,state=DISABLED,textvar=tv3) self.resposta.pack(side=LEFT) def vertemas(self): temas=", ".join(self.temas) self.palavraescolhida["fg"]="blue" self.palavraescolhida["text"]="Os temas cadastrados são %s."%temas def pergunta(self): if tv3.get()!="s" or tv3.get().lower()!="sim" or tv3.get()!="n" or tv3.get().lower()!="não": self.palavraescolhida["fg"]="blue" self.palavraescolhida['text']="Responda apenas sim ou não, outros carateres não são reconhecidos" if tv3.get()== "s" or tv3.get().lower()=="sim": self.erros=0 self.letras=[] self.quemeapalavra=[] self.palavraanalise=[] self.palavra="" self.aviso['text']="" self.palavraescolhida['text']="" tv3.set("") tv2.set("") self.tema["state"]="normal" self.resposta["state"]="disabled" self.jogarnovamente["state"]="disabled" self.escolhadotema["state"]="normal" self.palavraescolhida["fg"]="blue" self.palavraescolhida['text']="Escolha seu novo tema" self.boneco['text']= ''' +---------------------+ | | ''' if tv3.get()=="n" or tv3.get().lower()=="não": self.janela.destroy() def tema(self): if self.escolhadotema.get()in self.temas: self.escolhadotema["state"]="disabled" self.tema["state"]="disabled" self.aviso["fg"]="blue" # Vamos pegar as palavras no arquivo e coloca-las numa lista, depois embaralhamos a lista e escolhemos uma palavra # vamos abrir o arquivo de acordo com o nivel tema=open("%s%s.txt"%(tv.get(),self.nivel),"r") palavras=tema.readlines() shuffle(palavras) #como embaralhamos acima a lista, posso pegar sempre o primeiro elemento da lista que a cada rodada será um elemento diferente. self.palavra=palavras[0].lower() #Vamos deixar todos os caractereres em minusculo, e vamos mantes os espaços como elementos pois depois precisaremos do indice pra substituir a letra certa for i in range (len (self.palavra)): self.palavraanalise.append(self.palavra[i]) tema.close() # a lista self.palavraanalise possui um espaço como ultimo elemento, o espaço dado para pular de linhas no arquivo, retiremo-lo del self.palavraanalise[-1] # Após escolhido o tema zeremos o entry de escolha do tema, apenas por estética tv.set("") # aqui vamos colocar na lista de quem é a palavra formada traços com a quantidade de letras que a palavra contem. for i in range (len(self.palavra)): if self.palavra[i]==" ": self.quemeapalavra.append(" ") else: self.quemeapalavra.append("_") # foi observado que estava indo o espaço usado para pular de linha no arquivo, para tira-lo fizemos o que se segue abaixo del self.quemeapalavra[-1] incognita=" ".join(self.quemeapalavra) self.aviso["text"]=incognita else: self.palavraescolhida["text"]="Tema não cadastrado" self.palavraescolhida["fg"]="red" tv.set("") def chute(self): #vamos ver se a letra já não foi escolhida if tv2.get() in self.letras: self.palavraescolhida["text"]=" Essa letra ja foi escolhida" self.palavraescolhida["fg"]="red" else: # tendo a letra não sido escolhida antes, a adicionamos a lista de letras self.letras.append(tv2.get()) #Vamos verificar se a letra escolhida esta na palavra que foi selecionada em def tema if tv2.get() in self.palavraanalise: for i in range (len(self.palavraanalise)): if self.palavraanalise[i]==tv2.get(): self.quemeapalavra[i]=tv2.get() incognita=" ".join(self.quemeapalavra) self.aviso["text"]=incognita #Vamos verificar se ele ganhou if self.quemeapalavra==self.palavraanalise: self.palavraescolhida['fg']="blue" self.palavraescolhida['text']="Você Ganhou!" self.jogarnovamente["state"]="normal" self.resposta["state"]="normal" tv2.set("") self.vitorias +=1 #vamos ver se ele ja pode subir de nivel if self.vitorias==2: self.nivel+=1 #zeremos o contador de vitorias pra que quando ele chegar novamente em 2 subir o nivel self.vitorias=0 self.palavraescolhida['text']="Parabéns subiu um nível" else: self.palavraescolhida["text"]="Errou!" self.palavraescolhida["fg"]="red" self.erros+=1 if self.erros==1: self.palavraescolhida["text"]="Errou!Você tem mais 5 chances" self.boneco["text"]=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------''' if self.erros==2: self.palavraescolhida["text"]="Errou!Você tem mais 4 chances" self.boneco['text']=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------ | || | +----+ | | | | | | | +----+''' if self.erros==3: self.palavraescolhida["text"]="Errou!Você tem mais 3 chances" self.boneco['text']=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------ | || | +----+ | X==| | | | | | +----+)''' if self.erros==4: self.palavraescolhida["text"]="Errou!Você tem mais 2 chances" self.boneco['text']=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------ | || | +----+ | X==| |==X | | | | +----+)''' if self.erros==5: self.palavraescolhida["text"]="Errou!Você tem mais 1 chances" self.boneco['text']=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------ | || | +----+ | X==| |==X | | | | +----+ | || | || | /|''' if self.erros==6: self.palavraescolhida['text']="vc perdeu" self.boneco['text']=''' +---------------------+ | | | +--+ | / x x \\ | | / \\ | | ------ | || | +----+ | X==| |==X | | | | +----+ | || || | || || | /| |\ ''' self.jogarnovamente["state"]="normal" self.resposta["state"]="normal" tv2.set("") raiz=Tk() tv= StringVar(raiz) tv2=StringVar(raiz) tv3=StringVar(raiz) Janela(raiz) raiz.mainloop()
Compartilhar