ブロックを順番にスタックに配置するために、最終的に各ノード (要素 0 ~ 8 の int[]) をパスに格納する 8 パズル ソルバーを実行しています。int[,] を表示する WPF GUI があります。
foreach (var node in stack)
{
int[,] unstrung = node.unstringNode(node); // turns node of int[] into board of int[,]
blocks.setBoard(unstrung); // sets the board to pass in to the GUI
DrawBoard(); // Takes the board (int[,]) and sets the squares on the GUI to match it.
Thread.Sleep(500);
}
GUI に最初のボードが表示され、[解決] をクリックすると、最終的な (順序どおりの) ボードが正しく表示されます。私がやりたいことは、ボード上の各ノードをしばらく表示し、最終的に順序どおりのボードに到達することです。Thread.Sleep を使用すると、GUI は最終ノードを表示する前に設定された時間だけ一時停止します。このコードが各ノードで 500ms ごとにボードを表示しない理由について何か考えはありますか?
参考までに、ノードの Console.Write からの出力例を次に示します。
4,2,3,6,1,0,7,5,8
4,2,0,6,1,3,7,5,8
4 ,0,2,6,1,3,7,5,8
4,1,2,6,0,3,7,5,8
4,1,2,0,6,3,7,5,8
0,1,2,4,6,3,7,5,8
1,0,2,4,6,3,7,5,8
1,2,0,4,6,3,7,5, 8
1,2,3,4,6,0,7,5,8
1,2,3,4,0,6,7,5,8
1,2,3,4,5,6,7,0 ,8
1,2,3,4,5,6,7,8,0