uso do rato para seleccionar e mostrar posicao no tabuleiro
This commit is contained in:
@ -66,7 +66,7 @@ def popularMapa(mapa: Mapa) -> None:
|
|||||||
# escolher uma estrategia aleatoria
|
# escolher uma estrategia aleatoria
|
||||||
tmp_estrategia = random.choice(ModEstrategia.listaNomesEstrategias())
|
tmp_estrategia = random.choice(ModEstrategia.listaNomesEstrategias())
|
||||||
# criar Agente com estrategia aleatoria e colocar na posicao y e x
|
# criar Agente com estrategia aleatoria e colocar na posicao y e x
|
||||||
mapa.mundo[pos_y][pos_x] = Agente(tmp_estrategia)
|
mapa.mundo[pos_y][pos_x] = Agente(tmp_estrategia, (pos_x, pos_y))
|
||||||
|
|
||||||
|
|
||||||
def mostrarEstatisticas(mapa: Mapa | None) -> None:
|
def mostrarEstatisticas(mapa: Mapa | None) -> None:
|
||||||
@ -115,8 +115,13 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]):
|
|||||||
# cor1: tuple[int, int, int, int] = (255, 0, 0, 0)
|
# cor1: tuple[int, int, int, int] = (255, 0, 0, 0)
|
||||||
# cor2: tuple[int, int, int, int] = (0, 255, 0, 0)
|
# cor2: tuple[int, int, int, int] = (0, 255, 0, 0)
|
||||||
mostrarMapa(mapa)
|
mostrarMapa(mapa)
|
||||||
|
quadrado_seleccionado: pg.Rect | None = None
|
||||||
|
|
||||||
while running:
|
while running:
|
||||||
|
if quadrado_seleccionado:
|
||||||
|
pg.draw.rect(
|
||||||
|
janela, pg.Color(0, 0, 0), quadrado_seleccionado, 10, border_radius=10
|
||||||
|
)
|
||||||
for event in pg.event.get():
|
for event in pg.event.get():
|
||||||
if event.type == pg.QUIT:
|
if event.type == pg.QUIT:
|
||||||
running = False
|
running = False
|
||||||
@ -137,8 +142,8 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]):
|
|||||||
# correr proxima iteração com 'n' (next)
|
# correr proxima iteração com 'n' (next)
|
||||||
if event.key == pg.K_n:
|
if event.key == pg.K_n:
|
||||||
ModInteraccoes.correrInteraccoesEntreAgentes(mapa)
|
ModInteraccoes.correrInteraccoesEntreAgentes(mapa)
|
||||||
# mostrar mapa no terminal com 'm'
|
|
||||||
if event.key == pg.K_m:
|
if event.key == pg.K_m:
|
||||||
|
# mostrar mapa no terminal com 'm'
|
||||||
print("Mapa:")
|
print("Mapa:")
|
||||||
mostrarMapa(mapa)
|
mostrarMapa(mapa)
|
||||||
# gerar novo mapa e popular (fazer reset) com 'r'
|
# gerar novo mapa e popular (fazer reset) com 'r'
|
||||||
@ -157,9 +162,39 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]):
|
|||||||
f"{id(agente)=}\n{agente.estrategia=}\n{
|
f"{id(agente)=}\n{agente.estrategia=}\n{
|
||||||
agente.personalidade=}"
|
agente.personalidade=}"
|
||||||
)
|
)
|
||||||
|
if event.type == pg.MOUSEBUTTONDOWN:
|
||||||
|
# botao 1 do rato clicado
|
||||||
|
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]
|
||||||
|
)
|
||||||
|
pos_x = int((pos_rato[0] - 10) / tamanho_quadrado)
|
||||||
|
pos_y = int((pos_rato[1] - 10) / tamanho_quadrado)
|
||||||
|
if (
|
||||||
|
pos_x < 0
|
||||||
|
or pos_x >= mapa.dimensao[0]
|
||||||
|
or pos_y < 0
|
||||||
|
or pos_y >= mapa.dimensao[1]
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
quadrado_seleccionado = pg.Rect(
|
||||||
|
(pos_x * tamanho_quadrado) + 10,
|
||||||
|
(pos_y * tamanho_quadrado) + 10,
|
||||||
|
tamanho_quadrado,
|
||||||
|
tamanho_quadrado,
|
||||||
|
)
|
||||||
|
# agente = mapa.posicao((pos_x, pos_y))
|
||||||
|
# print(f"{id(agente)}@{agente.posicao}")
|
||||||
|
# print(f"{agente.estrategia}")
|
||||||
|
|
||||||
criarTabuleiro(janela, mapa)
|
criarTabuleiro(janela, mapa)
|
||||||
# criar surface para apresentar info
|
# criar surface para apresentar info
|
||||||
|
# mostrar borda da posicao seleccionado com o rato
|
||||||
|
if quadrado_seleccionado:
|
||||||
|
pg.draw.rect(
|
||||||
|
janela, pg.Color(0, 0, 0), quadrado_seleccionado, 10, border_radius=10
|
||||||
|
)
|
||||||
# mostrar numero de iteração actual
|
# mostrar numero de iteração actual
|
||||||
# mostrar dimensão do mapa
|
# mostrar dimensão do mapa
|
||||||
# mostrar estatisticas
|
# mostrar estatisticas
|
||||||
|
|||||||
Reference in New Issue
Block a user