Graphsearch and successor - perhaps they work right, but we have to check it
This commit is contained in:
parent
0493082643
commit
4a2696bd89
@ -22,90 +22,77 @@ def successor(state):
|
|||||||
node_state_left.state = State()
|
node_state_left.state = State()
|
||||||
node_state_left.state.coord = state.coord
|
node_state_left.state.coord = state.coord
|
||||||
node_state_left.state.direction = "north"
|
node_state_left.state.direction = "north"
|
||||||
#node_state_left.parent = state
|
|
||||||
node_state_left.action = "Left"
|
node_state_left.action = "Left"
|
||||||
|
|
||||||
node_state_right.state = State()
|
node_state_right.state = State()
|
||||||
node_state_right.state.coord = state.coord
|
node_state_right.state.coord = state.coord
|
||||||
node_state_right.state.direction = "south"
|
node_state_right.state.direction = "south"
|
||||||
#node_state_right.parent = state
|
|
||||||
node_state_right.action = "Right"
|
node_state_right.action = "Right"
|
||||||
|
|
||||||
|
if state.coord[0] + 53 < 533:
|
||||||
node_state_forward.state = State()
|
node_state_forward.state = State()
|
||||||
node_state_forward.state.coord = [state.coord[0] + 53, state.coord[1]]
|
node_state_forward.state.coord = [state.coord[0] + 53, state.coord[1]]
|
||||||
node_state_forward.state.direction = state.direction
|
node_state_forward.state.direction = state.direction
|
||||||
#node_state_forward.parent = state
|
|
||||||
node_state_forward.action = "Up"
|
node_state_forward.action = "Up"
|
||||||
|
|
||||||
#return [node_state_left, node_state_right, node_state_forward]
|
|
||||||
|
|
||||||
elif state.direction == "west":
|
elif state.direction == "west":
|
||||||
|
|
||||||
node_state_left.state = State()
|
node_state_left.state = State()
|
||||||
node_state_left.state.coord = state.coord
|
node_state_left.state.coord = state.coord
|
||||||
node_state_left.state.direction = "south"
|
node_state_left.state.direction = "south"
|
||||||
#node_state_left.parent = state
|
|
||||||
node_state_left.action = "Left"
|
node_state_left.action = "Left"
|
||||||
|
|
||||||
node_state_right.state = State()
|
node_state_right.state = State()
|
||||||
node_state_right.state.coord = state.coord
|
node_state_right.state.coord = state.coord
|
||||||
node_state_right.state.direction = "north"
|
node_state_right.state.direction = "north"
|
||||||
#node_state_right.parent = state
|
|
||||||
node_state_right.action = "Right"
|
node_state_right.action = "Right"
|
||||||
|
|
||||||
|
if state.coord[0] > 3:
|
||||||
node_state_forward.state = State()
|
node_state_forward.state = State()
|
||||||
node_state_forward.state.coord = [state.coord[0] - 53, state.coord[1]]
|
node_state_forward.state.coord = [state.coord[0] - 53, state.coord[1]]
|
||||||
node_state_forward.state.direction = state.direction
|
node_state_forward.state.direction = state.direction
|
||||||
#node_state_forward.parent = state
|
|
||||||
node_state_forward.action = "Up"
|
node_state_forward.action = "Up"
|
||||||
|
|
||||||
#return [node_state_left, node_state_right, node_state_forward]
|
|
||||||
|
|
||||||
elif state.direction == "north":
|
elif state.direction == "north":
|
||||||
|
|
||||||
node_state_left.state = State()
|
node_state_left.state = State()
|
||||||
node_state_left.state.coord = state.coord
|
node_state_left.state.coord = state.coord
|
||||||
node_state_left.state.direction = "west"
|
node_state_left.state.direction = "west"
|
||||||
#node_state_left.parent = state
|
|
||||||
node_state_left.action = "Left"
|
node_state_left.action = "Left"
|
||||||
|
|
||||||
node_state_right.state = State()
|
node_state_right.state = State()
|
||||||
node_state_right.state.coord = state.coord
|
node_state_right.state.coord = state.coord
|
||||||
node_state_right.state.direction = "east"
|
node_state_right.state.direction = "east"
|
||||||
#node_state_right.parent = state
|
|
||||||
node_state_right.action = "Right"
|
node_state_right.action = "Right"
|
||||||
|
|
||||||
|
if state.coord[1] > 3:
|
||||||
node_state_forward.state = State()
|
node_state_forward.state = State()
|
||||||
node_state_forward.state.coord = [state.coord[0], state.coord[1] - 53]
|
node_state_forward.state.coord = [state.coord[0], state.coord[1] - 53]
|
||||||
node_state_forward.state.direction = state.direction
|
node_state_forward.state.direction = state.direction
|
||||||
#node_state_forward.parent = state
|
|
||||||
node_state_forward.action = "Up"
|
node_state_forward.action = "Up"
|
||||||
|
|
||||||
#return [node_state_left, node_state_right, node_state_forward]
|
|
||||||
|
|
||||||
elif state.direction == "south":
|
elif state.direction == "south":
|
||||||
|
|
||||||
node_state_left.state = State()
|
node_state_left.state = State()
|
||||||
node_state_left.state.coord = state.coord
|
node_state_left.state.coord = state.coord
|
||||||
node_state_left.state.direction = "east"
|
node_state_left.state.direction = "east"
|
||||||
#node_state_left.parent = state
|
|
||||||
node_state_left.action = "Left"
|
node_state_left.action = "Left"
|
||||||
|
|
||||||
node_state_right.state = State()
|
node_state_right.state = State()
|
||||||
node_state_right.state.coord = state.coord
|
node_state_right.state.coord = state.coord
|
||||||
node_state_right.state.direction = "west"
|
node_state_right.state.direction = "west"
|
||||||
#node_state_right.parent = state
|
|
||||||
node_state_right.action = "Right"
|
node_state_right.action = "Right"
|
||||||
|
|
||||||
|
if state.coord[1] + 53 < 533:
|
||||||
node_state_forward.state = State()
|
node_state_forward.state = State()
|
||||||
node_state_forward.state.coord = [state.coord[0], state.coord[1] + 53]
|
node_state_forward.state.coord = [state.coord[0], state.coord[1] + 53]
|
||||||
node_state_forward.state.direction = state.direction
|
node_state_forward.state.direction = state.direction
|
||||||
#node_state_forward.parent = state
|
|
||||||
node_state_forward.action = "Up"
|
node_state_forward.action = "Up"
|
||||||
|
|
||||||
#return [node_state_left, node_state_right, node_state_forward]
|
if len(node_state_forward.state.coord) != 0:
|
||||||
|
|
||||||
return [node_state_left, node_state_right, node_state_forward]
|
return [node_state_left, node_state_right, node_state_forward]
|
||||||
|
else:
|
||||||
|
return [node_state_left, node_state_right]
|
||||||
|
|
||||||
|
|
||||||
def graphsearch(fringe, explored, start_state, end_state_coord):
|
def graphsearch(fringe, explored, start_state, end_state_coord):
|
||||||
@ -126,7 +113,6 @@ def graphsearch(fringe, explored, start_state, end_state_coord):
|
|||||||
elem = fringe[iter]
|
elem = fringe[iter]
|
||||||
|
|
||||||
if elem.state.coord == end_state_coord:
|
if elem.state.coord == end_state_coord:
|
||||||
print("Gotowe!")
|
|
||||||
bool = False
|
bool = False
|
||||||
return fringe
|
return fringe
|
||||||
|
|
||||||
@ -166,8 +152,15 @@ def graphsearch(fringe, explored, start_state, end_state_coord):
|
|||||||
another_states[i].parent = elem.state
|
another_states[i].parent = elem.state
|
||||||
fringe.append(another_states[i])
|
fringe.append(another_states[i])
|
||||||
else:
|
else:
|
||||||
if another_states[i] in fringe:
|
states = []
|
||||||
|
for k in range(0, len(fringe)):
|
||||||
|
new_state = [fringe[k].state.coord, fringe[k].state.direction]
|
||||||
|
states.append(new_state)
|
||||||
|
now_state = [another_states[i].state.coord, another_states[i].state.direction]
|
||||||
|
if now_state in states:
|
||||||
break
|
break
|
||||||
|
# if another_states[i] in fringe:
|
||||||
|
# break
|
||||||
if another_states[i].state.direction == fringe[j].state.direction:
|
if another_states[i].state.direction == fringe[j].state.direction:
|
||||||
another_states[i].parent = elem.state
|
another_states[i].parent = elem.state
|
||||||
fringe.append(another_states[i])
|
fringe.append(another_states[i])
|
||||||
|
Binary file not shown.
@ -164,25 +164,13 @@ def Action(event):
|
|||||||
# Modified by Artem to search in the status area
|
# Modified by Artem to search in the status area
|
||||||
def MouseClickEvent(event):
|
def MouseClickEvent(event):
|
||||||
global fringe
|
global fringe
|
||||||
#print(len(field.canvas_small_images), field.canvas_small_images)
|
|
||||||
for i in range(0, len(field.canvas_small_images)):
|
for i in range(0, len(field.canvas_small_images)):
|
||||||
print(field.small_field_canvas.coords(field.canvas_small_images[i]))
|
print(field.small_field_canvas.coords(field.canvas_small_images[i]))
|
||||||
#print("Lewy przycisk myszy zostal nacisniety!")
|
|
||||||
#node = nd.Node()
|
|
||||||
#print(node.state.coord, node.state.direction, node.action, node.parent)
|
|
||||||
#node.state = nd.State()
|
|
||||||
#node.state.coord = field.small_field_canvas.coords(player.image_canvas_id)
|
|
||||||
#node.state.direction = "east"
|
|
||||||
#node.state.coord = field.small_field_canvas.coords(field.canvas_small_images[5])
|
|
||||||
|
|
||||||
start_position = field.small_field_canvas.coords(player.image_canvas_id)
|
start_position = field.small_field_canvas.coords(player.image_canvas_id)
|
||||||
end_state_coord = []
|
end_state_coord = []
|
||||||
print("Pierwsza pozycja: {} {}".format(start_position[0], start_position[1]))
|
print("Pierwsza pozycja: {} {}".format(start_position[0], start_position[1]))
|
||||||
|
|
||||||
|
|
||||||
#print(node.state.coord, node.state.direction, node.parent, node.action)
|
|
||||||
#print("Pozycje myszy: {} {}".format(event.x, event.y))
|
|
||||||
|
|
||||||
for i in range(0, len(field.canvas_small_images)):
|
for i in range(0, len(field.canvas_small_images)):
|
||||||
img_coords = field.small_field_canvas.coords(field.canvas_small_images[i])
|
img_coords = field.small_field_canvas.coords(field.canvas_small_images[i])
|
||||||
if (img_coords[0] <= event.x and event.x <= img_coords[0] + IMAGE_SIZE) and (img_coords[1] <= event.y and event.y <= img_coords[1] + IMAGE_SIZE):
|
if (img_coords[0] <= event.x and event.x <= img_coords[0] + IMAGE_SIZE) and (img_coords[1] <= event.y and event.y <= img_coords[1] + IMAGE_SIZE):
|
||||||
@ -194,22 +182,14 @@ def MouseClickEvent(event):
|
|||||||
if len(fringe) == 0:
|
if len(fringe) == 0:
|
||||||
node.state.coord = field.small_field_canvas.coords(player.image_canvas_id)
|
node.state.coord = field.small_field_canvas.coords(player.image_canvas_id)
|
||||||
node.state.direction = "east"
|
node.state.direction = "east"
|
||||||
print("Pierwszy state - OK")
|
|
||||||
else:
|
else:
|
||||||
node = fringe[len(fringe) - 1]
|
node = fringe[len(fringe) - 1]
|
||||||
print("Pozostale states - OK")
|
|
||||||
|
|
||||||
fringe.clear()
|
fringe.clear()
|
||||||
print("\nLIST IS EMPTY: {}\n".format(fringe))
|
|
||||||
explored.clear()
|
explored.clear()
|
||||||
print("Czyszczenie list - OK")
|
|
||||||
|
|
||||||
# Successor - only east
|
|
||||||
fringe = nd.graphsearch(fringe, explored, node.state, end_state_coord)
|
fringe = nd.graphsearch(fringe, explored, node.state, end_state_coord)
|
||||||
print("Fringe - OK")
|
|
||||||
#print(fringe)
|
|
||||||
|
|
||||||
print("{}".format(fringe))
|
|
||||||
for i in range(0, len(fringe)):
|
for i in range(0, len(fringe)):
|
||||||
print('Node{} = State: {} {}, Parent: {} {}, Action: {}'.format(i + 1, fringe[i].state.coord, fringe[i].state.direction, fringe[i].parent.coord, fringe[i].parent.direction, fringe[i].action))
|
print('Node{} = State: {} {}, Parent: {} {}, Action: {}'.format(i + 1, fringe[i].state.coord, fringe[i].state.direction, fringe[i].parent.coord, fringe[i].parent.direction, fringe[i].action))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user