写一个关于生命游戏的python代码
时间: 2023-12-20 11:03:56 浏览: 164
生命游戏(Game of Life)是一种细胞自动机,由英国数学家约翰·何顿·康威于1970年发明。这个游戏只有一个规则:一个细胞的生死状态取决于它周围的八个细胞的状态。如果一个细胞有三个活细胞邻居,它就会在下一代复活;如果一个细胞有两个活细胞邻居,它就继续保持原来的状态;如果一个细胞有两个以下的活细胞邻居,它就会在下一代死亡。
以下是一个简单的 Python 实现:
```python
import random
import copy
import time
# 定义生命游戏的棋盘大小
WIDTH = 40
HEIGHT = 20
# 定义细胞的状态
DEAD = 0
ALIVE = 1
# 初始化棋盘
board = [[DEAD for y in range(HEIGHT)] for x in range(WIDTH)]
# 随机生成初始状态
for x in range(WIDTH):
for y in range(HEIGHT):
if random.random() < 0.2:
board[x][y] = ALIVE
# 显示棋盘
def display_board(board):
for y in range(HEIGHT):
for x in range(WIDTH):
if board[x][y] == ALIVE:
print('*', end='')
else:
print('.', end='')
print()
# 计算细胞周围的活细胞数
def count_neighbors(board, x, y):
count = 0
for dx in range(-1, 2):
for dy in range(-1, 2):
if dx == 0 and dy == 0:
continue
new_x = x + dx
new_y = y + dy
if new_x < 0 or new_x >= WIDTH or new_y < 0 or new_y >= HEIGHT:
continue
if board[new_x][new_y] == ALIVE:
count += 1
return count
# 计算下一代棋盘
def next_board(board):
new_board = copy.deepcopy(board)
for x in range(WIDTH):
for y in range(HEIGHT):
count = count_neighbors(board, x, y)
if board[x][y] == ALIVE:
if count < 2 or count > 3:
new_board[x][y] = DEAD
else:
if count == 3:
new_board[x][y] = ALIVE
return new_board
# 不断更新棋盘直到没有活细胞为止
while any(ALIVE in row for row in board):
display_board(board)
board = next_board(board)
time.sleep(0.5)
print("Game over!")
```
这个程序会随机生成一个初始状态的棋盘,并在每一代计算细胞周围的活细胞数,然后根据规则计算下一代棋盘。程序会不断更新棋盘,直到没有活细胞为止。在每一代更新之后,程序会暂停 0.5 秒以使得更新过程更加可视化。
阅读全文