请编写一个关于生命游戏的代码
时间: 2023-12-04 14:04:29 浏览: 84
生命游戏是一种细胞自动机,由英国数学家约翰·何顿·康威在1970年发明。它是一个零玩家游戏,意味着其演化完全取决于初始状态,无需人类干预。下面是一个简单的 Python 实现:
```python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 初始化游戏区域
N = 100 # 每行/列的细胞数
grid = np.zeros((N, N), dtype=int)
# 随机生成初始状态
grid[:, :] = np.random.choice([0, 1], size=(N, N), p=[0.8, 0.2])
# 定义生命游戏规则
def update(frameNum, img, grid, N):
newGrid = grid.copy()
for i in range(N):
for j in range(N):
# 计算周围八个细胞的状态
neighbors = [(i-1, j-1), (i-1, j), (i-1, j+1),
(i, j-1), (i, j+1),
(i+1, j-1), (i+1, j), (i+1, j+1)]
count = 0
for neighbor in neighbors:
if grid[neighbor[0] % N, neighbor[1] % N] == 1:
count += 1
# 根据生命游戏规则更新细胞状态
if grid[i, j] == 1:
if count < 2 or count > 3:
newGrid[i, j] = 0
elif count == 3:
newGrid[i, j] = 1
# 更新游戏区域并返回图片
grid[:] = newGrid[:]
img.set_data(grid)
return img,
# 创建动画
fig, ax = plt.subplots()
img = ax.imshow(grid, interpolation='nearest', cmap='gray')
ani = animation.FuncAnimation(fig, update, fargs=(img, grid, N), interval=50)
plt.show()
```
运行代码后,会随机生成一个初始状态的细胞区域,并按照生命游戏规则演化。每个细胞的状态只有两种:死(0)或活(1)。程序通过计算每个细胞周围八个细胞的状态,来更新当前细胞的状态。具体地,如果一个细胞周围活着的细胞数少于2个或多于3个,它就会死亡;如果一个细胞周围恰好有3个活着的细胞,它就会复活。程序使用 Matplotlib 库创建了一个动画,展示了生命游戏的演化过程。
阅读全文