一、简介

基于matlab拼图游戏

二、源代码

function pintu1()
% Pin Tu
% 3x3的方格拼图
% 将数字1~8按顺序排列
% 拼图完成,游戏结束

% producer yuxuan
A = gen()%生成1~9的随机数
G = [1 2 3;4 5 6;7 8 0];%拼图的格式
drawmap(A);%画拼图
 
while 1%玩家操作
    [xpos,ypos] = ginput(1);
    col = ceil(xpos);
    row = 3-ceil(ypos)+1;
    num = A(row,col);
    %处理玩家的操作
    if row>1&A(row-1,col)==0
        A(row-1,col) = num;
        A(row,col) = 0;
    end
    if row<3&A(row+1,col)==0
        A(row+1,col) = num;
        A(row,col) = 0;
    end
    if col>1&A(row,col-1)==0
        A(row,col-1) = num;
        A(row,col) = 0;
    end
    if col<3&A(row,col+1)==0
        A(row,col+1) = num;
        A(row,col) = 0;
    end
    drawmap(A)
    zt = abs(A-G);
    %拼图操作
    if sum(zt(:))==0
        msgbox('win')
        break
    end
    %完成拼图,游戏结束
end
 
 
function drawmap(A)
%画拼图
clf;
hold on
line([0 3],[0 0],'linewidth',4);
line([3 3],[0 3],'linewidth',4);
line([0 3],[3 3],'linewidth',4);
line([0 0],[0 3],'linewidth',4);
%画出3x3的方格
for i = 1:3
    for j = 1:3
        drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j));
        %画每一个小格,以及填色
    end
end
 %画出九宫格
axis equal%取消自动放大变化
axis off%隐藏坐标
 
function drawrect(x1,x2,x3,x4,color,num)
%画每一个小格,以及填色
x = [x1(1) x2(1) x3(1) x4(1)];
y = [x1(2) x2(2) x3(2) x4(2)];
fill(x,y,color)
%填色
if num==0
    text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24)
else
    text(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24)
end %显示数字
 
function y = gen()
%生成1~9的随机数
y = inf*ones(1,9);%生成九个空格
for i = 1:9
    while 1
        a = randint(1,1,9);
        %1~9中生成一个随机数
        if isempty(find(y==a))%查找是否有相同的数出现
            y(i) = a;

三、运行结果

【游戏】基于matlab拼图游戏【含Matlab源码 474期】_matlab

四、备注

版本:2014a