一、简介
基于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;
三、运行结果
四、备注
版本:2014a