作者为编程萌新,如有不正之处,恳请大家多多指教!
同样的,先介绍一下生命游戏:
游戏开始时,每个细胞随机地设定为“生”或“死”之一的某个状态。然后,根据某种规则,计算出下一代每个细胞的状态,画出下一代细胞的生死分布图。
应该规定什么样的迭代规则呢?需要一个简单的,但又反映生命之间既协同又竞争的生存定律。为简单起见,最基本的考虑是假设每一个细胞都遵循完全一样的生存定律;再进一步,把细胞之间的相互影响只限制在最靠近该细胞的8个邻居中。
也就是说,每个细胞迭代后的状态由该细胞及周围8个细胞状态所决定。作了这些限制后,仍然还有很多方法来规定“生存定律”的具体细节。例如,在康威的生命游戏中,规定了如下生存定律。
(1)当前细胞为死亡状态时,当周围有3个存活细胞时,则迭代后该细胞变成存活状态(模拟繁殖);若原先为生,则保持不变。
(2)当前细胞为存活状态时,当周围的邻居细胞低于两个(不包含两个)存活时,该细胞变成死亡状态(模拟生命数量稀少)。
(3)当前细胞为存活状态时,当周围有两个或3个存活细胞时,该细胞保持原样。
(4)当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态(模拟生命数量过多)。
可以把最初的细胞结构定义为种子,当所有种子细胞按以上规则处理后,可以得到第1代细胞图。按规则继续处理当前的细胞图,可以得到下一代的细胞图,周而复始。
——————百度百科
代码的原理我已经在另一篇文章说了,直接上代码:
goboard=[[i for j in range(19)]for i in range(19)] #定义棋盘
for a in range(19): #初始化
for b in range(19):
goboard[a][b]=0
print("please put in some number to initialize the goboard")
goboard[6][6]=1 #赋初值样例(滑翔机)暂未实现人机交互
goboard[6][7]=1
goboard[6][8]=1
goboard[4][7]=1
goboard[5][8]=1
pass
for a in range(19): #打印初始棋盘
for b in range(19):
print(goboard[a][b],end="")
print("")
goboard2=[[m for n in range(19)]for m in range(19)] #设置一变量棋盘
for a in range(19): #初始化2
for b in range(19):
goboard2[a][b]=0
for x in range(10): #自定义循环次数
for a in range(1,17,1):
for b in range(1,17,1):
c=goboard[a+1][b]
d=goboard[a-1][b]
e=goboard[a][b+1]
f=goboard[a][b-1]
g=goboard[a+1][b+1]
h=goboard[a+1][b-1]
k=goboard[a-1][b+1]
l=goboard[a-1][b-1]
if (c+d+e+f+g+h+k+l)==3:
goboard2[a][b]=1
elif (c+d+e+f+g+h+k+l)==2:
goboard2[a][b]=goboard[a][b]
else:
goboard2[a][b]=0
y=(input())
for a in range(19): #打印棋盘
for b in range(19):
print(goboard2[a][b],end="")
print("")
for a in range(19): #棋盘转换
for b in range(19):
goboard[a][b]=goboard2[a][b]
如果两种语言都会的可以对比一下,完全一模一样。只会python的可以参考这篇文章。