diff options
Diffstat (limited to 'main.py')
-rw-r--r-- | main.py | 56 |
1 files changed, 32 insertions, 24 deletions
@@ -1,20 +1,22 @@ -mapWidth = 4 -mapHeight = 5 -startPos = [0, 2] -endPos = [1, 4] +# Constants +MAPWIDTH = 4 +MAPHEIGHT = 5 + +STARTPOINT = [0, 2] +ENDPOINT = [1, 4] checkpointList = [ - startPos, + STARTPOINT, [0, 0], [1, 4], [3, 2], [3, 4], - endPos + ENDPOINT ] -obstacleList = [ - [[2, 0], [3, 0]], # obstacleList[0] - [[1, 0], [1, 1]], # obstacleList[1] +wallList = [ # Each of these walls' locations are based on their neighboring squares (Ex. wall #1 is between (2, 0) and (3, 0) + [[2, 0], [3, 0]], + [[1, 0], [1, 1]], [[3, 0], [3, 1]], [[0, 1], [0, 2]], [[0, 2], [1, 2]], @@ -25,23 +27,28 @@ obstacleList = [ ] courseMap = [] -for x in range(mapWidth): # Like for(int x = 0; x > 20; i++) { - for y in range(mapHeight): - courseMap.append([x, y]) + + +def populateCourse(course, width, height): + for x in range(width): + for y in range(height): + course.append([x, y]) + def queryNeighbors(node): -# Right Down Left Up - directions = [[1,0], [0, 1], [-1, 0], [0, -1]] + # Right Down Left Up + directions = [[1, 0], [0, 1], [-1, 0], [0, -1]] result = [] - for dir in directions: # Basically for x in range(4) - neighbor = [node[0] + dir[0], node[1] + dir[1]] # [nodeX + DirectionModifierX, nodeY + DirectionModifierY] - if neighbor in courseMap: # If neighbor is present in the grid: + for dir in directions: # for x in range(4) + neighbor = [node[0] + dir[0], node[1] + dir[1]] # [nodeX + DirectionModifierX, nodeY + DirectionModifierY] + if neighbor in courseMap: # Makes sure the neighbor is within bounds result.append(neighbor) - for x in range(len(obstacleList)): - if node in obstacleList[x] and neighbor in obstacleList[x]: + for x in range(len(wallList)): + if node in wallList[x] and neighbor in wallList[x]: # TBD: Optimize determining if wall is present result.remove(neighbor) return result + def getShortestPath(courseMap, startPos, endPos): searchPaths = [[startPos]] visitedCoordinates = [startPos] @@ -59,11 +66,12 @@ def getShortestPath(courseMap, startPos, endPos): searchPaths.append(currentPath + [nextPos]) visitedCoordinates += nextPos -def solveCourse(courseMap, obstacleList, checkpointList): - for x in range(len(checkpointList) - 1): # Repeat 6 Times - shortestPath = getShortestPath(courseMap, checkpointList[x], checkpointList[x + 1]) + +def solveCourse(course, obstacles, checkpoints): + for x in range(len(checkpoints) - 1): + shortestPath = getShortestPath(course, checkpoints[x], checkpoints[x + 1]) print(shortestPath) - -solveCourse(courseMap, obstacleList, checkpointList) +populateCourse(courseMap, MAPWIDTH, MAPHEIGHT) +solveCourse(courseMap, wallList, checkpointList) |