资源简介
利用MATLAB编写的拼图游戏完整程序文件,代码在原来的基础上进行了改进,程序风格良好无bug,点击运行即可进行拼图游戏。
代码片段和文件信息
%% 制作人:吴限
% 2018年2月14日
function jigsaw()
%% 主函数
Tag_A= Disrupt();%将标记矩阵的排列顺序打乱
drawmap(Tag_A);%按照标记矩阵显示拼图
global Tag;%Tag是标记矩阵,定义成全局变量,方便传递参数
Tag=Tag_A;
set(gcf‘windowButtonDownFcn‘@ButtonDownFcn);%点击鼠标时调用ButtonDownFcn函数
function ButtonDownFcn(srcevent)
%% 回调函数,鼠标点击事件发生时调用
pt=get(gca‘CurrentPoint‘);%获取当前鼠标点击位置坐标
xpos=pt(11);%鼠标点击处的横坐标实际值
ypos=pt(12);%鼠标点击处的纵坐标实际值
col = ceil(xpos/100);%将横坐标值转换为列数
row = ceil(ypos/100);%将纵坐标值转换为行数
global Tag; %全局变量声明
if(col<=3&&col>0)&&(row<=3&&row>0)%鼠标点击位置在有效范围内
Tag=movejig(Tagrowcol);%按点击位置移动拼图
drawmap(Tag)%显示拼图
order = [1 2 3;4 5 6;7 8 0];%顺序矩阵
zt = abs(Tag-order);%比较两个矩阵
if sum(zt(:))==0 %顺序已经完全吻合
image=imread(‘jigsawImage.jpeg‘);
imshow(image) %游戏完成,补全拼图
msgbox(‘You did a good job 恭喜完成!!!‘) %提示完成信息
pause(0.5);%延迟半秒
close all %游戏结束,关闭所有图像窗口
end
else
return
end
function tag=movejig(tagrowcol)
%% 4个if分4种情况对不同位置处的点坐标与矩阵行列式统一
num = tag(rowcol);%鼠标位置与号码牌一致
if (row>1)&&(tag(row-1col)==0)%点击位置在第二或第三行,空白块在点击位置的上一行
tag(row-1col) = num;%交换两个位置上的值
tag(rowcol) = 0;
end
if (row<3)&&(tag(row+1col)==0)%点击位置在第一或第二行,空白块在点击位置的下一行
tag(row+1col) = num;
tag(rowcol) = 0;
end
if (col>1)&&(tag(rowcol-1)==0)%点击位置在第二或第三列,空白块在点击位置的左边一列
tag(rowcol-1) = num;
tag(rowcol) = 0;
end
if (col<3)&&(tag(rowcol+1)==0)%点击位置在第二或第三列,空白块在点击位置的右边一列
tag(rowcol+1) = num;
tag(rowcol) = 0;
end
function y = Disrupt()
%% 随机打乱原拼图排列顺序
y =[123;456;780];
for i = 1:360
row=randi([13]);%产生一个范围在1到3的整数
col=randi([13]);
y=movejig(yrowcol);%按随机产生的动作打乱拼图
end
function x = choose(imageindex)
%% 根据索引选择对应位置上的拼图块
if index>0 %标记为1,2,3,4,5,6,7,8的拼图块
% 计算出行数row以及列数column
row=fix((index-1)/3);
column=mod(index-13);
% 分割出对应拼图块数据
x=image(1+row*100:100*(row+1)1+column*100:100*(column+1):);
else
x=uint8(255*ones(1001003));%拼图块0矩阵数据
end
function drawmap(A)
%% 将运算数字与对应拼图对应显示图片
origin=imread(‘jigsawImage.jpeg‘);
image=origin;
% 对要显示的拼图进行赋值
for row=1:3
for col=1:3
image(1+(row-1)*100:100*row1+(col-1)*100:100*col:)=choose(originA(rowcol));
end
end
imshow(image)%显示拼图
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2860 2018-02-16 20:55 jigsaw puzzle\jigsaw.m
文件 45040 2018-02-09 17:09 jigsaw puzzle\jigsawImage.jpeg
目录 0 2018-02-18 21:32 jigsaw puzzle\
- 上一篇:汽车八自由度带侧倾simuli
nk模型 - 下一篇:simuli
nk实现SPWM调制
评论
共有 条评论