From 6561469351cfd2bf7f2ad0d53cc723e2c21e615a Mon Sep 17 00:00:00 2001 From: Cameron Smart Date: Mon, 20 Apr 2020 02:27:28 -0700 Subject: [PATCH] route function takes start, stop, and matrixs, returns path --- triple-dungeon/path.py | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/triple-dungeon/path.py b/triple-dungeon/path.py index 489a258..46a7eea 100644 --- a/triple-dungeon/path.py +++ b/triple-dungeon/path.py @@ -2,27 +2,20 @@ from pathfinding.core.diagonal_movement import DiagonalMovement from pathfinding.core.grid import Grid from pathfinding.finder.a_star import AStarFinder -# 0 is an unwalkable block. Numbers larger than 0 are walkable. -# The higher the number the harder it is to walk on. -matrix = [ - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [0, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - ] +def route(start, end, matrix) -> path: + """ + Take a matrix of the level in the form wighted numbers, a start and stop point, and return a path between them. -grid = Grid(matrix=matrix) -start = grid.node(1, 1) -end = grid.node(8, 8) + param: start: (x, y) location of the monster + param: end: (x, y) location of the player + param: matrix: a 2d list of the level. 0s are walls, numbers greater than 0 are weighted + """ + grid = Grid(matrix=matrix) + start = grid.node(start[0],start[1]) + end = grid.node(end[0], end[1]) -finder = AStarFinder(diagonal_movement=DiagonalMovement.always) -path, runs = finder.find_path(start, end, grid) + finder = AStarFinder(diagonal_movement=DiagonalMovement.always) + path, runs = finder.find_path(start, end, grid) -print('operations:', runs, 'path length:', len(path)) -print(grid.grid_str(path=path, start=start, end=end)) + #grid.grid_str(path=path, start=start, end=end) + return path