67 lines
1.3 KiB
Python
67 lines
1.3 KiB
Python
import sys
|
|
import pygame
|
|
from pygame.locals import *
|
|
|
|
from consts import ROWS, COLS, WIN_WIDTH, WIN_HEIGHT
|
|
from astar import Node, a_star
|
|
from astar import WALL, END, START
|
|
|
|
from drawing import draw_cell, draw_grid, draw_path
|
|
|
|
|
|
def create_grid():
|
|
grid = []
|
|
for i in range(0, ROWS):
|
|
grid.append([])
|
|
for j in range(0, COLS):
|
|
grid[i].append(Node(i, j))
|
|
|
|
return grid
|
|
|
|
|
|
FPS = 60
|
|
fpsClock = pygame.time.Clock()
|
|
|
|
Window = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
|
|
BACKGROUND = (0, 0, 0)
|
|
PATH_COLOR = (128, 128, 128)
|
|
|
|
|
|
def main():
|
|
grid = create_grid()
|
|
|
|
start = grid[0][0]
|
|
start.celltype = START
|
|
end = grid[ROWS - 1][COLS - 1]
|
|
end.celltype = END
|
|
|
|
path = a_star(grid, start, end)
|
|
if path is None:
|
|
print("No path")
|
|
|
|
looping = True
|
|
while looping:
|
|
for event in pygame.event.get():
|
|
if event.type == QUIT:
|
|
print("Received QUIT event. Exiting.")
|
|
looping = False
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
Window.fill(BACKGROUND) # Clear display
|
|
|
|
# Draw grid
|
|
draw_grid(Window, grid)
|
|
draw_path(Window, PATH_COLOR, path)
|
|
|
|
pygame.display.update() # Swap render buffer
|
|
fpsClock.tick(FPS)
|
|
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pygame.init()
|
|
main()
|