definir função 'criarMapa()' que substitui função 'criarTabuleiro()'
This commit is contained in:
@ -42,7 +42,7 @@ def criarFrames(janela_app: pg.Surface) -> tuple[Frame, Frame, Frame, Frame]:
|
|||||||
janela_app.get_size()[1] - (sep_janelas * 2),
|
janela_app.get_size()[1] - (sep_janelas * 2),
|
||||||
),
|
),
|
||||||
(sep_janelas, sep_janelas),
|
(sep_janelas, sep_janelas),
|
||||||
pg.Color(255, 255, 255, 0),
|
pg.Color(0, 0, 0, 0),
|
||||||
)
|
)
|
||||||
frame_info_mapa = Frame(
|
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:
|
def popularMapa(mapa: Mapa) -> None:
|
||||||
for pos_y in range(0, mapa.dimensao[0]):
|
for pos_y in range(0, mapa.dimensao[0]):
|
||||||
for pos_x in range(0, mapa.dimensao[1]):
|
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
|
# criar frames
|
||||||
frame_mapa, frame_info_mapa, frame_info_pos, frame_accoes = criarFrames(janela)
|
frame_mapa, frame_info_mapa, frame_info_pos, frame_accoes = criarFrames(janela)
|
||||||
# mostrar frames no janela principal
|
# mostrar frames no janela principal
|
||||||
frame_mapa.desenhar(janela)
|
frame_mapa.desenhar(janela, 5, 10)
|
||||||
frame_info_mapa.desenhar(janela, 5, 10)
|
frame_info_mapa.desenhar(janela, 5, 10)
|
||||||
frame_info_pos.desenhar(janela, 5, 10)
|
frame_info_pos.desenhar(janela, 5, 10)
|
||||||
frame_accoes.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:
|
if event.key == pg.K_c:
|
||||||
novo_tamanho = int(input("tamanho do mapa: "))
|
novo_tamanho = int(input("tamanho do mapa: "))
|
||||||
tamanho_mapa = (novo_tamanho, novo_tamanho)
|
tamanho_mapa = (novo_tamanho, novo_tamanho)
|
||||||
janela.fill(0)
|
|
||||||
mapa = Mapa(tamanho_mapa)
|
mapa = Mapa(tamanho_mapa)
|
||||||
popularMapa(mapa)
|
popularMapa(mapa)
|
||||||
# correr proxima iteração com 'n' (next)
|
# 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
|
# botao 1 do rato clicado, seleccionar ou tirar selecao
|
||||||
if pg.mouse.get_pressed(num_buttons=3)[0]:
|
if pg.mouse.get_pressed(num_buttons=3)[0]:
|
||||||
pos_rato: tuple[int, int] = pg.mouse.get_pos()
|
pos_rato: tuple[int, int] = pg.mouse.get_pos()
|
||||||
tamanho_quadrado = int(
|
tamanho_quadrado = (frame_mapa.tamanho[1] - 20) // mapa.dimensao[0]
|
||||||
(janela.get_size()[1] - 20) / mapa.dimensao[0]
|
|
||||||
)
|
|
||||||
if pos_rato[0] < 10 or pos_rato[1] < 10:
|
if pos_rato[0] < 10 or pos_rato[1] < 10:
|
||||||
continue
|
continue
|
||||||
pos_x = int((pos_rato[0] - 10) / tamanho_quadrado)
|
pos_x = (pos_rato[0] - 10) // tamanho_quadrado
|
||||||
pos_y = int((pos_rato[1] - 10) / tamanho_quadrado)
|
pos_y = (pos_rato[1] - 10) // tamanho_quadrado
|
||||||
if pos_x >= mapa.dimensao[0] or pos_y >= mapa.dimensao[1]:
|
if pos_x >= mapa.dimensao[0] or pos_y >= mapa.dimensao[1]:
|
||||||
continue
|
continue
|
||||||
quadrado_novo = pg.Rect(
|
quadrado_novo = pg.Rect(
|
||||||
(pos_x * tamanho_quadrado) + 10,
|
(pos_x * tamanho_quadrado) + sep_janelas,
|
||||||
(pos_y * tamanho_quadrado) + 10,
|
(pos_y * tamanho_quadrado) + sep_janelas,
|
||||||
tamanho_quadrado,
|
tamanho_quadrado,
|
||||||
tamanho_quadrado,
|
tamanho_quadrado,
|
||||||
)
|
)
|
||||||
@ -286,6 +298,15 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]):
|
|||||||
frame_info_pos.desenhar(janela, 5, 10)
|
frame_info_pos.desenhar(janela, 5, 10)
|
||||||
else:
|
else:
|
||||||
quadrado_seleccionado = quadrado_novo
|
quadrado_seleccionado = quadrado_novo
|
||||||
|
# actualizar info na frame_info_pos
|
||||||
|
actualizarInfoPos(janela, frame_info_pos, mapa, (pos_x, pos_y))
|
||||||
|
|
||||||
|
# desenhar mapa
|
||||||
|
frame_mapa.desenhar(janela)
|
||||||
|
criarMapa(janela, frame_mapa, mapa)
|
||||||
|
# criarTabuleiro(janela, mapa)
|
||||||
|
# se quadrado estiver seleccionado, mostrá-lo
|
||||||
|
if quadrado_seleccionado:
|
||||||
pg.draw.rect(
|
pg.draw.rect(
|
||||||
janela,
|
janela,
|
||||||
pg.Color(0, 0, 0, 0),
|
pg.Color(0, 0, 0, 0),
|
||||||
@ -293,20 +314,12 @@ def main(mapa: Mapa | None, tamanho_mapa: tuple[int, int]):
|
|||||||
2,
|
2,
|
||||||
border_radius=20,
|
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)
|
|
||||||
# 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
|
||||||
actualizarEstatisticas(janela, frame_info_mapa, mapa)
|
actualizarEstatisticas(janela, frame_info_mapa, mapa)
|
||||||
# mostrar frame_accoes
|
# mostrar frame_accoes
|
||||||
frame_accoes.desenhar(janela, 5, 10)
|
|
||||||
pg.display.flip()
|
pg.display.flip()
|
||||||
clock.tick(60)
|
clock.tick(60)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user