声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5203|回复: 16

[共享资源] matlab编写的小游戏,可以实现拼图的功能

[复制链接]
发表于 2006-6-29 18:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x

  1. close all;clc;clear;
  2. ss='cameraman';
  3. L=128;
  4. % Author's email: zjliu2001@163.com
  5. figure('Position',[55 198 903 349]);
  6. aa=axes('position',[0.15,0.06,0.3,0.8]);
  7. Im=imread([ss,'.tif']);
  8. N=256/L; p=1:L;
  9. Imt=Im';
  10. hoi=imshow(Im,[]);
  11. k=1;T=0;
  12. backcall=['if T==0;',...
  13.         'ka=get(gcbo,''UserData'');',...
  14.         'Q=get(ph(ka(1)),''cdata'');',...
  15.         'set(ph(ka(1)),''cdata'',[]);',...
  16.         'set(hpu,''cdata'',Q);',...
  17.         'else;',...
  18.         'kb=get(gcbo,''UserData'');',...
  19.         'QQ=get(ph(kb(1)),''cdata'');',...
  20.         'set(ph(kb(1)),''cdata'',Q);',....
  21.         'set(ph(ka(1)),''cdata'',QQ);',...               
  22.         'set(hpu,''cdata'',[]);',...
  23.         'set(ph(kb(1)),''UserData'',[kb(1),ka(2)]);',...
  24.         'set(ph(ka(1)),''UserData'',[ka(1),kb(2)]);',...               
  25.         'qa=find(ord==ka(2));qb=find(ord==kb(2));',...
  26.         'ord(qa)=kb(2);ord(qb)=ka(2);end;',...
  27.         'if min(diff(ord))==1;',...
  28.         'msgbox(''Congratulation!'');',...
  29.         'end;T=~T;'];
  30. ord=randperm(N*N);
  31. ph=zeros(N);

  32. for k=1:(N*N);
  33.     [x,y]=ind2sub([N,N],k);
  34.     ph(x,y)=uicontrol(gcf,'style','pushbutton',...
  35.             'unit','normalized','position',[0.47+0.3/N*(x-1),...
  36.             0.85-0.78/N*y,0.3/N,0.78/N],'UserData',[k,ord(k)],...
  37.             'callback',backcall);            
  38.         [xg,yg]=ind2sub([N,N],ord(k));
  39.         sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)',[1,1,3]);
  40.         set(ph(k),'cdata',sr);
  41. end
  42. hpu=uicontrol(gcf,'style','push',...
  43.     'unit','normalized','position',[0.82,0.5,0.3/N,0.78/N],...
  44.     'BackgroundColor',[0.8,0.8,0.8],...
  45.     'ForegroundColor','b','fontsize',12,...
  46.         'string','preview chart');
  47. ht1=uicontrol(gcf,'style','text',...
  48.     'unit','normalized','position',[0.02,0.7,0.1,0.1],...
  49.     'BackgroundColor',[0.8,0.8,0.8],...
  50.     'ForegroundColor','b','fontsize',12,...
  51.         'string','chose a pic');
  52. Sc={'cameraman','rice','ic','testpat1'};
  53. hp=uicontrol(gcf,'style','popupmenu',...
  54.     'unit','normalized','position',[0.02,0.6,0.1,0.1],...
  55.     'string','cameraman|rice|ic|testpat1|lena','callback',...
  56.     ['ss=char(Sc(get(hp,''value'')));',...
  57.         'Im=imread([ss,''.tif'']);Imt=Im'';',...
  58.         'set(hoi,''cdata'',Im);k=1;',...
  59.         'ord=randperm(N*N);[xx,yy]=ind2sub([N,N],ord);',...
  60.         'for k=1:N*N;',...
  61.         '[x,y]=ind2sub([N,N],k);',...
  62.         '[xg,yg]=ind2sub([N,N],ord(k));',...
  63.         'sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)'',[1,1,3]);',...
  64.         'set(ph(k),''cdata'',sr);end;']);
  65. ht2=uicontrol(gcf,'style','text',...
  66.     'unit','normalized','position',[0.01,0.5,0.12,0.1],...
  67.     'BackgroundColor',[0.8,0.8,0.8],...
  68.     'ForegroundColor','b','fontsize',12,...
  69.         'string','size of the pic');
  70. Si=[128,64,32,16];
  71. aax=axes('position',[0.78,0.05,0.22,0.4]);
  72. text(0.02,0.8,'\copyright zjliu',...
  73.     'fontsize',14);axis off;
  74. text(0.02,0.6,'email:','fontsize',14);
  75. text(0.02,0.4,'zjliu@hit.edu.cn','fontsize',14);
  76. text(0.02,0.2,'zjliu2001@2001.com','fontsize',14);
  77. hs=uicontrol(gcf,'style','popupmenu',...
  78.     'unit','normalized','position',[0.02,0.4,0.1,0.1],...
  79.     'string','128x128|64x64|32x32|16x16','callback',...
  80.     ['L=Si(get(hs,''value''));N=256/L;p=1:L;',...
  81.         'ss=char(Sc(get(hp,''value'')));',...
  82.         'Im=imread([ss,''.tif'']);Imt=Im'';',...
  83.         'set(hoi,''cdata'',Im);',...
  84.         'clf([aa,hs,hp,ht1,ht2,aax]);',...
  85.         'ord=randperm(N*N);T=0;ph=zeros(N);',...
  86.         'for k=1:(N*N);',...
  87.         '[x,y]=ind2sub([N,N],k);',...
  88.         'ph(x,y)=uicontrol(gcf,''style'',''pushbutton'',',...
  89.         '''unit'',''normalized'',''position'',[0.47+0.3/N*(x-1),',...
  90.         '0.85-0.78/N*y,0.3/N,0.78/N],''UserData'',[k,ord(k)],',...
  91.         '''callback'',backcall);',...
  92.         '[xg,yg]=ind2sub([N,N],ord(k));',...
  93.         'sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)'',[1,1,3]);',...
  94.         'set(ph(k),''cdata'',sr);end;',...
  95.         'hpu=uicontrol(gcf,''style'',''push'',',...
  96.         '''unit'',''normalized'',''position'',[0.82,0.5,0.3/N,0.78/N],',...
  97.         '''BackgroundColor'',[0.8,0.8,0.8],',...
  98.         '''ForegroundColor'',''b'',''fontsize'',12,',...
  99.         '''string'',{''preview'';''chart''});']);   
