void IPointerDownHandler.OnPointerDown(PointerEventData eventData) { ObjType.LoadObjectInScene(); transform.GetComponent <UnityEngine.UI.Image>().color = Color.green; transform.GetComponentInChildren <UnityEngine.UI.Text>().color = Color.red; listRandom.Clear(); currentNode = PossibleMooves.GetActualListOrder(listRandom); }
public void Search() { do { int nullPos = PossibleMooves.NullPosition(currentNode.ListColliders); foreach (List <Collider> subList in PossibleMooves.ListOfMooves(inch, nullPos, currentNode.ListColliders)) { Node nodeAdj = new Node(subList); if (IsCurrentNodeInTheList(nodeAdj, closedList)) { continue; } else if (IsCurrentNodeInTheList(currentNode, openList)) { foreach (Node nodeInlist in openList) { if (nodeInlist == nodeAdj) { nodeAdj.G = currentNode.G + D; if (nodeAdj.G < nodeInlist.G) { nodeAdj.H = NumberOfDifferences(nodeAdj.ListColliders, goal.ListColliders); nodeAdj.F = nodeAdj.G + nodeAdj.H; nodeAdj.Parent = currentNode; openList.Remove(nodeInlist); openList.Add(nodeAdj); } } } } else { nodeAdj.G = currentNode.G + D; nodeAdj.H = NumberOfDifferences(nodeAdj.ListColliders, goal.ListColliders); nodeAdj.F = nodeAdj.G + nodeAdj.H; nodeAdj.Parent = currentNode; openList.Add(nodeAdj); } } if (openList.Count == 0) { break; } SortMinToMaxF(openList); currentNode = openList[0]; openList.RemoveAt(0); closedList.Add(currentNode); } while (NumberOfDifferences(currentNode.ListColliders, goal.ListColliders) != 0); }
public void Search() { bool stop = false; Node startNode = openList[0]; currentNode = startNode; do { Debug.Log("------------------------BOUCLE PRINCIPALE-------------------------- "); List <Node> orderedListNode = SelectMinF(openList); if (orderedListNode.Count > 0) { currentNode = new Node(orderedListNode[0].ListColliders); currentNode.F = orderedListNode[0].F; currentNode.G = orderedListNode[0].G; currentNode.H = orderedListNode[0].H; currentNode.Parent = orderedListNode[0].Parent; } Debug.Log(CalculBadPaletNumbers(currentNode.ListColliders, goalList.ListColliders)); if (CalculBadPaletNumbers(currentNode.ListColliders, goalList.ListColliders) == 0) { Debug.Log("reward OK !"); RewardPathFromEndToStart(currentNode, startNode); } else if (openList.Count == 0) { break; } else { if (IsCurrentNodeInTheList(currentNode, openList)) { openList.Remove(currentNode); closedList.Add(currentNode); } int nullPos = PossibleMooves.NullPosition(currentNode.ListColliders); Debug.Log("------------------------BOUCLE ADJACENTS-------------------------- "); foreach (List <Collider> adjList in PossibleMooves.ListOfMooves(inch, nullPos, currentNode.ListColliders)) { Node currentNod = new Node(adjList); if (IsCurrentNodeInTheList(currentNod, closedList)) { continue; } else if (!IsCurrentNodeInTheList(currentNod, openList)) { currentNod.G = currentNode.G + D; currentNod.H = CalculBadPaletNumbers(currentNod.ListColliders, goalList.ListColliders); currentNod.F = currentNod.G + currentNod.H; currentNod.Parent = currentNode; openList.Add(currentNod); } else if (IsCurrentNodeInTheList(currentNod, openList)) { MonoBehaviour.print("------------------------BOUCLE OPENLIST-------------------------- "); foreach (Node nodeInlist in openList) { if (nodeInlist == currentNod) { currentNod.G = currentNode.G + D; if (currentNod.G < nodeInlist.G) { currentNod.H = CalculBadPaletNumbers(currentNod.ListColliders, goalList.ListColliders); currentNod.F = currentNod.G + currentNod.H; currentNod.Parent = currentNode; openList.Remove(nodeInlist); openList.Add(currentNod); } } } } } } } while (CalculBadPaletNumbers(currentNode.ListColliders, goalList.ListColliders) != 0); }