import random
import time

# Definições de classes e funções

class Cidade:
    def __init__(self, nome, habitantes, saldo):
        self.nome = nome
        self.habitantes = habitantes
        self.saldo = saldo
        self.empresas = []
        self.produtos = []

class Habitante:
    def __init__(self, nome, idade, dinheiro):
        self.nome = nome
        self.idade = idade
        self.dinheiro = dinheiro
        self.ocupado = False  # Se o habitante tem um emprego ou não
        self.produtos_possuidos = []
        self.saude = random.randint(50, 100)

    def comprar(self, produto):
        if self.dinheiro >= produto.preco_atual:
            self.dinheiro -= produto.preco_atual
            produto.estoque -= 1
            produto.demanda -= 1

class Produto:
    def __init__(self, nome, preco_base):
        self.nome = nome
        self.preco_base = preco_base
        self.preco_atual = preco_base
        self.demanda = random.randint(50, 150)  # demanda inicial aleatória
        self.oferta = 0
        self.estoque = 0

    def atualizar_preco(self):
        if self.demanda > self.oferta:
            self.preco_atual += self.preco_base * 0.1
        elif self.demanda < self.oferta:
            self.preco_atual -= self.preco_base * 0.1
        self.preco_atual = max(self.preco_base * 0.5, self.preco_atual)  # preço mínimo é metade do preço base

class Empresa:
    def __init__(self, nome, produto):
        self.nome = nome
        self.produto = produto
        self.capacidade_producao = random.randint(100, 500)  # capacidade de produção diária
        self.custos = random.randint(10, 50)  # custos fixos diários
        self.empregados = []

    def produzir(self):
        quantidade_produzida = min(self.capacidade_producao, self.produto.demanda)
        self.produto.estoque += quantidade_produzida
        self.produto.oferta += quantidade_produzida

    def contratar(self, habitante):
        if not habitante.ocupado:
            self.empregados.append(habitante)
            habitante.ocupado = True

    def pagar_salarios(self):
        for empregado in self.empregados:
            empregado.dinheiro += 50  # Salário fixo por simplicidade, pode ser ajustado

def evento_economico(cidade):
    evento = random.choice(["boom", "crise"])
    if evento == "boom":
        for produto in cidade.produtos:
            produto.demanda += random.randint(10, 50)
    elif evento == "crise":
        for produto in cidade.produtos:
            produto.demanda -= random.randint(10, 50)

# Exemplo de uso:
joao = Habitante("João", 25, 1000)
pao = Produto("Pão", 1.0)
padaria = Empresa("Padaria Central", pao)

padaria.contratar(joao)
padaria.produzir()
padaria.pagar_salarios()

joao.comprar(pao)

print(f"Dinheiro de {joao.nome}: {joao.dinheiro}")
print(f"Estoque de {pao.nome}: {pao.estoque}")

# Simulação
DURACAO_DIA_SEGUNDOS = 60

while True:
    # Atualizações diárias
    for empresa in mega_city_one.empresas:
        empresa.produzir()
    # ... [Outras informações]

    time.sleep(DURACAO_DIA_SEGUNDOS)