conway的生命游戏
时间: 2024-06-02 13:08:09 浏览: 261
康威生命游戏(Conway's Game of Life),是一种基于细胞自动机的零玩家游戏,由英国数学家康威在1970年发明。它包含了一个二维的网格和一些可以生存、死亡或繁殖的细胞。游戏的规则非常简单,但是却可以产生复杂的图案和行为。规则如下:
1. 每个细胞有两种状态——存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动(如图,黑色为存活,白色为死亡);
2. 当一个活细胞周围的活细胞数量少于2个时,该细胞变成死亡状态(模拟生命数量稀少);
3. 当一个活细胞周围有2个或3个活细胞时,该细胞保持原样;
4. 当一个活细胞周围有超过3个活细胞时,该细胞变成死亡状态(模拟生命争夺资源);
5. 当一个死细胞周围恰好有3个活细胞时,该细胞转化为活细胞(模拟繁殖)。
通过这些规则,我们可以看到在不断迭代更新之后,康威生命游戏中会出现各种有趣的图案、周期、飞舞的物体等等,引人入胜。
相关问题
用Python实现Conway生命游戏
Conway的生命游戏是一种简单的离散系统,基于细胞自动机的概念,由John Horton Conway在1970年提出。它通过简单的规则模拟了生物体的生命周期。在Python中实现这个游戏,通常会创建一个二维数组表示棋盘,并根据以下四个规则更新每个细胞的状态:
1. 如果一个活细胞周围有3个活邻居,则该细胞在下一轮存活(不死也不生长)。
2. 如果一个活细胞周围少于2个活邻居,或者超过3个活邻居,则该细胞死亡(因为资源不足或竞争激烈)。
3. 死细胞如果恰好有两个活邻居则复活。
4. 其他情况保持不变。
以下是基本的步骤:
```python
import numpy as np
# 初始化一个大小为N*N的二维数组,其中0代表死细胞,1代表活细胞
def initialize_grid(N):
return np.random.randint(2, size=(N, N))
# 更新函数,根据邻域规则计算新的状态
def update(grid):
new_grid = np.zeros_like(grid)
for i in range(1, grid.shape[0] - 1):
for j in range(1, grid.shape[1] - 1):
neighbors_count = (grid[i-1, j-1] + grid[i-1, j] + grid[i-1, j+1]
+ grid[i, j-1] + grid[i, j+1]
+ grid[i+1, j-1] + grid[i+1, j] + grid[i+1, j+1])
if grid[i, j]:
# 活细胞生存条件
if neighbors_count == 2 or neighbors_count == 3:
new_grid[i, j] = 1
else:
# 死细胞复活条件
if neighbors_count == 3:
new_grid[i, j] = 1
return new_grid
# 游戏主循环,运行一定步数或直到所有细胞都死亡
def play_life_game(grid, generations=100):
for _ in range(generations):
grid = update(grid)
print(grid, "\n" * 5) # 打印当前状态并换行,美观显示
# 调用函数开始游戏
play_life_game(initialize_grid(20))
```
阅读全文