问题描述
我想在 Matlab 中构建生命游戏,但我在开始时遇到了一些问题。规则如下:
- 少于 2 个邻居的细胞死亡
- 有 2 或 3 个邻居的细胞会延续到下一代
- 有超过 3 个邻居的细胞死亡
- 在一个有 3 个邻居的空地,一个细胞诞生于下一代 细胞只在模拟世界中出生和死亡,而不是在模拟世界之外
我在创建游戏循环时遇到了一些问题。
这是我当前的代码:
clc
clear all
close all
L=10;
fill([1 L+1 L+1 1],[1 1 L+1 L+1],'w')
for k=1:L+1
plot([1 L+1],[k k],'k')
plot([k k],[1 L+1],'K')
axis equal; axis([1 L+1 1 L+1])
hold on
end
F=zeros(L,L);
c=1;
while 1
[m,n,d]=ginput(1);
m=floor(m); n=floor(n);
if d==1
F(m,n)=1;
fill([m m+1 m+1 m],[n n n+1 n+1],'b')
if m<0 || m>L || n<0 || n>L
break
end
else
break
end
cv(:,c)=[m,n];
c=c+1;
end
save 'popy.mat'
---------------------------------------------------
clc
clear all
close all
a= load('popy.mat');
F= a.F;
L= a.L;
k= a.k;
c= a.c;
iteracoes=1;
%%
for k=1:L+1
plot([1 L+1],'k')
axis equal; axis([1 L+1 1 L+1])
hold on
end
posicao = find(F);
for i = 1:length(posicao)
m=mod(posicao(i),L);
n=(posicao(i)-m)/L +1;
fill([m m+1 m+1 m],'b')
end
for j=1:iteracoes
for u = 1:length(posicao)
m=mod(posicao(u),L);
n=(posicao(u)-m)/L +1;
if F(m,n)==1
if n-1>0 && n+1<L && m-1>0 && m+1<L
soma = F(m-1,n-1)+F(m,n-1)+F(m+1,n)+F(m+1,n+1)+F(m,n+1)+F(m-1,n);
elseif n-1<=0 && n+1<L && m-1>0 && m+1<L
soma = F(m-1,n+L-1)+F(m,n+L-1)+F(m+1,n);
elseif n+1>=L && n-1>0 && m-1>0 && m+1<L
soma = F(m-1,n-L+1)+F(m,n-L+1)+F(m-1,n);
elseif n-1>0 && n+1<L && m+1<L && m-1<=0
soma = F(m+L-1,n+1)+F(m+L-1,n);
elseif n-1>0 && n+1<L && m-1>0 && m+1>=L
soma = F(m-1,n-1)+F(m-L+1,n)+F(m-L+1,n);
elseif n-1<=0 && n+1<L && m-1<=0 && m+1<L
soma = F(m+L-1,n);
elseif n-1<=0 && n+1<L && m-1>0 && m+1>=L
soma = F(m-1,n+L-1)+F(m-L+1,n);
elseif n-1>0 && n+1>=L && m-1<=0 && m+1<L
soma = F(m+L-1,n-L+1)+F(m+L-1,n);
elseif n-1>0 && n+1>=L && m-1>0 && m+1>=L
soma = F(m-1,n);
end
if soma < 2 || soma >3
F(m,n)= 0;
end
if F(m,n)== 0
if n-1>0 && n+1<L && m-1>0 && m+1<L
soma = F(m-1,n);
end
if soma == 3
F(m,n) = 1;
end
end
end
posicao2 = find(F);
for q = 1:length(posicao2)
m=mod(posicao2(q),L);
n=(posicao2(q)-m)/L +1;
fill([m m+1 m+1 m],'b')
end
end
end
当我复制带有我单击的方块的图形时出现问题。右栏消失了..
如果有人能帮我怎么做,非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)