LifeGame

生命游戏 by chatgbt

Posted by JBNRZ on 2022-12-27
Estimated Reading Time 1 Minutes
Words 302 In Total
Viewed Times

Life Game

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np
import matplotlib.animation
import matplotlib.pyplot as plt


def game_of_life(Z):
# 计算周围8格的和
N = (Z[0:-2, 0:-2] + Z[0:-2, 1:-1] + Z[0:-2, 2:] +
Z[1:-1, 0:-2] + Z[1:-1, 2:] +
Z[2:, 0:-2] + Z[2:, 1:-1] + Z[2:, 2:])

# 规则 1 或规则 3
birth = (N == 3) & (Z[1:-1, 1:-1] == 0)
survive = ((N == 2) | (N == 3)) & (Z[1:-1, 1:-1] == 1)

# 生成新的数组并返回
Z[...] = 0
Z[1:-1, 1:-1][birth | survive] = 1

return Z


# 定义一些初始化的数据集合
rabbits = np.array([[0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 1., 1., 1., 1., 1., 0.],
[0., 1., 1., 1., 1., 1., 1., 0.],
[0., 0., 0., 0., 0., 0., 0., 0.]])

glider = np.array([[0, 0, 0],
[0, 0, 255],
[255, 255, 255]]) / 255


def plot_game(Z):
plt.imshow(Z, cmap=plt.cm.gray_r, interpolation='nearest')
plt.xticks([]), plt.yticks([]) # 隐藏坐标轴


# 定义一个函数,用于更新生命游戏的图像
def update_game(frame_number, img, Z):
newZ = game_of_life(Z)
img.set_data(newZ)

return img,


np.random.seed(0) # 设置随机数种子,以便复现相同的随机数序列。
Z = np.random.randint(0, 2, size=(100, 100)) # 生成一个100*100的随机整形数组。

fig1 = plt.figure() # 创建一个图形对象。

img = plt.imshow(Z, cmap=plt.cm.gray_r, interpolation='nearest')

anim = matplotlib.animation.FuncAnimation(
fig1, update_game, fargs=(
img, Z), frames=10, interval=200)

plt.show()

如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !