diff --git a/Pymagochi.py b/Pymagochi.py index 96030b4..ecb6876 100644 --- a/Pymagochi.py +++ b/Pymagochi.py @@ -1,10 +1,10 @@ class Pymagochi: # Status - comida = 0 - bebida = 0 - felicidade = 0 - energia = 0 - banheiro = 0 + comida = 10 + bebida = 10 + felicidade = 10 + energia = 10 + banheiro = 10 coco = False #Funções para alterar os estatos @@ -65,9 +65,11 @@ def aumenta_banheiro(self, valorAumento): def diminui_banheiro(self, valorAumento): self.banheiro -= valorAumento if self.banheiro < 0: - self.ebanheiro = 0 + self.banheiro = 0 return + def esta_vivo(self): + return self.comida and self.bebida and self.energia and self.felicidade and self.banheiro # Funções de display de status def mostraStatus(self): #debug diff --git a/main.py b/main.py index e7516cb..f6309c9 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,13 @@ from Pymagochi import Pymagochi from Temporizador import Temporizador from manipulador_interface import altera_valores as av +from manipulador_interface import cria_threads as ct from tkinter import * # importa a biblioteca gráfica +from random import randint +from tkinter import messagebox + - -## Variáveis +## Variáveis do programa pymagochi = Pymagochi() # inicia o objeto tamagochi @@ -23,20 +26,20 @@ } ## Funções de criação de elementos -def criar_label(titulo_label, linha, coluna): - l = Label(frame1, text=titulo_label) +def criar_label(frame,titulo_label, linha, coluna): + l = Label(frame, text=titulo_label) l.grid(row = linha, column = coluna) return l -def criar_btn(texto_btn, funcao, linha, coluna): - return Button(frame1,text = texto_btn, command = lambda: funcao(pymagochi)).grid(row = linha, column = coluna) +def criar_btn(frame, texto_btn, funcao, linha, coluna): + return Button(frame,text = texto_btn, command = lambda: funcao(pymagochi)).grid(row = linha, column = coluna) ##Labels de estado -label_comida_status = criar_label(status[0][3],1,0) -label_bebida_status = criar_label(status[1][3],1,1) -label_felicidade_status = criar_label(status[2][3],1,2) -label_energia_status = criar_label(status[3][3],1,3) -label_banheiro_status = criar_label(status[4][3],1,4) +label_comida_status = criar_label(frame1,status[0][3],1,0) +label_bebida_status = criar_label(frame1,status[1][3],1,1) +label_felicidade_status = criar_label(frame1,status[2][3],1,2) +label_energia_status = criar_label(frame1,status[3][3],1,3) +label_banheiro_status = criar_label(frame1,status[4][3],1,4) def atualizar_interface(): label_comida_status['text'] = pymagochi.comida @@ -44,6 +47,28 @@ def atualizar_interface(): label_felicidade_status['text'] = pymagochi.felicidade label_energia_status['text'] = pymagochi.energia label_banheiro_status['text'] = pymagochi.banheiro + if not pymagochi.esta_vivo(): + messagebox.showwarning("RIP", "Você deixou o Pymagochi morrer")# mostra mensagem de erro + janela.destroy() + + +def decrementar_status(): # eu queria utilizar um switch, mas não tem em python + elemento_principal = pymagochi + status_dec = randint(0,4) + if status_dec == 0: + av.diminuir_comida(elemento_principal) + elif status_dec == 1: + av.diminuir_bebida(elemento_principal) + elif status_dec == 2: + av.diminuir_felicidade(elemento_principal) + elif status_dec == 3: + av.diminuir_energia(elemento_principal) + elif status_dec == 4: + av.diminuir_banheiro(elemento_principal) + else: + print("Problema encontrado") + + k= PhotoImage(file = "teste.png") #Coloca a imagem na janela @@ -51,14 +76,17 @@ def atualizar_interface(): lImagem.pack() for i in range (len(status)): # cria a interface - label_item = criar_label(status[i][0],0,i) - btn_item = criar_btn(status[i][1], status[i][2], 2,i) + label_item = criar_label(frame1,status[i][0],0,i) + btn_item = criar_btn(frame1,status[i][1], status[i][2], 2,i) #Threads -atualiza_interface = Temporizador(0.5, atualizar_interface) -atualiza_interface.start() +atualiza_interface = ct.minhaThread(0.25, atualizar_interface) +atualiza_interface.roda_funcao() + +decrementa_status = ct.minhaThread(0.5, decrementar_status) +decrementa_status.roda_funcao() + ##Falta: uma thread pra cada botão, verificar se o tamagochi morreu. janela.mainloop()#inicia a janela -atualiza_interface.close() \ No newline at end of file diff --git a/manipulador_interface/altera_valores.py b/manipulador_interface/altera_valores.py index 3d35c01..f1fd9b7 100644 --- a/manipulador_interface/altera_valores.py +++ b/manipulador_interface/altera_valores.py @@ -1,6 +1,10 @@ from random import randint from Pymagochi import Pymagochi + +def definir_entidade(entidade): + elemento_principal = entidade + ## Funções de Event Handler (ativadas com o botão) def aumentar_comida(elemento): Pymagochi.aumenta_comida(elemento,randint(1,5)) @@ -21,24 +25,24 @@ def aumentar_banheiro(elemento): Pymagochi.aumenta_banheiro(elemento, randint(8,10)) - ## Funções de decremento dos valores padrão que serão instanciadas em threads def diminuir_comida(elemento): - Pymagochi.diminui_comida(elemento, randint(1,5)) + Pymagochi.diminui_comida(elemento, randint(1,3)) def diminuir_bebida(elemento): - Pymagochi.diminui_bebida(elemento, randint(2,8)) + Pymagochi.diminui_bebida(elemento, randint(1,3)) def diminuir_felicidade(elemento): - Pymagochi.diminui_felicidade(elemento, randint(1,8)) + Pymagochi.diminui_felicidade(elemento, randint(1,3)) def diminuir_energia(elemento): - Pymagochi.diminui_energia(elemento, randint(1,5)) + Pymagochi.diminui_energia(elemento, randint(1,3)) def diminuir_banheiro(elemento): - Pymagochi.diminui_banheiro(randint(8,10)) - \ No newline at end of file + Pymagochi.diminui_banheiro(elemento,randint(1,3)) + + diff --git a/manipulador_interface/cria_threads.py b/manipulador_interface/cria_threads.py new file mode 100644 index 0000000..b692a61 --- /dev/null +++ b/manipulador_interface/cria_threads.py @@ -0,0 +1,40 @@ +import threading +from threading import Timer + +class minhaThread (threading.Thread): + def __init__(self, tempo_atualizacao, funcao_callback): + threading.Thread.__init__(self) + self.tempo_atualizacao = tempo_atualizacao + self.funcao_callback = funcao_callback + + def roda_funcao(self): # Para selecionar e rodar a função, é assim mesmo + self.funcao_callback() #declara a função + self.thread = Timer(self.tempo_atualizacao, self.roda_funcao) #cria a thread que vai rodar a função + self.thread.start() #inicia a execução + + # def run(self): + # print "Iniciando thread %s com %d processos" % (self.name,self.contador) + # processo(self.nome, self.contador) + # print "Finalizando " + self.nome + +# def processo(nome, contador): +# while contador: +# print "Thread %s fazendo o processo %d" % (nome, contador) +# contador -= 1 + +# # Criando as threads +# thread1 = minhaThread(1, "Alice", 8) +# thread2 = minhaThread(2, "Bob", 8) + +# # Comecando novas Threads +# thread1.start() +# thread2.start() + +# threads = [] +# threads.append(thread1) +# threads.append(thread2) + +# for t in threads: +# t.join() + +# print "Saindo da main" \ No newline at end of file