1.初始化网格中的单元格。
2.在模拟的每个时间步,每个
在网格中的单元格(i,j),执行以下操作:
一个。基于更新单元格(i,j)的值
它的邻居,考虑到了
边界条件。
更新网格值的显示。
# main() function
def
main():
# Command line args are in sys.argv[1], sys.argv[2] ..
# sys.argv[0] is the script name itself and can be ignored
# parse arguments
parser =
argparse.ArgumentParser(description="Runs Conway's Game of Life simulation.")
# add arguments
parser.add_argument('--grid-size', dest='N', required=False)
parser.add_argument('--mov-file', dest='movfile', required=False)
parser.add_argument('--interval', dest='interval', required=False)
parser.add_argument('--glider', action='store_true', required=False)
parser.add_argument('--gosper', action='store_true', required=False)
args =
parser.parse_args()
# set grid size
N =
100
if
args.N and
int(args.N) > 8:
N =
int(args.N)
# set animation update interval
updateInterval =
50
if
args.interval:
updateInterval =
int(args.interval)
# declare grid
grid =
np.array([])
# check if "glider" demo flag is specified
if
args.glider:
grid =
np.zeros(N*N).reshape(N, N)
addGlider(1, 1, grid)
elif
args.gosper:
grid =
np.zeros(N*N).reshape(N, N)
addGosperGliderGun(10, 10, grid)
else: # populate grid with random on/off -
# more off than on
grid =
randomGrid(N)
# set up animation
fig, ax =
plt.subplots()
img =
ax.imshow(grid, interpolation='nearest')
ani =
animation.FuncAnimation(fig, update, fargs=(img, grid, N, ),
frames =
10,
interval=updateInterval,
save_count=50)
# # of frames?
# set output file
if
args.movfile:
ani.save(args.movfile, fps=30, extra_args=['-vcodec', 'libx264'])
plt.show()
# call main
if
__name__ ==
'__main__':
main()








暂无数据