Skip to content
This repository has been archived by the owner on May 14, 2023. It is now read-only.

Commit

Permalink
implementacao das threads de decremento de status
Browse files Browse the repository at this point in the history
  • Loading branch information
LelePG committed Jul 1, 2021
1 parent d545c1b commit 316a1c5
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 29 deletions.
14 changes: 8 additions & 6 deletions Pymagochi.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
60 changes: 44 additions & 16 deletions main.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -23,42 +26,67 @@
}

## 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
label_bebida_status['text'] = pymagochi.bebida
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
lImagem = Label(janela, image = k)
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()
18 changes: 11 additions & 7 deletions manipulador_interface/altera_valores.py
Original file line number Diff line number Diff line change
@@ -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))
Expand All @@ -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))

Pymagochi.diminui_banheiro(elemento,randint(1,3))


40 changes: 40 additions & 0 deletions manipulador_interface/cria_threads.py
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 316a1c5

Please sign in to comment.