From 1cd656c3f8e7446fdbf15f98ca4b9cde577a77a0 Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Thu, 19 Sep 2024 10:55:28 +0100 Subject: [PATCH] =?UTF-8?q?adicionar=20fun=C3=A7=C3=A3o=20de=20mudar=20dis?= =?UTF-8?q?tribuicao=20de=20mapa=20e=20mostrar=20estatisticas=20de=20mapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/gui.py | 73 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/modules/gui.py b/modules/gui.py index 91fe99c..b8034bb 100644 --- a/modules/gui.py +++ b/modules/gui.py @@ -1,10 +1,9 @@ import sys -import tkinter as tk -from tkinter import ttk +import random import pygame as pg from modules.agente import Agente from modules.mapa import Mapa - +import modules.estrategia as ModEstrategia flags = 0 @@ -47,6 +46,43 @@ def criarTabuleiro( 0) +def popularMapa(mapa: Mapa) -> None: + for pos_y in range(0, mapa.dimensao[0]): + for pos_x in range(0, mapa.dimensao[1]): + # escolher uma estrategia aleatoria + tmp_estrategia = random.choice( + ModEstrategia.listaNomesEstrategias()) + # criar Agente com estrategia aleatoria e colocar na posicao y e x + mapa.mundo[pos_y][pos_x] = Agente(tmp_estrategia) + + +def mostrarEstatisticas(mapa: Mapa | None) -> None: + if mapa is None: + print("SEM MAPA!!") + else: + stats_estrategias: dict = {} + n_total_agentes: int = 0 + print("estatisticas mapa:") + for tipo_estrategia in ModEstrategia.lista_estrategias: + stats_estrategias[tipo_estrategia] = 0 + for pos_y in range(0, mapa.dimensao[0]): + for pos_x in range(0, mapa.dimensao[1]): + tmp_agente = mapa.posicao((pos_y, pos_x)) + stats_estrategias[tmp_agente.estrategia] += 1 + n_total_agentes += 1 + for tipo_estrategia in stats_estrategias: + print(f"{tipo_estrategia}: { + (stats_estrategias[tipo_estrategia]/n_total_agentes)*100:3.2f}") + + +def interaccaoEntreAgentes(agente1: Agente, agente2: Agente) -> None: + pass + + +def correrInteraccoesEntreAgentes(mapa: Mapa | None) -> None: + pass + + def main(mapa: Mapa | None): if mapa is None: print("SEM MAPA!!") @@ -67,10 +103,13 @@ def main(mapa: Mapa | None): if event.key == pg.K_q: running = False if event.key == pg.K_c: - # trocar cor - pass + mapa = Mapa((30, 30)) + popularMapa(mapa) + if event.key == pg.K_s: + mostrarEstatisticas(mapa) # (367, 250) criarTabuleiro(janela, mapa.dimensao, mapa) + correrInteraccoesEntreAgentes(mapa) pg.display.flip() clock.tick(60) @@ -78,30 +117,6 @@ def main(mapa: Mapa | None): sys.exit() -class Frame_Mapa(ttk.Frame): - def __init__(self, mapa: Mapa): - super().__init__() - self.n_linhas: int = mapa.dimensao[0] - self.n_colunas: int = mapa.dimensao[1] - for grid_y in range(0, self.n_linhas): - for grid_x in range(0, self.n_colunas): - tmp_label = tk.Label(self, text="0") - tmp_label.grid(column=grid_x, row=grid_y) - - -class App(tk.Tk): - def __init__(self, mapa: Mapa) -> None: - super().__init__() - # titulo e icone - self.title('Game Theory of Life') - self.iconbitmap() - # definir frames dentro da janela principal - self.frame_mapa = Frame_Mapa(mapa) - self.frame_mapa.grid(row=0, column=0) - # iniciar janela da aplicação - self.mainloop() - - if __name__ == '__main__': mapa_mundo: Mapa = Mapa((10, 10)) app = App(mapa_mundo)