From 3687dbc6089644afa925a6bf781559ed8499c99f Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Thu, 2 Apr 2026 10:02:04 +0100 Subject: [PATCH] =?UTF-8?q?definir=20fun=C3=A7=C3=A3o=20'criarMapa()'=20qu?= =?UTF-8?q?e=20substitui=20fun=C3=A7=C3=A3o=20'criarTabuleiro()'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/gui.py | 55 +++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/modules/gui.py b/modules/gui.py index 8eb0ec4..90642eb 100644 --- a/modules/gui.py +++ b/modules/gui.py @@ -42,7 +42,7 @@ def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]: janela_app.get_size()[1] - (sep_janelas * 2), ), (sep_janelas, sep_janelas), - pg.Color(255, 255, 255, 0), + pg.Color(0, 0, 0, 0), ) frame_info_mapa = Frame( ( @@ -125,6 +125,21 @@ def criarTabuleiro( ) +def criarMapa(janela_app: pg.Surface, frame: Frame, mapa: Mapa) -> None: + lado: int = (frame.tamanho[1] - (10 * 2)) // mapa.dimensao[0] + for pos_y in range(0, mapa.dimensao[1]): + for pos_x in range(0, mapa.dimensao[0]): + agente: Agente | None = mapa.posicao((pos_x, pos_y)) + cor = devolveCor(agente) + quadrado: pg.Rect = pg.Rect( + 10 + (lado * pos_x), + 10 + (lado * pos_y), + lado, + lado, + ) + pg.draw.rect(janela_app, cor, quadrado, 0) + + def popularMapa(mapa: Mapa) -> None: for pos_y in range(0, mapa.dimensao[0]): for pos_x in range(0, mapa.dimensao[1]): @@ -227,7 +242,7 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): # criar frames frame_mapa, frame_info_mapa, frame_info_pos, frame_accoes = criarFrames(janela) # mostrar frames no janela principal - frame_mapa.desenhar(janela) + frame_mapa.desenhar(janela, 5, 10) frame_info_mapa.desenhar(janela, 5, 10) frame_info_pos.desenhar(janela, 5, 10) frame_accoes.desenhar(janela, 5, 10) @@ -252,7 +267,6 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): if event.key == pg.K_c: novo_tamanho = int(input("tamanho do mapa: ")) tamanho_mapa = (novo_tamanho, novo_tamanho) - janela.fill(0) mapa = Mapa(tamanho_mapa) popularMapa(mapa) # correr proxima iteração com 'n' (next) @@ -266,18 +280,16 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): # botao 1 do rato clicado, seleccionar ou tirar selecao if pg.mouse.get_pressed(num_buttons=3)[0]: pos_rato: tuple[int, int] = pg.mouse.get_pos() - tamanho_quadrado = int( - (janela.get_size()[1] - 20) / mapa.dimensao[0] - ) + tamanho_quadrado = (frame_mapa.tamanho[1] - 20) // mapa.dimensao[0] if pos_rato[0] < 10 or pos_rato[1] < 10: continue - pos_x = int((pos_rato[0] - 10) / tamanho_quadrado) - pos_y = int((pos_rato[1] - 10) / tamanho_quadrado) + pos_x = (pos_rato[0] - 10) // tamanho_quadrado + pos_y = (pos_rato[1] - 10) // tamanho_quadrado if pos_x >= mapa.dimensao[0] or pos_y >= mapa.dimensao[1]: continue quadrado_novo = pg.Rect( - (pos_x * tamanho_quadrado) + 10, - (pos_y * tamanho_quadrado) + 10, + (pos_x * tamanho_quadrado) + sep_janelas, + (pos_y * tamanho_quadrado) + sep_janelas, tamanho_quadrado, tamanho_quadrado, ) @@ -286,27 +298,28 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): frame_info_pos.desenhar(janela, 5, 10) else: quadrado_seleccionado = quadrado_novo - pg.draw.rect( - janela, - pg.Color(0, 0, 0, 0), - quadrado_seleccionado, - 2, - border_radius=20, - ) # actualizar info na frame_info_pos actualizarInfoPos(janela, frame_info_pos, mapa, (pos_x, pos_y)) - agente = mapa.posicao((pos_x, pos_y)) - print(f"{agente.posicao} com {agente.estrategia}") # desenhar mapa frame_mapa.desenhar(janela) - criarTabuleiro(janela, mapa) + criarMapa(janela, frame_mapa, mapa) + # criarTabuleiro(janela, mapa) + # se quadrado estiver seleccionado, mostrá-lo + if quadrado_seleccionado: + pg.draw.rect( + janela, + pg.Color(0, 0, 0, 0), + quadrado_seleccionado, + 2, + border_radius=20, + ) + # mostrar numero de iteração actual # mostrar dimensão do mapa # mostrar estatisticas actualizarEstatisticas(janela, frame_info_mapa, mapa) # mostrar frame_accoes - frame_accoes.desenhar(janela, 5, 10) pg.display.flip() clock.tick(60)