image thumbnail
from Cohesion Adhesion Balls by Krishna Lalith
Player having the last move wins the game.

[valid,C_A_B,Box]=Update_Move(Xnew,Ynew,SXnew,SYnew,C_A_B,Box,turn)
function [valid,C_A_B,Box]=Update_Move(Xnew,Ynew,SXnew,SYnew,C_A_B,Box,turn)

valid=0;
if Box(Xnew,Ynew)~=1,  return;  end%safe side check
%--------------------------------------------------------------------------
% Corners
if not(Xnew==2 & Ynew==2)
    if (SXnew==2 | SYnew==2)
        flag=0;      
        if (C_A_B(SXnew,SYnew) < C_A_B(Xnew,Ynew)), 
            flag=1;  valid=1; 
            [C_A_B,Box]=Condition(Xnew,Ynew,SXnew,SYnew,C_A_B,Box);
        end        
         
        if mod(turn,2)==0
            Board(C_A_B,Box);
            pause(1.25);       
        end
        %connected move                
        if flag==1,   
            row=SXnew-Xnew; column=SYnew-Ynew;
            Xnew=SXnew; Ynew=SYnew;
            SXnew=Xnew+row; SYnew=Ynew+column;
            valid=1;         
        end       
    end
end
%--------------------------------------------------------------------------
% Special case i.e., clicking at empty step
if Box(SXnew,SYnew)==0    
    if ((2*SXnew-Xnew>0 & 2*SYnew-Ynew>0) & (2*SXnew-Xnew<4 & 2*SYnew-Ynew<4))
        if Box(2*SXnew-Xnew,2*SYnew-Ynew)==1           
            C_A_B(SXnew,SYnew)=C_A_B(Xnew,Ynew);
            Box(SXnew,SYnew)=Box(Xnew,Ynew);
            row=Xnew;column=Ynew;            
            Xnew=SXnew;Ynew=SYnew;
            SXnew=2*SXnew-row;SYnew=2*SYnew-column; 
            C_A_B(row,column)=0;
            Box(row,column)=0;
            valid=1;
        end
    end
end
%--------------------------------------------------------------------------
if valid~=1
    if Box(SXnew,SYnew)~=1,  return;  end
end
%--------------------------------------------------------------------------
% SubCenter
if xor(Xnew==2,Ynew==2)
    if (Xnew==2 & SXnew~=2),  valid=1;  end   
    if (Ynew==2 & SYnew~=2),  valid=1;  end
end
%--------------------------------------------------------------------------
% Center
if (Xnew==2 & Ynew==2)
    if xor(SXnew==2,SYnew==2), valid=1;  end
end
%--------------------------------------------------------------------------
if (valid==1)
    [C_A_B,Box]=Condition(Xnew,Ynew,SXnew,SYnew,C_A_B,Box);
end
%--------------------------------------------------------------------------

Contact us at files@mathworks.com