写一个关于生命游戏的程序
时间: 2023-12-19 13:07:12 浏览: 77
生命游戏是一种细胞自动机,由英国数学家约翰·康威在1970年发明。游戏中存在着许多细胞,每个细胞都是“活着”或“死亡”的状态。游戏开始时,每个细胞的状态是随机分布的。然后,根据一定的规则,每个细胞的状态会不断地更新。更新后,所有细胞的状态会同时显示出来。这个过程可以反复进行,直到满足某个终止条件为止。
以下是一个简单的Python实现:
```python
import random
# 定义细胞状态,0表示死亡,1表示活着
DEAD, ALIVE = 0, 1
def init_board(rows, cols):
"""
初始化游戏板
:param rows: 游戏板的行数
:param cols: 游戏板的列数
:return: 游戏板
"""
board = [[random.choice([DEAD, ALIVE]) for _ in range(cols)] for _ in range(rows)]
return board
def count_neighbors(board, row, col):
"""
统计一个细胞周围的存活细胞数量
:param board: 游戏板
:param row: 细胞所在的行数
:param col: 细胞所在的列数
:return: 周围存活细胞数量
"""
count = 0
for i in range(row - 1, row + 2):
for j in range(col - 1, col + 2):
if i == row and j == col:
continue
if i >= 0 and i < len(board) and j >= 0 and j < len(board[0]) and board[i][j] == ALIVE:
count += 1
return count
def update_board(board):
"""
更新游戏板
:param board: 游戏板
"""
new_board = [[0 for _ in range(len(board[0]))] for _ in range(len(board))]
for i in range(len(board)):
for j in range(len(board[0])):
count = count_neighbors(board, i, j)
if board[i][j] == ALIVE:
if count < 2 or count > 3:
new_board[i][j] = DEAD
else:
new_board[i][j] = ALIVE
else:
if count == 3:
new_board[i][j] = ALIVE
for i in range(len(board)):
for j in range(len(board[0])):
board[i][j] = new_board[i][j]
def display_board(board):
"""
显示游戏板
"""
for row in board:
print(' '.join(['*' if cell == ALIVE else '-' for cell in row]))
print()
if __name__ == '__main__':
board = init_board(10, 10)
display_board(board)
for i in range(10):
update_board(board)
display_board(board)
```
这个程序通过随机生成初始游戏板,然后根据规则更新游戏板,最后显示更新后的游戏板。程序循环进行这个过程,直到达到预定的次数或出现某个终止条件。
阅读全文