live=[0 0 1 0 0 0 0 0 0];
born=[0 0 0 1 0 0 0 0 0];
plotbutton=uicontrol('style','pushbutton','string','Run','fontsize',12,...
'position',[100,10,50,20],'callback','run=1;');
erasebutton=uicontrol('style','pushbutton','string','Stop','fontsize',12,...
'position',[200,10,50,20],'callback','freeze=1;');
quitbutton=uicontrol('style','pushbutton','string','Quit','fontsize',12,...
'position',[300,10,50,20],'callback','stop=1;close;');
number=uicontrol('style','text','string','1','fontsize',12,...
'position',[20,10,50,20]);
box1=uicontrol('style','checkbox','string','0','fontsize',12,...
'position',[20,350,35,35],'callback','live(1)=~live(1)');
box2=uicontrol('style','checkbox','string','1','fontsize',12,...
'position',[20,320,35,35],'callback','live(2)=~live(2)');
box3=uicontrol('style','checkbox','string','2','fontsize',12,...
'position',[20,290,35,35],'callback','live(3)=~live(3)','value',1);
box4=uicontrol('style','checkbox','string','3','fontsize',12,...
'position',[20,260,35,35],'callback','live(4)=~live(4)');
box5=uicontrol('style','checkbox','string','4','fontsize',12,...
'position',[20,230,35,35],'callback','live(5)=~live(5)');
box6=uicontrol('style','checkbox','string','5','fontsize',12,...
'position',[20,200,35,35],'callback','live(6)=~live(6)');
box7=uicontrol('style','checkbox','string','6','fontsize',12,...
'position',[20,170,35,35],'callback','live(7)=~live(7)');
box8=uicontrol('style','checkbox','string','7','fontsize',12,...
'position',[20,140,35,35],'callback','live(8)=~live(8)');
box9=uicontrol('style','checkbox','string','8','fontsize',12,...
'position',[20,110,35,35],'callback','live(9)=~live(9)');
box10=uicontrol('style','checkbox','string','0','fontsize',12,...
'position',[60,350,35,35],'callback','born(1)=~born(1)');
bo11=uicontrol('style','checkbox','string','1','fontsize',12,...
'position',[60,320,35,35],'callback','born(2)=~born(2)');
box12=uicontrol('style','checkbox','string','2','fontsize',12,...
'position',[60,290,35,35],'callback','born(3)=~born(3)');
box13=uicontrol('style','checkbox','string','3','fontsize',12,...
'position',[60,260,35,35],'callback','born(4)=~born(4)','value',1);
box14=uicontrol('style','checkbox','string','4','fontsize',12,...
'position',[60,230,35,35],'callback','born(5)=~born(5)');
box15=uicontrol('style','checkbox','string','5','fontsize',12,...
'position',[60,200,35,35],'callback','born(6)=~born(6)');
box16=uicontrol('style','checkbox','string','6','fontsize',12,...
'position',[60,170,35,35],'callback','born(7)=~born(7)');
box17=uicontrol('style','checkbox','string','7','fontsize',12,...
'position',[60,140,35,35],'callback','born(8)=~born(8)');
box18=uicontrol('style','checkbox','string','8','fontsize',12,...
'position',[60,110,35,35],'callback','born(9)=~born(9)');
text1=uicontrol('style','text','string','live','fontsize',12,...
'position',[20,380,50,20]);
text2=uicontrol('style','text','string','born','fontsize',12,...
'position',[60,380,50,20]);
n=800;
z=ones(n,n);
cells=z;
sum=z-2;
for i=1:size(xall)
cells(xall(i),yall(i))=0;%0就是元胞为亮
end
cells=rot90(cells);
% cells(n/2,.25*n:.75*n)=1;
% cells(.25*n:.75*n,n/2)=1;
% cells=(rand(n,n))<.5;
set(gca, 'YDir', 'normal');
imh=image(cat(3,cells,cells,z));
%set(imh,'erasemode','normal')
%addpoints(h,x(k),y(k))
axis equal
axis tight
axis off
x=2:n-1;
y=2:n-1;
stop=0;
run=0;
freeze=0;
while(stop==0)
if(run==1)
sum(x,y)=8-(cells(x,y-1)+cells(x,y+1)+cells(x-1,y)+cells(x+1,y)+cells(x-1,y-1)+cells(x-1,y+1)+cells(x+1,y-1)+cells(x+1,y+1));
cells=1-cells;
cells=(sum==0&born(1))|(sum==1&born(2))|(sum==2&born(3))|(sum==3&born(4))|(sum==4&born(5))|(sum==5&born(6))|...
(sum==6&born(7))|(sum==7&born(8))|(sum==8&born(9))|(sum==0&live(1)&cells)|(sum==1&live(2)&cells)...
|(sum==2&live(3)&cells)|(sum==3&live(4)&cells)|(sum==4&live(5)&cells)|(sum==5&live(6)&cells)...
|(sum==6&live(7)&cells)|(sum==7&live(8)&cells)|(sum==8&live(9)&cells);
cells=1-cells;
set(imh,'cdata',cat(3,cells,cells,z))
stepnumber=1+str2num(get(number,'string'));
set(number,'string',num2str(stepnumber))
end
if(freeze==1)
run=0;
freeze=0;
end
drawnow
% pause(0.01)
end
评论0