diff --git a/modules/gui.py b/modules/gui.py index 54831a4..8eb0ec4 100644 --- a/modules/gui.py +++ b/modules/gui.py @@ -2,7 +2,6 @@ import sys import random from types import NoneType import pygame as pg -from modules import mapa from modules.agente import Agente from modules.mapa import Mapa import modules.estrategia as ModEstrategia @@ -11,10 +10,11 @@ import modules.interaccoes as ModInteraccoes # 0 para desactivar flags # pg.FULLSCREEN para fullscreen mode -flags = pg.FULLSCREEN +flags = 0 # pg.FULLSCREEN sep_janelas: int = 10 +# classe Frame para gerir diferentes frames dentro da janela principal class Frame: def __init__( self, @@ -30,9 +30,9 @@ class Frame: def rect(self) -> pg.Rect: return pg.Rect(self.posicao, self.tamanho) - def desenhar(self, dest: pg.Surface) -> None: + def desenhar(self, dest: pg.Surface, borda: int = 0, border_radius=0) -> None: pg.draw.rect(dest, pg.Color(0, 0, 0, 0), self.rect()) - pg.draw.rect(dest, self.cor, self.rect(), 5, border_radius=20) + pg.draw.rect(dest, self.cor, self.rect(), borda, border_radius=border_radius) def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]: @@ -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, 0, 0), + pg.Color(255, 255, 255, 0), ) frame_info_mapa = Frame( ( @@ -50,7 +50,7 @@ def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]: (janela_app.get_size()[1] - (sep_janelas * 2)) // 2, ), (frame_mapa.tamanho[0] + (sep_janelas * 2), sep_janelas), - pg.Color(0, 0, 255, 0), + pg.Color(255, 255, 255, 0), ) frame_info_pos = Frame( @@ -62,7 +62,7 @@ def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]: frame_mapa.tamanho[0] + (sep_janelas * 2), frame_info_mapa.tamanho[1] + (sep_janelas * 2), ), - pg.Color(0, 255, 0, 0), + pg.Color(255, 255, 255, 0), ) frame_accoes = Frame( ( @@ -76,7 +76,7 @@ def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]: frame_mapa.tamanho[0] + 20, frame_info_mapa.tamanho[1] + frame_info_pos.tamanho[1] + 30, ), - pg.Color(255, 0, 0, 0), + pg.Color(255, 255, 255, 0), ) return (frame_mapa, frame_info_mapa, frame_info_pos, frame_accoes) @@ -105,10 +105,7 @@ def criarTabuleiro( dimensao_tabuleiro: tuple[int, int] = mapa.dimensao dimensoes_surface_principal: tuple[int, int] = surface.get_size() max_altura: int = int((dimensoes_surface_principal[1] - 20) / dimensao_tabuleiro[0]) - # max_largura: int = int( - # (dimensoes_surface_principal[0] - 20) / dimensao_tabuleiro[1] - # ) - tamanho_quadrado: int = max_altura # min([max_altura, max_largura]) + tamanho_quadrado: int = max_altura cor_quadrado: tuple[int, int, int, int] for pos_y in range(0, dimensao_tabuleiro[0]): @@ -176,7 +173,7 @@ def mostrarMapa(mapa: Mapa | None) -> None: def actualizarEstatisticas( janela: pg.Surface, frame_info_mapa: Frame, mapa: Mapa ) -> None: - frame_info_mapa.desenhar(janela) + frame_info_mapa.desenhar(janela, 5, 10) font = pg.font.Font(None, 20) dict_estrat = prepararEstatistica(mapa) n_linhas = 0 @@ -200,7 +197,7 @@ def actualizarInfoPos( janela: pg.Surface, frame: Frame, mapa: Mapa, pos: tuple[int, int] ) -> None: # limpar frame_info_mapa - frame.desenhar(janela) + frame.desenhar(janela, 5, 10) # mostrar informação sobre posicao seleccionada font = pg.font.Font(None, 20) info_posicao = font.render( @@ -229,6 +226,11 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): quadrado_seleccionado: pg.Rect | None = None # criar frames frame_mapa, frame_info_mapa, frame_info_pos, frame_accoes = criarFrames(janela) + # mostrar frames no janela principal + frame_mapa.desenhar(janela) + frame_info_mapa.desenhar(janela, 5, 10) + frame_info_pos.desenhar(janela, 5, 10) + frame_accoes.desenhar(janela, 5, 10) while running: if quadrado_seleccionado: @@ -281,9 +283,18 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): ) if quadrado_novo == quadrado_seleccionado: quadrado_seleccionado = None - frame_info_pos.desenhar(janela) + 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}") @@ -294,20 +305,8 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]): # mostrar dimensão do mapa # mostrar estatisticas actualizarEstatisticas(janela, frame_info_mapa, mapa) - # mostrar borda da posicao seleccionado com o rato - frame_info_pos.desenhar(janela) - if quadrado_seleccionado: - 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)) - # mostrar frame accoes - frame_accoes.desenhar(janela) + # mostrar frame_accoes + frame_accoes.desenhar(janela, 5, 10) pg.display.flip() clock.tick(60)