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)