我已经实现了A *算法来解决8-puzzle。但是我希望通过在动画状态的网格上显示我的3乘3矩阵的每个状态变化的结果来更加花哨。
我的矩阵的数字从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 :(得分: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
如果您想添加边框,可以使用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
或使用pcolor
(使用nan
s填充一些内容):
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