数学建模社区-数学中国

标题: 元胞自动机——生命游戏 [打印本页]

作者: 森之张卫东    时间: 2015-8-17 19:34
标题: 元胞自动机——生命游戏
  1. <p>%元胞自动机——生命游戏
  2. %时间:2015-8-17-一
  3. %作者:张卫东
  4. clc
  5. clear
  6. close all
  7. %=================================
  8. %先建立GUI
  9. %定义:开始按钮
  10. plotbutton=uicontrol('style','Pushbutton',...
  11.                                 'string','Run',...
  12.                                  'fontsize',12,...
  13.                                  'position',[100,395,70,25],...
  14.                                  'callback','run=1;');
  15. %定义:停止按钮
  16. erasebutton=uicontrol('style','Pushbutton',...
  17.                                 'string','Stop',...
  18.                                  'fontsize',12,...
  19.                                  'position',[200,395,70,25],...
  20.                                  'callback','freeze=1;');
  21. %定义:退出按钮
  22. quitbutton=uicontrol('style','Pushbutton',...
  23.                                 'string','Quit',...
  24.                                  'fontsize',12,...
  25.                                  'position',[300,395,70,25],...
  26.                                  'callback','stop=1;close;');
  27. %定义:进化步数
  28. number=uicontrol('style','text',...
  29.                             'string','1',...
  30.                             'fontsize',12,...
  31.                             'position',[20,200,70,20]) ;
  32. %=================================</p><p>%CA开始
  33. n=128;
  34. %初始化向量
  35. z=zeros(n,n);
  36. cells=z;
  37. sum=z;
  38. %设置少量元素为一;
  39. %cells(n/2,0.25*n:0.75*n)=1;
  40. %cells(0.25*n:0.75*n,n/2)=1;
  41. %cells(0.5*n-1,0.5*n-1)=1;
  42. %cells(0.5*n-2,0.5*n-2)=1;
  43. %cells(0.5*n-3,0.5*n-3)=1;
  44. cells=(rand(n,n))<0.5;</p><p>%建立一个图片,并画出它!
  45. imh=image( cat(3,cells,z,z) );
  46. set( imh,'erasemode','none' )
  47. axis equal
  48. axis tight

  49. %index defination for cell updata
  50. x=2:n-1;
  51. y=2:n-1;</p><p>%Main event loop
  52. stop=0;   %wait for a quit button push
  53. run=0;    %wait for a draw
  54. freeze=0;   %wait for a freeze</p><p>while stop==0
  55.     if run==1
  56.         sum(x,y)=cells(x,y-1)+cells(x,y+1)+...
  57.                       cells(x-1,y)+cells(x+1,y)+...
  58.                       cells(x-1,y-1)+cells(x-1,y+1)+...
  59.                       cells(x+1,y-1)+cells(x+1,y+1);
  60.         %The CA rule
  61.         cells=(sum==3)|(sum==2&cells);
  62.         %draw the new imag
  63.         set( imh,'cdata',cat(3,cells,z,z) )
  64.         %updata the step number diaplay
  65.         stepnumber=1+str2double( get(number,'string') );
  66.         set( number,'string',num2str( stepnumber ) )
  67.     end
  68.    
  69.     if freeze==1
  70.         run=0;
  71.         freeze=0;
  72.     end
  73.     drawnow  %need this in the loop for cintrol to work
  74.     %pause(0.5)
  75. end
  76. </p><p><p>                             
  77.                              
  78.                              
  79.                              
  80.                              
  81.                              
  82.                             </p>
复制代码

开始.PNG (22.31 KB, 下载次数: 223)

开始.PNG

中间结果.PNG (19.3 KB, 下载次数: 226)

中间结果.PNG

最终结果.PNG (12.33 KB, 下载次数: 210)

最终结果.PNG






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5