资源简介
JigsawGUI.rar
代码片段和文件信息
%% 制作人:吴限
% 2019年5月6日
function jigsaw(handles rank_Tag pic_data)
% handles:图形句柄
% rank_Tag:拼图阶数
% pic_data:读入图片的全路径
%% 拼图主函数
Tag_A= Disrupt(rank_Tag);% 将标记矩阵的排列顺序打乱
drawmap(Tag_Ahandles.axes_jigsawpic_datarank_Tag);% 按照标记矩阵显示拼图
global flag;% flag决定在拼图区点击是否移动拼图
global Tag; % Tag是标记矩阵,定义成全局变量,方便传递参数
global steps;% steps用于计数,累计移动拼图的步数
% 初始化变量
flag=true; % 开始游戏后,可以点击移动拼图
steps=0;
Tag=Tag_A;
len_row=size(pic_data1)/rank_Tag; % 每块拼图的宽度
len_col=size(pic_data2)/rank_Tag; % 每块拼图的高度
mask_number(Taghandleslen_rowlen_col) % 改进选择决定是否显示数字标记
set(handles.text_steps‘String‘num2str(steps)) % 显示初始步数
set(gcf‘windowButtonDownFcn‘{@ButtonDownFcnhandlespic_datarank_Tag}); % 点击鼠标时调用ButtonDownFcn函数
function ButtonDownFcn(srceventhandlespic_datarank_Tag)
%% 回调函数,鼠标点击事件发生时调用
global flag;% flag声明,共用全局变量
global Tag; % 全局变量声明
if flag % 若flag为true,允许移动拼图
pt=get(gca‘CurrentPoint‘); % 获取当前鼠标点击位置坐标
xpos=pt(11); % 鼠标点击处的横坐标实际值
ypos=pt(12); % 鼠标点击处的纵坐标实际值
len_row=size(pic_data1)/rank_Tag; % 每块拼图的宽度
len_col=size(pic_data2)/rank_Tag; % 每块拼图的高度
col = ceil(xpos/len_row); % 将横坐标值转换为列数
row = ceil(ypos/len_col); % 将纵坐标值转换为行数
% 判断鼠标点击位置是否在有效范围内
if(col<=rank_Tag && col>0)&&(row<=rank_Tag && row>0)
Tag=movejig(Tagrowcolhandles.text_steps); % 按点击位置移动拼图
drawmap(Taghandles.axes_jigsawpic_datarank_Tag) % 显示拼图
mask_number(Taghandleslen_rowlen_col) % 是否显示数字提示
% order为顺序矩阵,以此判断拼图是否完成
order=[1:1:rank_Tag^2-10];
order=reshape(orderrank_Tagrank_Tag);
order=order‘;
zt = abs(Tag-order); % 比较两个矩阵
if sum(zt(:))==0 % 顺序已经完全吻合
axes(handles.axes_jigsaw)
% 游戏完成,补全拼图
image(pic_data) % 显示全图
set(handles.axes_jigsaw‘Visible‘‘off‘);% 隐藏坐标轴
msgbox(‘You did a good job 恭喜完成!!!‘) % 提示完成信息
flag=false;% 游戏已经完成,设置flag为false
end
else % 点击在外部区域
return % 直接返回,不作处理
end
end
function mask_number(taghandleslen_rowlen_col)
%% 判断是否需要显示数字提示的函数
ismask=get(handles.checkbox_num‘Value‘);% 获取CheckBox的值(是否勾选)
rank_Tag=size(tag1);% 拼图阶数
axes(handles.axes_jigsaw);% 确定坐标轴
% 根据是否勾选决定是否显示text标识
for i=1:size(tag1)
for j=1:size(tag2)
if ismask
text(len_col/2*(2*j-1)-10len_row/2*(2*i-1)num2str(tag(ij))‘FontSize‘55-rank_Tag*5‘Color‘‘c‘)
else
% 未勾选,在该位置设置text为空,实现不显示
text(len_col/2*(2*j-1)-10len_row/2*(2*i-1)‘‘‘FontSize‘55-rank_Tag*5‘Color‘‘c‘)
end
end
end
function tag=movejig(tagrowcolhandle_step)
global steps; % 计步
%% 4个if分4种情况对不同位置处的点坐标与矩阵行列式统一
last_tag=tag;
num = tag(rowcol);%鼠标位置与号码牌一致
[max_rowmax_col]=size(tag);
% 检测点击位置是否处于0号临域
if (row-1)<=max_row && (row-1)>0 % 点击在范围内
if tag(row-1col)==0 % 空白块在点击位置的上一行
tag(row-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 414029 2019-05-06 01:17 JigsawGUI\girl.jpg
文件 5951 2019-05-06 16:53 JigsawGUI\jigsaw.m
文件 9651 2019-05-06 15:17 JigsawGUI\jigsawGUI.fig
文件 12497 2019-05-06 16:30 JigsawGUI\jigsawGUI.m
文件 541518 2019-05-06 01:20 JigsawGUI\jigsawImage.jpeg
文件 37297 2019-05-06 14:40 JigsawGUI\jigsaw_active.png
文件 37849 2019-05-06 13:29 JigsawGUI\Puzzle_icon.png
目录 0 2019-05-06 16:57 JigsawGUI
----------- --------- ---------- ----- ----
1058792 8
- 上一篇:利用vue写的后台管理系统开源代码
- 下一篇:Unity数据处理
相关资源
- iCloud源码.zip
- qq_30742865_9453697.e
- 0023、基于51单片机的数字频率计设计
- Jetbrains相关.rar
- 1088586红包拓客生意宝2.1.2.zip
- 药店管理系统数据库设计.zip
- LaJiGame.zip
- zw_iCloud源码.zip
- 黄河·粉丝宝v11.3.5全开源版.zip
- ic卡破解软件(全中文).rar
- 教程.zip
- 20170320152613115.rar
- 20160919095038971.rar
- 全自动查冻结分类.rar
- demo.zip
- mini-KMS_Activator_v1.3_Office2010_VL_ENG.exe
- 人人商城最新前端.zip
- ATkTool.rar
- Reflector.rar
- dll.edit.zip
- Microsoftvisio2017官方简体中文版含密钥
- 弹箭飞行控制.rar
- echarts大屏展示源码车联网大数据可视
- PPT模板,非常经典.rar
- UltraISO.exe
- sift.rar
- 世界地图.zip
- AdvancedRARPasswordRecoveryv1.53.48.12汉化版
- zw_altium_designer元件库大全.zip
- SPSS案例数据.rar
评论
共有 条评论