Advertisement
renix1

jogo moeda py 3.x

Aug 22nd, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.85 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. from tkinter import *
  4. from tkinter import messagebox
  5. from random import randrange
  6. from decimal import Decimal
  7.  
  8. class Jogo(object):
  9.     def __init__(self):
  10.         self.root = Tk()
  11.         self.root.geometry('%dx%d' % (1200, 775))
  12.         self.root.resizable(False, False)
  13.         self.root.title('Jogo PC. Mat')
  14.  
  15.         # Frame para conter o canvas
  16.         self.fra = Frame()
  17.         self.fra.pack(pady=10)
  18.         self.frame = Frame(bg="gray", pady=5, padx=5)
  19.         self.frame.pack()
  20.         self.framet = Frame()
  21.         self.framet.pack()
  22.         self.frametw = Frame()
  23.         self.frametw.pack(pady=10)
  24.         self.frametwe = Frame()
  25.         self.frametwe.pack()
  26.         self.frame_escolha = Frame(bg="gray", pady=2, padx=2)
  27.         self.frame_escolha.pack()
  28.         self.ultimo = Frame()
  29.         self.ultimo.pack(fill=BOTH)
  30.         #Escolher qual imagem utilizar
  31.         self.escolha = Label(self.frame_escolha, text="Digite se quer moeda ou célula: ", bg="gray", fg="white")
  32.         self.escolha.pack(side=TOP)
  33.         self.escolha_entry = Entry(self.frame_escolha)
  34.         self.escolha_entry.pack(side=TOP, pady=10)
  35.         self.confirmar_escolha = Button(self.frame_escolha, text="Confirmar escolha", relief=RIDGE, fg="white", bg="gray22", command=self.trocar_visual)
  36.         self.confirmar_escolha.pack(side=TOP, pady=5)
  37.         # Criamos a tela do jogo (canvas)
  38.         self.canvas = Canvas(self.frame, bg="white", width=400, height=450)
  39.         self.canvas.pack()
  40.  
  41.         # E colocamos um botão para começar o jogo
  42.         self.comecar = Button(self.framet, text="Lançar!", fg="white", bg="gray22")
  43.         self.comecar.bind("<Button-1>", self.comeca_jogo)
  44.         self.comecar.focus_force()
  45.         self.comecar.pack(pady=5)
  46.  
  47.         # Label para vezes
  48.         lb_vezes = Label(self.framet, text="Quantidade de vezes: ", font=('Verdana', 12, 'bold'))
  49.         lb_vezes.pack(side=LEFT)
  50.         self.entry_vezes = Entry(self.framet)
  51.         self.entry_vezes.pack(side=LEFT)
  52.  
  53.         # Label para indicar a porcentagem de chance de cair tal lado
  54.         self.lb_cara = Label(self.frametw, text="Probabilidade de cair: ", font=('Verdana', 12, 'italic'), bg="black", fg="white",
  55.                              pady=5, padx=50)
  56.         self.lb_cara.pack(side=LEFT)
  57.         #self.lb_coroa = Label(self.frametw, text="Probabilidade: coroa", font=('Verdana', 12, 'italic'), fg="gray",
  58.                              # pady=10, padx=50)
  59.         #self.lb_coroa.pack(side=LEFT)
  60.  
  61.         # Caiu quantas vezes
  62.         self.lb_caiu_cara = Label(self.frametwe, text="Caiu: cara", font=('Verdana', 12, 'italic'), fg="black", pady=10,
  63.                                   padx=80)
  64.         self.lb_caiu_cara.pack(side=LEFT)
  65.         self.lb_caiu_coroa = Label(self.frametwe, text="Caiu: coroa", font=('Verdana', 12, 'italic'), fg="gray",
  66.                                    pady=10, padx=80)
  67.         self.lb_caiu_coroa.pack(side=LEFT)
  68.         self.status_bar = Label(self.ultimo, text="Visual selecionado: ", relief=SUNKEN)
  69.         self.status_bar.pack(fill=BOTH, pady=7)
  70.  
  71.         # Controlando os sprites
  72.         self.number_of_sprite = 0
  73.         self.limite = 0
  74.         # Define o jogo
  75.         self.jogando = False
  76.         #Controlando o visual
  77.         self.visual = ""
  78.         self.opcoes_visuais = ['moeda', 'cédula', 'cedula', 'amoeba']
  79.  
  80. # =========================================================================================#
  81.         # Controla a troca de imagens (em milisegundos)
  82.         self.speed = 60
  83. # =========================================================================================#
  84.  
  85.         self.sprite_sheet = []
  86.         self.sprite_alpha = []
  87.  
  88.         # Carregar imagens da moeda
  89.         # self.carregar_imagens()
  90.  
  91.         self.novo_jogo()
  92.         self.root.mainloop()
  93.  
  94.     def trocar_visual(self):
  95.         self.visual = self.escolha_entry.get()
  96.         self.visual = self.visual.lower()
  97.         if self.visual in self.opcoes_visuais:
  98.             if self.visual == "moeda":
  99.                 messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
  100.                 self.comecar['text'] = "Lancar moeda!"
  101.                 self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
  102.             elif self.visual == "cédula":
  103.                 messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
  104.                 self.visual = "cedula"
  105.                 self.comecar['text'] = "Lancar cédula!"
  106.                 self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
  107.             elif self.visual == "amoeba":
  108.                 messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
  109.                 self.comecar['text'] = "Ser o rezendeevil!"
  110.                 self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
  111.             else:
  112.                 messagebox.showinfo("Informação", "Visual trocado por %s!\n" % (self.visual))
  113.                 self.comecar['text'] = "Lancar cédula!"
  114.                 self.status_bar['text'] = "Visual selecionado: %s" % (self.visual)
  115.         else:
  116.             if len(self.visual) > 1:
  117.                 messagebox.showerror("Informação", "Visual não foi trocado porque não há opção de %s" % (self.visual))
  118.             else:
  119.                 messagebox.showerror("Informação", "Visual não foi trocado porque não há opção de nada")
  120.         if len(self.sprite_sheet) > 1:
  121.             self.sprite_sheet = []
  122.         self.carregar_imagens()
  123.  
  124.     # Função que gera as imagens da moeda
  125.     def carregar_imagens(self):
  126.         #moedas
  127.         print("Visual atual: %s" % (self.visual))
  128.         for i in range(1, 2 + 1):
  129.             self.sprite_sheet.append(PhotoImage(file="imagens/{}{}.gif".format(self.visual, i)))
  130.         self.limite = len(self.sprite_sheet) - 1
  131.         print(len(self.sprite_sheet))
  132.     def novo_jogo(self):
  133.         self.jogando = True
  134.  
  135.     def comeca_jogo(self, event):
  136.         visual = self.visual
  137.         vezes = self.entry_vezes.get()
  138.         print(visual)
  139.         if len(visual) < 1:
  140.             messagebox.showwarning("Aviso", "Digite o visual que você quer!\n")
  141.         elif len(vezes) < 1:
  142.             messagebox.showwarning("Aviso", "Digite a quantidade de vezes!\n")
  143.         self.jogar()
  144.  
  145.     def jogar(self):
  146.         if self.jogando:
  147.             vezes = self.entry_vezes.get()
  148.  
  149.             if len(vezes) < 1:
  150.                 pass
  151.             elif int(vezes) >= 1:
  152.                 caiu_coroa = 0
  153.                 caiu_cara = 0
  154.                 vezes = int(vezes)
  155.  
  156.                 for vez in range(vezes):
  157.                     print("Atualizando...\n")
  158.                     resultado = self.update("<Button-1>")
  159.  
  160.                     if resultado == 'cara':
  161.                         caiu_cara += 1
  162.                     elif resultado == 'coroa':
  163.                         caiu_coroa += 1
  164.  
  165.                     print("Desenhando...\n")
  166.                     self.lb_caiu_cara['text'] = "Caiu cara: " + str(caiu_cara) + " vez(es)"
  167.                     self.lb_caiu_coroa['text'] = "Caiu coroa: " + str(caiu_coroa) + " vez(es)"
  168.                     self.root.after(self.speed, self.desenhar())
  169.                     if caiu_coroa+caiu_cara == vezes:
  170.                         if self.number_of_sprite == 0 and self.visual == "moeda":
  171.                             messagebox.showinfo("Informação", "Caiu cara por último\n")
  172.                         elif self.number_of_sprite == 1 and self.visual == "moeda":
  173.                             messagebox.showinfo("Informação", "Caiu coroa por último\n")
  174.                         elif self.number_of_sprite == 0 and self.visual == "cedula":
  175.                             messagebox.showinfo("Informação", "Caiu esse rosto aí...\n")
  176.                         elif self.number_of_sprite == 1 and self.visual == "cedula":
  177.                             messagebox.showinfo("Informação", "Caiu esse bicho...\n")
  178.                         elif self.number_of_sprite == 0 or self.number_of_sprite == 1 and self.visual == "amoeba":
  179.                             messagebox.showinfo("Informação", "Você sabe que seu cérebro é uma amoeba, né?!")
  180.                         else:
  181.                             print("???")
  182.             #elif int(vezes) >= 24:
  183.                 #messagebox.showerror("Erro", "Caso passe de 23 irá ocorrer vazamento de memória e isto não é legal!\n")
  184.             else:
  185.                 messagebox.showerror("Erro", "Deu erro e eu não sei o porquê...\nSaindo!")
  186.                 quit()
  187.         else:
  188.             print("O jogo acabou!\n")
  189.  
  190.     def update(self, event):
  191.         #moeda
  192.         self.number_of_sprite = randrange(1, 3)
  193.         vezes = self.entry_vezes.get()
  194.         vezes = int(vezes)
  195.         probabilidade = (1 / (2 ** vezes)) * 100
  196.         print(probabilidade)
  197.         v_arredondado = Decimal(probabilidade)
  198.         if v_arredondado > 1:
  199.             v_arredondado = round(v_arredondado)
  200.         print(v_arredondado)
  201.         if self.visual == "amoeba":
  202.             self.lb_cara['text'] = "Probabilidade de você ser inteligente: " + str(v_arredondado) + "%"
  203.         else:
  204.             self.lb_cara['text'] = "Probabilidade de cair determinado lado: " + str(v_arredondado) + "%"
  205.         #self.lb_coroa['text'] = "Probabilidade de cair coroa: " + str(v_arredondado) + "%"
  206.  
  207.         if self.number_of_sprite == 2:
  208.             self.number_of_sprite = 0
  209.             return "cara"
  210.  
  211.         elif self.number_of_sprite == 1:
  212.             self.number_of_sprite = 1
  213.             return "coroa"
  214.  
  215.     def desenhar(self):
  216.         self.canvas.delete(ALL)
  217.         print(self.number_of_sprite)
  218.         self.canvas.create_image((400 / 2, 450 / 2), image=self.sprite_sheet[self.number_of_sprite])
  219.         self.canvas.update()
  220.  
  221.  
  222. if __name__ == '__main__':
  223.     try:
  224.         Jogo()
  225.     finally:
  226.         print("Jogo finalizado!\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement