# libraries import pygame from pyglet.gl import * # for blocky textures # other files of this project import project_constants as const import minefield as mf from display_assets import display_sapper def main(): pygame.init() pygame.display.set_caption(const.V_NAME_OF_WINDOW) # FPS clock clock = pygame.time.Clock() # for blocky textures glEnable(GL_TEXTURE_2D) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) # create an instance of Minefield, pass necessary data minefield = mf.Minefield(const.MAP_RANDOM_10x10) running = True while running: # FPS control clock.tick(const.V_FPS) # ================ # # === GRAPHICS === # # ================ # # background grid (fills frame with white, blits grid) const.SCREEN.fill((255, 255, 255)) const.SCREEN.blit( const.ASSET_BACKGROUND, ( const.V_SCREEN_PADDING, const.V_SCREEN_PADDING ) ) # draw tiles and mines minefield.draw(const.SCREEN) # sapper display_sapper( minefield.agent.position[0], minefield.agent.position[1], const.Direction.UP ) # update graphics after blitting pygame.display.update() # ============== # # === EVENTS === # # ============== # for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # Assigning all input from keyboard as variables into an array keys = pygame.key.get_pressed() # Depending on what key we press, the agent will move in that direction # DISCRETION : The only keys that are available are arrow keys # DISCRETION : is_valid_move is a new brand function that now plays a critical role in movement of our Agent (It is NOT just the "check up" function anymore) if keys[pygame.K_RIGHT]: target_row, target_column = minefield.agent.go_right() minefield.is_valid_move(target_row, target_column) elif keys[pygame.K_LEFT]: target_row, target_column = minefield.agent.go_left() minefield.is_valid_move(target_row, target_column) elif keys[pygame.K_UP]: target_row, target_column = minefield.agent.go_up() minefield.is_valid_move(target_row, target_column) elif keys[pygame.K_DOWN]: target_row, target_column = minefield.agent.go_down() minefield.is_valid_move(target_row, target_column) if __name__ == "__main__": main()