提示信息

实践探索:使用 Python 实现 Conway 生命游戏

十二岁月 已关注

Conway's 生命游戏是由数学家 John Horton Conway 发明的细胞自动机。这个游戏是一个零人参与的游戏,通过简单的规则来模拟细胞的繁殖和死亡。以下是使用 Python 实现生命游戏的一个简单示例:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib.animation as animation
  4. def update(frameNum, img, grid, N):
  5. # 创建一个新的网格来存储下一代状态
  6. newGrid = grid.copy()
  7. for i in range(N):
  8. for j in range(N):
  9. # 计算周围存活的细胞数量
  10. total = int((grid[i, (j-1)%N] + grid[i, (j+1)%N] +
  11. grid[(i-1)%N, j] + grid[(i+1)%N, j] +
  12. grid[(i-1)%N, (j-1)%N] + grid[(i-1)%N, (j+1)%N] +
  13. grid[(i+1)%N, (j-1)%N] + grid[(i+1)%N, (j+1)%N]) / 255)
  14. # 生命规则
  15. if grid[i, j] == ON:
  16. if (total < 2) or (total > 3):
  17. newGrid[i, j] = OFF
  18. else:
  19. if total == 3:
  20. newGrid[i, j] = ON
  21. # 更新图像数据
  22. img.set_data(newGrid)
  23. grid[:] = newGrid[:]
  24. return img,
  25. def main():
  26. N = 100
  27. grid = np.random.choice([ON, OFF], N*N, p=[0.2, 0.8]).reshape(N, N)
  28. # 设置图像
  29. fig, ax = plt.subplots()
  30. img = ax.imshow(grid, interpolation='nearest')
  31. # 动画显示网格
  32. ani = animation.FuncAnimation(fig, update, fargs=(img, grid, N),
  33. frames=10, interval=200, save_count=50)
  34. plt.show()
  35. ON = 255
  36. OFF = 0
  37. vals = [ON, OFF]
  38. if __name__ == '__main__':
  39. main()

代码解析

  1. 初始化网格:

    • 使用 numpy 随机初始化网格,选择细胞是活着(ON)或死亡(OFF)。
    • N 定义网格的大小。
  2. 更新函数:

    • 遍历每个细胞,根据邻居的存活数量应用生命游戏的规则。
    • 更新后的网格替换旧网格。
  3. 规则:

    • 活细胞:如果活细胞周围有少于2个或多于3个活邻居,它会死亡。
    • 死细胞:如果死细胞周围有正好3个活邻居,它会复活。
  4. 显示和动画:

    • 使用 matplotlib 创建图像并动态显示细胞的演变过程。

这个实现提供了一个基础的框架,可以进一步扩展,比如添加不同初始条件或改变网格的大小与形状等。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
十二岁月 关注 已关注

最近一次登录:2024-11-20 11:36:00   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图