# libraries import pygame import time from pyglet.gl import * # for blocky textures # other files of this project import project_constants as const import minefield as mf import searching_algorithms.a_star as a_star from display_assets import blit_graphics def main(): pygame.init() pygame.display.set_caption(const.V_NAME_OF_WINDOW) # for blocky textures glEnable(GL_TEXTURE_2D) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) # FPS clock clock = pygame.time.Clock() # create an instance of Minefield, pass necessary data minefield = mf.Minefield(const.MAP_RANDOM_10x10) # get sequence of actions found by BFS algorithm action_sequence = a_star.graphsearch( initial_state=a_star.State( row=minefield.agent.position[0], column=minefield.agent.position[1], direction=const.Direction.UP), minefield=minefield) running = True while running: # FPS control clock.tick(const.V_FPS) # graphics (from display_assets) blit_graphics(minefield) # make the next move from sequence of actions if any(action_sequence): action = action_sequence.pop(0) if action == const.Action.ROTATE_LEFT: minefield.agent.rotate_left() elif action == const.Action.ROTATE_RIGHT: minefield.agent.rotate_right() elif action == const.Action.GO: minefield.agent.go() time.sleep(const.ACTION_INTERVAL) else: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if __name__ == "__main__": main()