复制代码

[ 本帖最后由 suffer 于 2006-10-26 18:03 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-7-6 17:15 | 显示全部楼层
请问这个例程是干什么的?我看不懂
 楼主| 发表于 2006-7-7 09:51 | 显示全部楼层
这是一个用matlab编写的小游戏,可以实现拼图的功能,在matlab环境下运行一下子就知道了!
发表于 2006-8-6 17:36 | 显示全部楼层
运行 不了啊
总是出现:

??? 58amRadF
      |
Error: Missing MATLAB operator.
发表于 2006-8-25 17:16 | 显示全部楼层
建议以后要把题目写的详细点
发表于 2006-10-24 20:31 | 显示全部楼层

你好

你太牛奔了
发表于 2006-10-25 17:17 | 显示全部楼层
要达到这个编程能力,多难呀,实在看不懂
发表于 2006-10-26 18:03 | 显示全部楼层
原帖由 远帆 于 2006-8-6 17:36 发表
运行 不了啊
总是出现:

??? 58amRadF
      |
Error: Missing MATLAB operator.


不知道你这里的58amRadF是从那里出来的?
发表于 2006-10-28 09:50 | 显示全部楼层
不错,挺好玩儿的,楼主太聪明了
发表于 2006-10-31 16:32 | 显示全部楼层
真牛!拼成后有错呢?
发表于 2006-11-4 19:22 | 显示全部楼层
呵呵,记得有本书上讲过的来
发表于 2006-11-9 16:59 | 显示全部楼层
我能够正常运行,就是不知道那张图是怎么输入进去的
发表于 2006-11-10 17:28 | 显示全部楼层
不错,运行后挺好玩的,没想到MATLAB还有这功能
发表于 2006-11-11 10:58 | 显示全部楼层
原帖由 jt1937 于 2006-11-9 16:59 发表
我能够正常运行,就是不知道那张图是怎么输入进去的


  1. ss='cameraman';
  2. Im=imread([ss,'.tif']);
复制代码

上面这一部分代码就是读入图片文件
发表于 2006-11-29 14:11 | 显示全部楼层
好,很好
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 16:44 , Processed in 0.065995 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表