ctw6av
(usa Nenhuma)
Enviado em 22/08/2016 - 18:58h
Bem legal o programa, parabéns cara. Se o problema era trocar a imagem de uma forma mais lenta, eu adicionei um controle alterável para você decidir a velocidade que quer que as imagens sejam trocadas ela está destacada e se chama
self.speed
Eu também alterei algumas coisas tipo, nomes de funções que estavam em maiúsculo e etc, mas se não gostar é só mudar de volta os nomes.
# coding: utf-8
from tkinter import *
from random import randrange
class Jogo(object):
def __init__(self):
self.root = Tk()
self.root.geometry('%dx%d' % (800, 600))
self.root.resizable(False, False)
self.root.title('Jogo PC. Mat')
# Frame para conter o canvas
self.frame = Frame(bg="gray", pady=5, padx=5)
self.frame.pack()
self.framet = Frame()
self.framet.pack()
self.frametw = Frame()
self.frametw.pack()
self.frametwe = Frame()
self.frametwe.pack()
# 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 moeda!")
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: cara", font=('Verdana', 12, 'italic'), fg="black",
pady=10, 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)
# Controlando os sprites
self.number_of_sprite = 0
self.limite = 0
# Define o jogo
self.jogando = False
# =========================================================================================#
# Controla a troca de imagens (em milisegundos)
self.speed = 500 # 1/2 segundo
# =========================================================================================#
self.sprite_sheet = []
# Carregar imagens da moeda
self.carregar_imagens()
self.novo_jogo()
self.root.mainloop()
# Função que gera as imagens da moeda
def carregar_imagens(self):
for i in range(1, 2 + 1):
self.sprite_sheet.append(PhotoImage(file="moeda{}.gif".format(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):
self.jogar()
def jogar(self):
if self.jogando:
vezes = self.entry_vezes.get()
if len(vezes) < 1:
pass
else:
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())
else:
print("O jogo acabou!\n")
@staticmethod
def arredondar(numero):
return '{:.2}'.format(numero)
def update(self, event):
self.number_of_sprite = randrange(1, 3)
vezes = self.entry_vezes.get()
vezes = int(vezes)
probabilidade = (1 / (2 ** vezes)) * 100
v_arredondado = self.arredondar(probabilidade)
self.lb_cara['text'] = "Probabilidade de cair cara: " + 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__':
Jogo()
----------------------------------------------------------
A Internet... foi projetada no espírito da confiança. Nem os protocolos de rede
de comunicações nem o software que comanda os sistemas computacionais
conectados a rede foram arquitetados para operação num ambiente no qual estão sob
ataque.
----------------------------------------------------------