【Python】Conway生命游戏学习
先尝试以下代码,如果成功就可以继续吧
import numpy as np #数组
import matplotlib.pyplot as plt #生成动画
import matplotlib.animation as animation #更新模拟x = np.array([[0,0,255],[255,255,0],[0,255,0]])#三维数组
plt.imshow(x, interpolation='nearest')#nearest输出尖锐边缘
plt.show()#将矩形输出为图像
最后代码:源码:https://github.com/electronut/pp
"""
conway.py
A simple Python/matplotlib implementation of Conway's Game of Life.
Author: Mahesh Venkitachalam
"""import sys, argparse
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animationON = 255
OFF = 0
vals = [ON, OFF]def randomGrid(N):"""returns a grid of NxN random values"""return np.random.choice(vals, N*N, p=[0.2, 0.8]).reshape(N, N)def addGlider(i, j, grid):"""adds a glider with top left cell at (i, j)"""glider = np.array([[0, 0, 255], [255, 0, 255], [0, 255, 255]])grid[i:i+3, j:j+3] = gliderdef addGosperGliderGun(i, j, grid):"""adds a Gosper Glider Gun with top left cell at (i, j)"""gun = np.zeros(11*38).reshape(11, 38)gun[5][1] = gun[5][2] = 255gun[6][1] = gun[6][2] = 255gun[3][13] = gun[3][14] = 255gun[4][12] = gun[4][16] = 255gun[5][11] = gun[5][17] = 255gun[6][11] = gun[6][15] = gun[6][17] = gun[6][18] = 255gun[7][11] = gun[7][17] = 255gun[8][12] = gun[8][16] = 255gun[9][13] = gun[9][14] = 255gun[1][25] = 255gun[2][23] = gun[2][25] = 255gun[3][21] = gun[3][22] = 255gun[4][21] = gun[4][22] = 255gun[5][21] = gun[5][22] = 255gun[6][23] = gun[6][25] = 255gun[7][25] = 255gun[3][35] = gun[3][36] = 255gun[4][35] = gun[4][36] = 255grid[i:i+11, j:j+38] = gundef update(frameNum, img, grid, N):# copy grid since we require 8 neighbors for calculation# and we go line by line newGrid = grid.copy()for i in range(N):for j in range(N):# compute 8-neghbor sum# using toroidal boundary conditions - x and y wrap around # so that the simulaton takes place on a toroidal surface.total = int((grid[i, (j-1)%N] + grid[i, (j+1)%N] + grid[(i-1)%N, j] + grid[(i+1)%N, j] + grid[(i-1)%N, (j-1)%N] + grid[(i-1)%N, (j+1)%N] + grid[(i+1)%N, (j-1)%N] + grid[(i+1)%N, (j+1)%N])/255)# apply Conway's rulesif grid[i, j] == ON:if (total < 2) or (total > 3):newGrid[i, j] = OFFelse:if total == 3:newGrid[i, j] = ON# update dataimg.set_data(newGrid)grid[:] = newGrid[:]return img,#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 argumentsparser = argparse.ArgumentParser(description="Runs Conway's Game of Life simulation.")# add argumentsparser.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 sizeN = 100if args.N and int(args.N) > 8:N = int(args.N)# set animation update intervalupdateInterval = 50if args.interval:updateInterval = int(args.interval)# declare gridgrid = np.array([])# check if "glider" demo flag is specifiedif 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 ongrid = randomGrid(N)# set up animationfig, 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 fileif args.movfile:ani.save(args.movfile, fps=30, extra_args=['-vcodec', 'libx264'])plt.show()#call main
if __name__ == '__main__':main()
【Python】Conway生命游戏学习相关推荐
- 康威生命游戏java_Java Python 康威生命游戏 - 命令行版
Java & Python 康威生命游戏 - 命令行版(2020年7月23日) 制作背景 高二的时候看霍金的<大设计>最后几页的时候看到里面提到了康威生命游戏,介绍了它的规则,感觉 ...
- Python - 康威生命游戏Conway's game of life
使用python实现康威生命游戏Conway's game of life 参考<python极客项目编程> 游戏规则: 任何四周邻居存活数少于两个的存活网格将死亡,因为人口稀少. 任何四 ...
- Conway生命游戏
生命游戏建立在9个方格的网格中,每个细胞有8个相邻细胞. 游戏有三个规则: 1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则 ...
- Python 实现生命游戏
这次我们使用 Python 来实现生命游戏,这是一种简单的元胞自动机.基于一定规则,程序可以自动从当前状态推演到下一状态.制作的成品如下: 先来说说生命游戏的规则: 在生命游戏中,每个单元格有两种状态 ...
- Python实现生命游戏
作者 | 借我一生执拗 来源 | Python高效编程 这次我们使用 Python 来实现生命游戏,这是一种简单的元胞自动机.基于一定规则,程序可以自动从当前状态推演到下一状态.制作的成品如下: 先来 ...
- Python实现生命游戏(Game of Life)
生命游戏的算法就不多解释了,百度一下介绍随处可见. 因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依 ...
- linux生命游戏实现,模拟生命——Conway生命游戏python实现(详细注释笔记)
规则: 每个细胞有两种状态-存活ON或死亡OFF,每个细胞与以自身为中心的周围八格细胞产生互动.(请想象九宫格) 1)人口过少:当周围低于2个(不包含2个)存活细胞时, 本单元活细胞死亡. 2)稳定: ...
- python游戏后端_Python实现生命游戏
1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机.它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个 ...
- 生命游戏代码_生命游戏 the Game of Life
引言 群居性昆虫是一个生命,鱼群.鸟群是一个生命,社会.城市是一个有机体,人类的语言是活的,人类的集体行为也是活的.这些复杂系统是如何设计出来的?世界上最著名的游戏之一,Game of Life生命游 ...
最新文章
- llist对象两个属性相乘在相加_Java8使用stream实现list中对象属性的合并(去重并求和)...
- python快速编程答案-100+Python编程题带你快速上手(附答案)
- 关于gradle加快构建速度采用阿里云中央仓库的配置
- 洛谷 P2519 [HAOI2011]problem a
- 关于Web报表FineReport打印的开发应用案例
- SpringCloud之路由网关zuul(五)
- 拥抱开源!除了微软红帽,这些国际大厂你认识几个?
- UOJ#191. 【集训队互测2016】Unknown
- 【OpenCV】imread读取数据为空
- 东莞市商业学校计算机平面设计在哪个校区,东莞市商业学校
- 我的世界java什么村民卖地图_《我的世界》推出虚拟货币、商店 玩家可在店中卖地图...
- CCNA2.0笔记_ACL
- c++随机打乱数组_第四天 Java 数组与排序
- 计算机网络中为什么引入IP地址?
- 安卓频谱仪audiotool中文_频谱分析仪 TEK2712
- 海盗分金问题 冲突分析—非合作博弈
- GD32F303修改外部25M晶振
- 【示波器专题】示波器探头的原理和分类
- NBA球队实力聚类分析
- Linux里怎么打开pt文件,在 Linux 上安装 transmission 进行远程 PT 下载