Open 213cy opened 8 years ago
function pat=patterngen(n)
%图案生成函数
if nargin==0
n=10;
end
figure;
colormap([1 1 1;0 0 0])
pat=zeros(n);
ph=pcolor([pat,ones(n,1);ones(1,n+1)]);
axis ij
axis square
while true
try
[a,b]=ginput(1);
catch
break
end
x=floor(a);
y=floor(b);
pat(y,x)=~pat(y,x);
set(ph,'cdata',[pat,ones(n,1);ones(1,n+1)])
drawnow;
end
function mylifegame(p1,p2)
%生命演化过程
%调用例子:
% mylifegame
% mylifegame(rand(10)>0.6)
% mylifegame(35,69)
m = 101;
X = zeros(m);
flag = false;
if nargin==0
p = -1:1;
for count=1:15,
kx=floor(rand*(m-4))+2; ky=floor(rand*(m-4))+2;
X(kx+p,ky+p)=(rand(3)>0.5);
end
elseif nargin==2
X(50,50)=1;
flag=true;
else
[a,b]=size(p1);
x=floor((m-a)/2);
y=floor((m-b)/2);
X(x:x+a-1,y:y+b-1)=p1==1;
end
figHnd=figure(gcf);
[i,j] = find(X);
plothandle = plot(j,i,'s', ...
'MarkerFaceColor','g', ...
'MarkerSize',350/m);
axis equal
axis([0 m+1 0 m+1]);
axis ij
%
fmat=ones(3);
fmat(2,2)=0;
while ishandle(figHnd)
eX=[X(m,m),X(m,:),X(m,1);...
X(:,m),X,X(:,1);...
X(1,m),X(1,:),X(1,1)];
N=conv2(double(eX),fmat,'valid');
X = (X & (N == 2)) | (N == 3);
if flag %永恒的生命
X([p1 p2],p1:p2)=1;
X(p1:p2,[p1 p2])=1;
end
[i,j] = find(X);
set(plothandle,'xdata',j,'ydata',i)
drawnow
pause(0.05)
end
%%%%%%