Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- from tkinter import *
- from tkinter import messagebox
- from random import randrange
- from decimal import Decimal
- class Jogo(object):
- def __init__(self):
- self.root = Tk()
- self.root.geometry('%dx%d' % (1200, 775))
- self.root.resizable(False, False)
- self.root.title('Jogo PC. Mat')
- # Frame para conter o canvas
- self.fra = Frame()
- self.fra.pack(pady=10)
- self.frame = Frame(bg="gray", pady=5, padx=5)
- self.frame.pack()
- self.framet = Frame()
- self.framet.pack()
- self.frametw = Frame()
- self.frametw.pack(pady=10)
- self.frametwe = Frame()
- self.frametwe.pack()
- self.frame_escolha = Frame(bg="gray", pady=2, padx=2)
- self.frame_escolha.pack()
- self.ultimo = Frame()
- self.ultimo.pack(fill=BOTH)
- #Escolher qual imagem utilizar
- self.escolha = Label(self.frame_escolha, text="Digite se quer moeda ou célula: ", bg="gray", fg="white")
- self.escolha.pack(side=TOP)
- self.escolha_entry = Entry(self.frame_escolha)
- self.escolha_entry.pack(side=TOP, pady=10)
- self.confirmar_escolha = Button(self.frame_escolha, text="Confirmar escolha", relief=RIDGE, fg="white", bg="gray22", command=self.trocar_visual)
- self.confirmar_escolha.pack(side=TOP, pady=5)
- # Criamos a tela do jogo (canvas)
- self.canvas = Canvas(self.frame, bg="white", width=400, height=450)
- self.canvas.pack()
- # E colocamos um botão para começar o jogo
- self.comecar = Button(self.framet, text="Lançar!", fg="white", bg="gray22")
- self.comecar.bind("<Button-1>", self.comeca_jogo)
- self.comecar.focus_force()
- self.comecar.pack(pady=5)
- # Label para vezes
- lb_vezes = Label(self.framet, text="Quantidade de vezes: ", font=('Verdana', 12, 'bold'))
- lb_vezes.pack(side=LEFT)
- self.entry_vezes = Entry(self.framet)
- self.entry_vezes.pack(side=LEFT)
- # Label para indicar a porcentagem de chance de cair tal lado
- self.lb_cara = Label(self.frametw, text="Probabilidade de cair: ", font=('Verdana', 12, 'italic'), bg="black", fg="white",
- pady=5, padx=50)
- self.lb_cara.pack(side=LEFT)
- #self.lb_coroa = Label(self.frametw, text="Probabilidade: coroa", font=('Verdana', 12, 'italic'), fg="gray",
- # pady=10, padx=50)
- #self.lb_coroa.pack(side=LEFT)
- # Caiu quantas vezes
- self.lb_caiu_cara = Label(self.frametwe, text="Caiu: cara", font=('Verdana', 12, 'italic'), fg="black", pady=10,
- padx=80)
- self.lb_caiu_cara.pack(side=LEFT)
- self.lb_caiu_coroa = Label(self.frametwe, text="Caiu: coroa", font=('Verdana', 12, 'italic'), fg="gray",
- pady=10, padx=80)
- self.lb_caiu_coroa.pack(side=LEFT)
- self.status_bar = Label(self.ultimo, text="Visual selecionado: ", relief=SUNKEN)
- self.status_bar.pack(fill=BOTH, pady=7)
- # Controlando os sprites
- self.number_of_sprite = 0
- self.limite = 0
- # Define o jogo
- self.jogando = False
- #Controlando o visual
- self.visual = ""
- self.opcoes_visuais = ['moeda', 'cédula', 'cedula', 'amoeba']
- # =========================================================================================#
- # Controla a troca de imagens (em milisegundos)
- self.speed = 60
- # =========================================================================================#
- self.sprite_sheet = []
- self.sprite_alpha = []
- # Carregar imagens da moeda
- # self.carregar_imagens()
- self.novo_jogo()
- self.root.mainloop()
- def trocar_visual(self):
- self.visual = self.escolha_entry.get()
- self.visual = self.visual.lower()
- if self.visual in self.opcoes_visuais:
- if self.visual == "moeda":
- messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
- self.comecar['text'] = "Lancar moeda!"
- self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
- elif self.visual == "cédula":
- messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
- self.visual = "cedula"
- self.comecar['text'] = "Lancar cédula!"
- self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
- elif self.visual == "amoeba":
- messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
- self.comecar['text'] = "Ser o rezendeevil!"
- self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
- else:
- messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
- self.comecar['text'] = "Lancar cédula!"
- self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
- else:
- if len(self.visual) > 1:
- messagebox.showerror("Informação", "Visual não foi trocado porque não há opção de %s" % (self.visual))
- else:
- messagebox.showerror("Informação", "Visual não foi trocado porque não há opção de nada")
- if len(self.sprite_sheet) > 1:
- self.sprite_sheet = []
- self.carregar_imagens()
- # Função que gera as imagens da moeda
- def carregar_imagens(self):
- #moedas
- print("Visual atual: %s" % (self.visual))
- for i in range(1, 2 + 1):
- self.sprite_sheet.append(PhotoImage(file="imagens/{}{}.gif".format(self.visual, i)))
- self.limite = len(self.sprite_sheet) - 1
- print(len(self.sprite_sheet))
- def novo_jogo(self):
- self.jogando = True
- def comeca_jogo(self, event):
- visual = self.visual
- vezes = self.entry_vezes.get()
- print(visual)
- if len(visual) < 1:
- messagebox.showwarning("Aviso", "Digite o visual que você quer!\n")
- elif len(vezes) < 1:
- messagebox.showwarning("Aviso", "Digite a quantidade de vezes!\n")
- self.jogar()
- def jogar(self):
- if self.jogando:
- vezes = self.entry_vezes.get()
- if len(vezes) < 1:
- pass
- elif int(vezes) >= 1:
- caiu_coroa = 0
- caiu_cara = 0
- vezes = int(vezes)
- for vez in range(vezes):
- print("Atualizando...\n")
- resultado = self.update("<Button-1>")
- if resultado == 'cara':
- caiu_cara += 1
- elif resultado == 'coroa':
- caiu_coroa += 1
- print("Desenhando...\n")
- self.lb_caiu_cara['text'] = "Caiu cara: " + str(caiu_cara) + " vez(es)"
- self.lb_caiu_coroa['text'] = "Caiu coroa: " + str(caiu_coroa) + " vez(es)"
- self.root.after(self.speed, self.desenhar())
- if caiu_coroa+caiu_cara == vezes:
- if self.number_of_sprite == 0 and self.visual == "moeda":
- messagebox.showinfo("Informação", "Caiu cara por último\n")
- elif self.number_of_sprite == 1 and self.visual == "moeda":
- messagebox.showinfo("Informação", "Caiu coroa por último\n")
- elif self.number_of_sprite == 0 and self.visual == "cedula":
- messagebox.showinfo("Informação", "Caiu esse rosto aí...\n")
- elif self.number_of_sprite == 1 and self.visual == "cedula":
- messagebox.showinfo("Informação", "Caiu esse bicho...\n")
- elif self.number_of_sprite == 0 or self.number_of_sprite == 1 and self.visual == "amoeba":
- messagebox.showinfo("Informação", "Você sabe que seu cérebro é uma amoeba, né?!")
- else:
- print("???")
- #elif int(vezes) >= 24:
- #messagebox.showerror("Erro", "Caso passe de 23 irá ocorrer vazamento de memória e isto não é legal!\n")
- else:
- messagebox.showerror("Erro", "Deu erro e eu não sei o porquê...\nSaindo!")
- quit()
- else:
- print("O jogo acabou!\n")
- def update(self, event):
- #moeda
- self.number_of_sprite = randrange(1, 3)
- vezes = self.entry_vezes.get()
- vezes = int(vezes)
- probabilidade = (1 / (2 ** vezes)) * 100
- print(probabilidade)
- v_arredondado = Decimal(probabilidade)
- if v_arredondado > 1:
- v_arredondado = round(v_arredondado)
- print(v_arredondado)
- if self.visual == "amoeba":
- self.lb_cara['text'] = "Probabilidade de você ser inteligente: " + str(v_arredondado) + "%"
- else:
- self.lb_cara['text'] = "Probabilidade de cair determinado lado: " + str(v_arredondado) + "%"
- #self.lb_coroa['text'] = "Probabilidade de cair coroa: " + str(v_arredondado) + "%"
- if self.number_of_sprite == 2:
- self.number_of_sprite = 0
- return "cara"
- elif self.number_of_sprite == 1:
- self.number_of_sprite = 1
- return "coroa"
- def desenhar(self):
- self.canvas.delete(ALL)
- print(self.number_of_sprite)
- self.canvas.create_image((400 / 2, 450 / 2), image=self.sprite_sheet[self.number_of_sprite])
- self.canvas.update()
- if __name__ == '__main__':
- try:
- Jogo()
- finally:
- print("Jogo finalizado!\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement