public void PrintNodeHistory(int nodeIndex = 0) { StringBuilder sb = new StringBuilder(); LinkedList <GameSpace> list = new LinkedList <GameSpace>(); int id, offset; GameSpace tempSpace; var currentSpace = (nodeIndex > 0 && nodeIndex < Spaces.Count) ? Spaces[nodeIndex] : Spaces.LastOrDefault(); // Ensure a "substituted" node was selected. If sure select then next previous node that has an adjacency list. id = currentSpace.Id; if (!ParentOfGameSpace.TryGetValue(id, out tempSpace)) { for (int i = 1; i <= 6; ++i) // Reverse up-to 6 spaces - one die roll { if ((id - i) > 0 && ParentOfGameSpace.TryGetValue(id - i, out tempSpace)) { list.AddFirst(currentSpace); currentSpace = Spaces[id - i]; offset = i; break; } } } // build list of nodes using each node's parent while (currentSpace != null && currentSpace.Id != int.MinValue) { list.AddFirst(currentSpace); id = currentSpace.Id; ParentOfGameSpace.TryGetValue(id, out currentSpace); } for (var currentNode = list.First; currentNode != null; currentNode = currentNode.Next) { if (sb.Length > 0) { sb.Append(" -> "); } sb.Append($"[{currentNode.Value.Id:D4}]"); } sb.Insert(0, "Best path found: "); Console.WriteLine(sb.ToString()); }
public void Reset() { ParentOfGameSpace.Clear(); GameSpaceLevels.Clear(); }