Matlab中生命游戏代码每一行的注释
从百科粘来的,看的不是很明白,请大家帮忙把每一行注释一下吧,多谢啦~m=30;n=30;p=.7;h=100;forx=1:mfory=1:nr=rand(1);ifr>...
从百科粘来的,看的不是很明白,请大家帮忙把每一行注释一下吧,多谢啦~
m=30;n=30;p=.7;h=100;
for x=1:m
for y=1:n
r=rand(1);
if r>p
a(x,y)=1;
else a(x,y)=0;
end
end
end
for x=1:m
for y=1:n
if a(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
for k=1:h
fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on
for x=2:m-1
for y=2:n-1
b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);
if b(x,y)==2,c(x,y)=a(x,y);
elseif b(x,y)==3,c(x,y)=1;
else c(x,y)=0;
end
end
end
c(1:m,1)=a(1:m,1);c(1:m,n)=a(1:m,n);
for x=1:m
for y=1:n
if c(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
pause(.05)
a=c;
end 展开
m=30;n=30;p=.7;h=100;
for x=1:m
for y=1:n
r=rand(1);
if r>p
a(x,y)=1;
else a(x,y)=0;
end
end
end
for x=1:m
for y=1:n
if a(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
for k=1:h
fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on
for x=2:m-1
for y=2:n-1
b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);
if b(x,y)==2,c(x,y)=a(x,y);
elseif b(x,y)==3,c(x,y)=1;
else c(x,y)=0;
end
end
end
c(1:m,1)=a(1:m,1);c(1:m,n)=a(1:m,n);
for x=1:m
for y=1:n
if c(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
pause(.05)
a=c;
end 展开
展开全部
clc
clear all
close all
m=30;n=30;p=.7;h=100;
%%
%生成30*30矩阵a,a的值根据随机数是否大于阈值0.7决定为1或0。
for x=1:m
for y=1:n
r=rand(1);%rand产生的是0到1(不包括1)的随机数。
if r>p
a(x,y)=1;
else a(x,y)=0;
end
end
end
%%
for x=1:m
for y=1:n
if a(x,y)==1
fx=[x-1,x-1,x,x];
fy=[y-1,y,y,y-1];
fill(fx,fy,'g');
%fill将点[x1,y1],[x2,y2],[x3,y3],[x4,y4]按序连线,后形成的图像进行填充,参数‘g’表示绿色。
%[x1,y1],[x2,y2],[x3,y3],[x4,y4]对应写成[x1 x2 x3 x4][y1 y2 y3 y4],hold on表示画在一幅图上。
hold on
else
end
end
end
%即如果a(1,1)值为1,就在图像上在(1,1)点左下方画一个单位为1绿色的正方形。
%这一块可以不要,因为画图后被黑底覆盖。
%%
for k=1:h %运行100次
fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on%画一个30*30黑底
for x=2:m-1
for y=2:n-1
b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);
%根据生命游戏规,取矩阵a元素(x,y)周围八个元素值的和,因为最外边一圈元素周围没有八个相邻元素,
%所以不考虑,x、y范围2:m-1、2:n-1。
if b(x,y)==2,c(x,y)=a(x,y);
%如果(x,y)周围存在2个1,即游戏意义2个活细胞,则这个细胞下一刻生死与原来生死有关。
elseif b(x,y)==3,c(x,y)=1;
%如果(x,y)周围存在3个1,即游戏意义2个活细胞,则这个细胞下一刻必存活(这里我假设1是存活)。
else c(x,y)=0;
%如果(x,y)周围存在活细胞不是这两个值,即太多或太少,则这个细胞下一刻必死亡(这里我假设0是死亡)。
end
end
end
%%
c(1:m,1)=a(1:m,1);
c(1:m,n)=a(1:m,n);%加上两侧的两列
c(1,1:n)=a(1,1:n);%此处我感觉还应该加上最上最下两行,原程序没有。否则缺少的部分值为零,显示一直为黑。
c(m,1:n)=a(m,1:n);%注意矩阵表示与画图等于进行了矩阵的转置,缺少矩阵上下两行则左右两侧显示为黑。
for x=1:m
for y=1:n
if c(x,y)==1
fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on
else
end
end
end
%画出c,同上画a
pause(.05)%暂停0.05秒,观察变化过程
a=c;%将c赋值给a,即将此时的c当作前一时刻a,继续循环画图
end
%这个过程就是先生成一个随机30*30矩阵a,对a矩阵中间29*29部分根据生命游戏规则进行运算并显示,循环100次。
%可以发现最外边一圈图形是不变的。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询