meliguo 发表于 2006-6-29 18:14

matlab编写的小游戏,可以实现拼图的功能


close all;clc;clear;
ss='cameraman';
L=128;
% Author's email: zjliu2001@163.com
figure('Position',);
aa=axes('position',);
Im=imread();
N=256/L; p=1:L;
Imt=Im';
hoi=imshow(Im,[]);
k=1;T=0;
backcall=['if T==0;',...
      'ka=get(gcbo,''UserData'');',...
      'Q=get(ph(ka(1)),''cdata'');',...
      'set(ph(ka(1)),''cdata'',[]);',...
      'set(hpu,''cdata'',Q);',...
      'else;',...
      'kb=get(gcbo,''UserData'');',...
      'QQ=get(ph(kb(1)),''cdata'');',...
      'set(ph(kb(1)),''cdata'',Q);',....
      'set(ph(ka(1)),''cdata'',QQ);',...               
      'set(hpu,''cdata'',[]);',...
      'set(ph(kb(1)),''UserData'',);',...
      'set(ph(ka(1)),''UserData'',);',...               
      'qa=find(ord==ka(2));qb=find(ord==kb(2));',...
      'ord(qa)=kb(2);ord(qb)=ka(2);end;',...
      'if min(diff(ord))==1;',...
      'msgbox(''Congratulation!'');',...
      'end;T=~T;'];
ord=randperm(N*N);
ph=zeros(N);

for k=1:(N*N);
    =ind2sub(,k);
    ph(x,y)=uicontrol(gcf,'style','pushbutton',...
            'unit','normalized','position',[0.47+0.3/N*(x-1),...
            0.85-0.78/N*y,0.3/N,0.78/N],'UserData',,...
            'callback',backcall);            
      =ind2sub(,ord(k));
      sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)',);
      set(ph(k),'cdata',sr);
end
hpu=uicontrol(gcf,'style','push',...
    'unit','normalized','position',,...
    'BackgroundColor',,...
    'ForegroundColor','b','fontsize',12,...
      'string','preview chart');
ht1=uicontrol(gcf,'style','text',...
    'unit','normalized','position',,...
    'BackgroundColor',,...
    'ForegroundColor','b','fontsize',12,...
      'string','chose a pic');
Sc={'cameraman','rice','ic','testpat1'};
hp=uicontrol(gcf,'style','popupmenu',...
    'unit','normalized','position',,...
    'string','cameraman|rice|ic|testpat1|lena','callback',...
    ['ss=char(Sc(get(hp,''value'')));',...
      'Im=imread();Imt=Im'';',...
      'set(hoi,''cdata'',Im);k=1;',...
      'ord=randperm(N*N);=ind2sub(,ord);',...
      'for k=1:N*N;',...
      '=ind2sub(,k);',...
      '=ind2sub(,ord(k));',...
      'sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)'',);',...
      'set(ph(k),''cdata'',sr);end;']);
ht2=uicontrol(gcf,'style','text',...
    'unit','normalized','position',,...
    'BackgroundColor',,...
    'ForegroundColor','b','fontsize',12,...
      'string','size of the pic');
Si=;
aax=axes('position',);
text(0.02,0.8,'\copyright zjliu',...
    'fontsize',14);axis off;
text(0.02,0.6,'email:','fontsize',14);
text(0.02,0.4,'zjliu@hit.edu.cn','fontsize',14);
text(0.02,0.2,'zjliu2001@2001.com','fontsize',14);
hs=uicontrol(gcf,'style','popupmenu',...
    'unit','normalized','position',,...
    'string','128x128|64x64|32x32|16x16','callback',...
    ['L=Si(get(hs,''value''));N=256/L;p=1:L;',...
      'ss=char(Sc(get(hp,''value'')));',...
      'Im=imread();Imt=Im'';',...
      'set(hoi,''cdata'',Im);',...
      'clf();',...
      'ord=randperm(N*N);T=0;ph=zeros(N);',...
      'for k=1:(N*N);',...
      '=ind2sub(,k);',...
      'ph(x,y)=uicontrol(gcf,''style'',''pushbutton'',',...
      '''unit'',''normalized'',''position'',[0.47+0.3/N*(x-1),',...
      '0.85-0.78/N*y,0.3/N,0.78/N],''UserData'',,',...
      '''callback'',backcall);',...
      '=ind2sub(,ord(k));',...
      'sr=repmat(Imt((xg-1)*L+p,(yg-1)*L+p)'',);',...
      'set(ph(k),''cdata'',sr);end;',...
      'hpu=uicontrol(gcf,''style'',''push'',',...
      '''unit'',''normalized'',''position'',,',...
      '''BackgroundColor'',,',...
      '''ForegroundColor'',''b'',''fontsize'',12,',...
      '''string'',{''preview'';''chart''});']);   


[ 本帖最后由 suffer 于 2006-10-26 18:03 编辑 ]

克拉拉 发表于 2006-7-6 17:15

请问这个例程是干什么的?我看不懂

meliguo 发表于 2006-7-7 09:51

这是一个用matlab编写的小游戏,可以实现拼图的功能,在matlab环境下运行一下子就知道了!

远帆 发表于 2006-8-6 17:36

运行 不了啊
总是出现:

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

xincunf2 发表于 2006-8-25 17:16

建议以后要把题目写的详细点

pengjing 发表于 2006-10-24 20:31

你好

你太牛奔了

lzq8281 发表于 2006-10-25 17:17

要达到这个编程能力,多难呀,实在看不懂

suffer 发表于 2006-10-26 18:03

原帖由 远帆 于 2006-8-6 17:36 发表
运行 不了啊
总是出现:

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

不知道你这里的58amRadF是从那里出来的?

fenghai222 发表于 2006-10-28 09:50

不错,挺好玩儿的,楼主太聪明了

norika1314 发表于 2006-10-31 16:32

真牛!拼成后有错呢?

shilw 发表于 2006-11-4 19:22

呵呵,记得有本书上讲过的来

jt1937 发表于 2006-11-9 16:59

我能够正常运行,就是不知道那张图是怎么输入进去的

liwensheng 发表于 2006-11-10 17:28

不错,运行后挺好玩的,没想到MATLAB还有这功能

suffer 发表于 2006-11-11 10:58

原帖由 jt1937 于 2006-11-9 16:59 发表
我能够正常运行,就是不知道那张图是怎么输入进去的


ss='cameraman';
Im=imread();
上面这一部分代码就是读入图片文件

jiangpq88 发表于 2006-11-29 14:11

好,很好
页: [1] 2
查看完整版本: matlab编写的小游戏,可以实现拼图的功能