image thumbnail
from Picture Puzzle by Sandeep Solanki
solve picture puzzle of 3X3

puzzel.m
%% HELP : PUZZEL
% Use Arrow keys
%                          \uparrow
%   \leftarrow   \downarrow   \rightarrow
%                                                 to move toward the empty
%                                                 space.
%% Init
clc;clear;close all;warning off;
im = imread('im2.jpg');
im1 = imresize(im,[600 600]);
imshow(im1);
text(100,300,'You Have40 Secs To Solve it !','FontSize',14,'Color','y');
text(150,350,'Use Arrow Keys : ','FontSize',14,'Color','y');
text(295,400,'\uparrow','FontSize',20,'Color','y','FontWeight','Bold'); 
text(225,450,'\leftarrow   \downarrow   \rightarrow','FontSize',20,'Color','y','FontWeight','Bold'); 
pause(3)
res=1;
for i = 1:3
    part1(:,:,i) = im1(1:200,1:200,i);
end
for i = 1:3
    part4(:,:,i) = im1(1:200,201:400,i);
end
for i = 1:3
    part7(:,:,i) = im1(1:200,401:600,i);
end
for i = 1:3
    part2(:,:,i) = im1(201:400,1:200,i);
end
for i = 1:3
    part5(:,:,i) = im1(201:400,201:400,i);
end
for i = 1:3
    part8(:,:,i) = im1(201:400,401:600,i);
end
for i = 1:3
    part3(:,:,i) = im1(401:600,1:200,i);
end
for i = 1:3
    part6(:,:,i) = im1(401:600,201:400,i);
end
for i = 1:3
    part91(:,:,i) = im1(401:600,401:600,i);
end
part9 = uint8(0.941*ones(200,200,3));
partf = {part1 part4 part7 part2 part5 part8 part3 part6 part91};
part = {part1 part4 part7 part2 part5 part8 part3 part6 part9};
%%
part11 = cell(3,3);
s = creat;
for i = 1:9
    ind = s(i);
    part11(i) = part(ind);
end
part2 = part11;
img = cell2mat(part2);
imshow(img);
move = 0;
tic
%% PLAY
while ~isequal(s,[1:3;4:6;7:9])
    move = move + 1;
    k = waitforbuttonpress;
    cc = get(gcf,'CurrentKey');
    ind = find(s==9);
    switch ind
        case 1
            if strcmp(cc,'uparrow')
                s = swapmat(s,1,2);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,1,4);
            else
                s = s;
            end
            
        case 2
            if strcmp(cc,'uparrow')
                s = swapmat(s,2,3);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,2,5);
            elseif strcmp(cc,'downarrow');
                s = swapmat(s,2,1);
            else
                s = s;
            end
            
        case 3
            if strcmp(cc,'downarrow')
                s = swapmat(s,3,2);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,3,6);
            else
                s = s;
            end
            
        case 4
            if strcmp(cc,'uparrow')
                s = swapmat(s,4,5);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,4,7);
            elseif strcmp(cc,'rightarrow');
                s = swapmat(s,4,1);
            else
                s = s;
            end
                
        case 5
            if strcmp(cc,'uparrow')
                s = swapmat(s,5,6);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,5,8);
            elseif strcmp(cc,'downarrow');
                s = swapmat(s,5,4);
            elseif strcmp(cc,'rightarrow')
                s = swapmat(s,5,2);
            else
                s = s;
            end
            
        case 6
            if strcmp(cc,'downarrow')
                s = swapmat(s,6,5);
            elseif strcmp(cc,'leftarrow')
                s = swapmat(s,6,9);
            elseif strcmp(cc,'rightarrow');
                s = swapmat(s,6,3);
            else
                s = s;
            end
         
        case 7
            if strcmp(cc,'uparrow')
                s = swapmat(s,7,8);
            elseif strcmp(cc,'rightarrow')
                s = swapmat(s,7,4);
            else
                s = s;
            end
            
        case 8
            if strcmp(cc,'downarrow')
                s = swapmat(s,8,7);
            elseif strcmp(cc,'uparrow')
                s = swapmat(s,8,9);
            elseif strcmp(cc,'rightarrow');
                s = swapmat(s,8,5);
            else
                s = s;
            end
            
        case 9
            if strcmp(cc,'downarrow')
                s = swapmat(s,9,8);
            elseif strcmp(cc,'rightarrow')
                s = swapmat(s,9,6);
            else
                s = s;
            end       
    end
    for i = 1:9
        ind = s(i);
        part11(i) = part(ind);
    end
    part2 = part11;
    img = cell2mat(part2);
    imshow(img);
    t = toc;
    if t > 40
        s = [1:3;4:6;7:9];        
        res = 0;
    end
end

partf1 = cell(3,3);
for i = 1:9
    ind = s(i);
    partf1(i) = partf(ind);
end
img = cell2mat(partf1);
imshow(img);
if res == 0
    text(180,300,'TIME OUT','FontSize',20,'Color','y');
else
    text(100,300,['TOTAL MOVES : ' num2str(move)],'FontSize',20,'Color','y');
end
%% eof

Contact us