生命游戏(python版)

作者为编程萌新,如有不正之处,恳请大家多多指教!

同样的,先介绍一下生命游戏:

游戏开始时,每个细胞随机地设定为“生”或“死”之一的某个状态。然后,根据某种规则,计算出下一代每个细胞的状态,画出下一代细胞的生死分布图。

应该规定什么样的迭代规则呢?需要一个简单的,但又反映生命之间既协同又竞争的生存定律。为简单起见,最基本的考虑是假设每一个细胞都遵循完全一样的生存定律;再进一步,把细胞之间的相互影响只限制在最靠近该细胞的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的可以参考这篇文章。

你可能感兴趣的:(生命游戏(python版))