コード例 #1
0
def spring_DLT(x, y, base, d=15):
    t_val = Terrain.GetTerrainVal(pix[x, y])
    e_val = float(elevations[y][x])
    diff = e_val - base
    if (diff > 1):
        return
    if (d == 0):
        return
    pix[x, y] = (113, 237, 255, 255)
    for tup in pixel_neighbors((x, y)):
        i, j = tup
        t_val = Terrain.GetTerrainVal(pix[i, j])
        if (t_val != Terrain.Water() and t_val != Terrain.Ice()):
            spring_DLT(i, j, base, d - 1)
コード例 #2
0
def MakeSuccessor(x, y, gX, gY):
    if (x < 0 or x >= MAX_X() or y < 0 or y >= MAX_Y()):
        return None
    ele = elevations[x][y]
    ter = Terrain.GetTerrainVal(pix[x, y])
    if ter == Terrain.OutOfBounds():
        return None
    s = State.State(ele, ter, x, y, gX, gY)
    return s
コード例 #3
0
def winter_DLT(x, y, d=7):
    t_val = Terrain.GetTerrainVal(pix[x, y])
    if (t_val != Terrain.Water()):
        return
    if (d == 0):
        return
    pix[x, y] = (113, 237, 255, 255)
    for tup in pixel_neighbors((x, y)):
        i, j = tup
        winter_DLT(i, j, d - 1)
コード例 #4
0
def do_fall():
    print("do fall was called")
    newColor = (128, 128, 128, 255)
    oldColor = (255, 255, 255, 255)
    print(Terrain.GetTerrainVal((255, 255, 255, 255)))
    s = time.time()
    for x in range(MAX_X()):
        for y in range(MAX_Y()):
            if (pix[x, y] == oldColor):
                for tup in pixel_neighbors((x, y)):
                    i, j = tup
                    t_val = Terrain.GetTerrainVal(pix[i, j])
                    if pix[i, j] != pix[x, y] and t_val != Terrain.Water(
                    ) and t_val != Terrain.ImpassibleVeg(
                    ) and t_val != Terrain.RoughMeadow():
                        pix[i, j] = newColor
                pix[x, y] = newColor
    e = time.time()
    print(e - s)
コード例 #5
0
def make_neighbor(x, y):
    # validates out of bound indices
    if (x < 0 or x >= MAX_X() or y < 0 or y >= MAX_Y()):
        return None
    ter = Terrain.GetTerrainVal(pix[x, y])
    # filters out of bound neighbors
    if ter == Terrain.OutOfBounds():
        return None
    # must be a valid neighbor at this point
    return (x, y)
コード例 #6
0
def main():
    global pix
    global elevations
    img = Image.open('elevations_pixels.PNG')
    pix = img.load()
    with open('elevations.txt') as f:
        elevations = [line.split() for line in f]
    img.show()
    #do_fall()
    #do_winter()
    #do_spring()
    #img.show()
    #return

    print("done")
    print(len(elevations))
    points = []
    if (len(sys.argv) > 2):
        print("argument was passed!")
        with open(sys.argv[1]) as f:
            points = [tuple([int(i) for i in line.split()]) for line in f]
        season = int(sys.argv[2])
        change_season(season)
        paths = []
        stime = time.time()
        for i in range(len(points) - 1):
            start = points[i]
            end = points[i + 1]
            init = State.State(elevations[start[0]][start[1]],
                               Terrain.GetTerrainVal(pix[start[0], start[1]]),
                               start[0], start[1], end[0], end[1])
            paths.append(A_star(init))
        etime = time.time()
        counter = 1
        for path in paths:
            path.reverse()
            hr_output(path, counter)
            counter += 1
            for s in path:
                pix[s.x, s.y] = (255, 0, 0, 255)
        print(etime - stime)
        img.show()
        img.close()
        #print(points)
    # no file parameter passed, defaults to using points for brown path
    else:
        print("Usage: python3 orienteering.py file [season mode bit]")
        print("\tSEASON MODE BITS")
        print("\t0 -> summmer")
        print("\t1 -> fall")
        print("\t2 -> winter")
        print("\t3 -> spring")
        points = [(230, 327), (276, 279), (303, 240), (306, 286), (290, 310),
                  (304, 331), (306, 341), (253, 372), (246, 355), (288, 338),
                  (282, 321), (243, 327), (230, 327)]
コード例 #7
0
def main():
    global pix
    global elevations
    print('hello')
    img = Image.open('elevations_pixels.PNG')
    pix = img.load()
    print(pix)
    print(pix[0, 0])
    print(pix[228, 308])
    print(pix[230, 327])
    #pix[168,236] = (255,0,0,255)
    #pix[178,222] = (255,0,0,255)
    #pix[0,0] = (0,0,0,255)
    #img.show()
    x = img.size[0]
    y = img.size[1]
    print(x)
    print(y)
    with open('elevations.txt') as f:
        elevations = [line.split() for line in f]
    print("done")
    print(len(elevations))
    if (len(sys.argv) > 1):
        print("argument was passed!")
        return
    points = [(230, 327), (276, 279), (303, 240), (306, 286), (290, 310),
              (304, 331), (306, 341), (253, 372), (246, 355), (288, 338),
              (282, 321), (243, 327), (230, 327)]
    paths = []
    """
	#init = State.State(elevations[168][236], Terrain.GetTerrainVal(pix[168,236]), 168, 236, 178, 222)
	init = State.State(elevations[230][327], Terrain.GetTerrainVal(pix[230,327]), 230, 327, 276, 279)
	start = time.time()
	paths.append(A_star(init))
	end = time.time()
	print(end-start)
	"""
    stime = time.time()
    for i in range(len(points) - 1):
        start = points[i]
        end = points[i + 1]
        init = State.State(elevations[start[0]][start[1]],
                           Terrain.GetTerrainVal(pix[start[0], start[1]]),
                           start[0], start[1], end[0], end[1])
        paths.append(A_star(init))
    etime = time.time()
    for path in paths:
        for s in path:
            pix[s.x, s.y] = (255, 0, 0, 255)
    print(etime - stime)
    img.show()
    img.close()
コード例 #8
0
def GetSuccessors(state):
    succ = []
    # successors above
    succ.append(
        State.State(elevations[state.x + 1][state.y - 1],
                    Terrain.GetTerrainVal(pix[state.x + 1, state.y - 1]),
                    state.x + 1, state.y - 1, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x + 1][state.y],
                    Terrain.GetTerrainVal(pix[state.x + 1, state.y]),
                    state.x + 1, state.y, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x + 1][state.y + 1],
                    Terrain.GetTerrainVal(pix[state.x + 1, state.y + 1]),
                    state.x + 1, state.y + 1, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x][state.y - 1],
                    Terrain.GetTerrainVal(pix[state.x, state.y - 1]), state.x,
                    state.y - 1, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x][state.y + 1],
                    Terrain.GetTerrainVal(pix[state.x, state.y + 1]), state.x,
                    state.y + 1, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x - 1][state.y - 1],
                    Terrain.GetTerrainVal(pix[state.x - 1, state.y - 1]),
                    state.x - 1, state.y - 1, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x - 1][state.y],
                    Terrain.GetTerrainVal(pix[state.x + 1, state.y]),
                    state.x + 1, state.y, state.goalX, state.goalY))
    succ.append(
        State.State(elevations[state.x - 1][state.y + 1],
                    Terrain.GetTerrainVal(pix[state.x - 1, state.y + 1]),
                    state.x - 1, state.y + 1, state.goalX, state.goalY))
    return succ