2016-10-05 9 views
1

8 *パズルを解くためにA *アルゴリズムを実装しました。しかし、私は状態をアニメーション化するグリッド上に私の3×3マトリックスの各状態変化の結果を表示することにより、より幻想的になりたいです。グリッドの各セルに(n×n)行列の数値を入力します。

私の行列の数値は0から8までです。したがって、各タイルに3行3列のグリッドが必要です。

どこから始めたらいいのか分かりません。すべてのアイデアは大歓迎です。

以下の最初のマトリックスは私が始めたところであり、私は目標状態である最後の状態に到達するためにA *を使いました。これらの行列をグリッド上に表示し、遷移をグラフィカルに表示したいと思います。したがって、行列が変わるたびにグリッドも変化します。

2  8  3 
1  6  4 
7  0  5 

2  8  3 
1  0  4 
7  6  5 

2  0  3 
1  8  4 
7  6  5 

0  2  3 
1  8  4 
7  6  5 

1  2  3 
0  8  4 
7  6  5 

1  2  3 
8  0  4 
7  6  5 
+0

はあなたが* *たものたちを表示することができますし、何を*出力として*したいですか? – hbaderts

+0

GUIを探しているのですか、コマンドウィンドウで探していますか? 'disp'の何が問題なの? – Suever

+0

Yah、そうですよ!私はGUIを探しています! 'disp'では何も問題はありませんが、私はGUIを持つ方が好きです。 – Jam1

答えて

1

imagescの使用例については、このを見てください:

P = perms(0:8); 
A = reshape(P(1:100,:).',3,[]); 
A = reshape(A,3,3,[]); 

for k = 1:size(A,3) 
    imagesc(A(:,:,k)) 
    axis off 
    pause(0.1) 
end 

opt_1

あなたが国境を追加したい場合、あなたはどちらかできnan sのパッドに:

B = nan(5,5,size(A,3)); 
B(1:2:5,1:2:5,:) = A; 
cmap = colormap; 
cmap(1,:) = [0 0 0]; 
colormap(cmap) 

for k = 1:size(B,3) 
    imagesc(B(:,:,k)) 
    axis off 
    pause(0.1) 
end 

opt_2

または(nan sのいくつかのパディング付き)pcolorを使用します。

B = nan(4,4,size(A,3)); 
B(1:3,1:3,:) = A; 

for k = 1:size(B,3) 
    pcolor(B(:,:,k)) 
    axis off 
    pause(0.1) 
end 

opt_3

+0

これは良いですね!どのようにセル間にスペースを追加するか、各セルの周りに境界線を配置しますか? – Jam1

+1

@ Jam1、いくつかのオプションを追加しました。 – EBH

+0

こんにちは、ありがとう、私は 'pcolor'を好んでいますが、イメージが垂直に正しく表示されないので' set(gca、 'Ydir'、 'reverse') 'を追加しなければなりませんでした。 – Jam1

関連する問題