diff --git a/bin/Classess/Node.py b/bin/Classess/Node.py index 2382c11..9a7d4ac 100644 --- a/bin/Classess/Node.py +++ b/bin/Classess/Node.py @@ -22,90 +22,77 @@ def successor(state): node_state_left.state = State() node_state_left.state.coord = state.coord node_state_left.state.direction = "north" - #node_state_left.parent = state node_state_left.action = "Left" node_state_right.state = State() node_state_right.state.coord = state.coord node_state_right.state.direction = "south" - #node_state_right.parent = state node_state_right.action = "Right" - node_state_forward.state = State() - node_state_forward.state.coord = [state.coord[0] + 53, state.coord[1]] - node_state_forward.state.direction = state.direction - #node_state_forward.parent = state - node_state_forward.action = "Up" - - #return [node_state_left, node_state_right, node_state_forward] + if state.coord[0] + 53 < 533: + node_state_forward.state = State() + node_state_forward.state.coord = [state.coord[0] + 53, state.coord[1]] + node_state_forward.state.direction = state.direction + node_state_forward.action = "Up" elif state.direction == "west": node_state_left.state = State() node_state_left.state.coord = state.coord node_state_left.state.direction = "south" - #node_state_left.parent = state node_state_left.action = "Left" node_state_right.state = State() node_state_right.state.coord = state.coord node_state_right.state.direction = "north" - #node_state_right.parent = state node_state_right.action = "Right" - node_state_forward.state = State() - node_state_forward.state.coord = [state.coord[0] - 53, state.coord[1]] - node_state_forward.state.direction = state.direction - #node_state_forward.parent = state - node_state_forward.action = "Up" - - #return [node_state_left, node_state_right, node_state_forward] + if state.coord[0] > 3: + node_state_forward.state = State() + node_state_forward.state.coord = [state.coord[0] - 53, state.coord[1]] + node_state_forward.state.direction = state.direction + node_state_forward.action = "Up" elif state.direction == "north": node_state_left.state = State() node_state_left.state.coord = state.coord node_state_left.state.direction = "west" - #node_state_left.parent = state node_state_left.action = "Left" node_state_right.state = State() node_state_right.state.coord = state.coord node_state_right.state.direction = "east" - #node_state_right.parent = state node_state_right.action = "Right" - node_state_forward.state = State() - node_state_forward.state.coord = [state.coord[0], state.coord[1] - 53] - node_state_forward.state.direction = state.direction - #node_state_forward.parent = state - node_state_forward.action = "Up" - - #return [node_state_left, node_state_right, node_state_forward] + if state.coord[1] > 3: + node_state_forward.state = State() + node_state_forward.state.coord = [state.coord[0], state.coord[1] - 53] + node_state_forward.state.direction = state.direction + node_state_forward.action = "Up" elif state.direction == "south": node_state_left.state = State() node_state_left.state.coord = state.coord node_state_left.state.direction = "east" - #node_state_left.parent = state node_state_left.action = "Left" node_state_right.state = State() node_state_right.state.coord = state.coord node_state_right.state.direction = "west" - #node_state_right.parent = state node_state_right.action = "Right" - node_state_forward.state = State() - node_state_forward.state.coord = [state.coord[0], state.coord[1] + 53] - node_state_forward.state.direction = state.direction - #node_state_forward.parent = state - node_state_forward.action = "Up" + if state.coord[1] + 53 < 533: + node_state_forward.state = State() + node_state_forward.state.coord = [state.coord[0], state.coord[1] + 53] + node_state_forward.state.direction = state.direction + node_state_forward.action = "Up" - #return [node_state_left, node_state_right, node_state_forward] - - 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] + else: + return [node_state_left, node_state_right] 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] if elem.state.coord == end_state_coord: - print("Gotowe!") bool = False return fringe @@ -166,8 +152,15 @@ def graphsearch(fringe, explored, start_state, end_state_coord): another_states[i].parent = elem.state fringe.append(another_states[i]) 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 + # if another_states[i] in fringe: + # break if another_states[i].state.direction == fringe[j].state.direction: another_states[i].parent = elem.state fringe.append(another_states[i]) diff --git a/bin/Classess/__pycache__/Node.cpython-38.pyc b/bin/Classess/__pycache__/Node.cpython-38.pyc index dc862e5..06dc08f 100644 Binary files a/bin/Classess/__pycache__/Node.cpython-38.pyc and b/bin/Classess/__pycache__/Node.cpython-38.pyc differ diff --git a/bin/main/main.py b/bin/main/main.py index d954bec..bf0747d 100644 --- a/bin/main/main.py +++ b/bin/main/main.py @@ -164,25 +164,13 @@ def Action(event): # Modified by Artem to search in the status area def MouseClickEvent(event): global fringe - #print(len(field.canvas_small_images), 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("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) end_state_coord = [] 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)): 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): @@ -194,22 +182,14 @@ def MouseClickEvent(event): if len(fringe) == 0: node.state.coord = field.small_field_canvas.coords(player.image_canvas_id) node.state.direction = "east" - print("Pierwszy state - OK") else: node = fringe[len(fringe) - 1] - print("Pozostale states - OK") fringe.clear() - print("\nLIST IS EMPTY: {}\n".format(fringe)) explored.clear() - print("Czyszczenie list - OK") - # Successor - only east 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)): 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))