康威的python生活游戏

康威的python生活游戏,python,conways-game-of-life,Python,Conways Game Of Life,我曾尝试用python制作康威的生活游戏,然后将输出保存到图片中,但我认为逻辑有问题,因为大多数图片看起来都不太正确。(见图) 人生游戏图片: 导入图片,随机 宽度=1366 高度=768 轮数=10 死=(0,0,0) 活动=(0、64、255) 打印(“创建图像”) img=PIL.Image.new(“RGB”(宽度、高度)) 数据=img.load() 打印(“创建网格”) 网格=[] 对于范围内的y(高度): grid.append([]) 对于范围内的x(宽度): 网格[y].ap

我曾尝试用python制作康威的生活游戏,然后将输出保存到图片中,但我认为逻辑有问题,因为大多数图片看起来都不太正确。(见图)

人生游戏图片:

导入图片,随机
宽度=1366
高度=768
轮数=10
死=(0,0,0)
活动=(0、64、255)
打印(“创建图像”)
img=PIL.Image.new(“RGB”(宽度、高度))
数据=img.load()
打印(“创建网格”)
网格=[]
对于范围内的y(高度):
grid.append([])
对于范围内的x(宽度):
网格[y].append(random.randint(0,1))
对于范围内的i(轮):
打印(“开始一轮”,i+1,“共”轮)
对于范围内的y(高度):
对于范围内的x(宽度):
n=0
对于范围(-1,2)内的y2:
对于范围(-1,2)内的x2:
如果x2!=0和y2!=0和栅格[(y+y2)%HEIGHT][(x+x2)%WIDTH]==1:
n+=1
如果n<2:
网格[y][x]=0
如果n>3:
网格[y][x]=0
elif网格[y][x]==1且n>1且n<4:
网格[y][x]=1
elif网格[y][x]==0和n==3:
网格[y][x]=1
打印(“渲染图像”)
对于范围内的y(高度):
对于范围内的x(宽度):
如果网格[y][x]==1:
数据[x,y]=活动
其他:
数据[x,y]=无效
打印(“保存图像”)
img.save(“gofl.png”)

您的程序无法在当前状态下正常工作,因为您在存储上一代的同一网格中计算下一代。您需要一个新的(空)网格来存储下一代。在您的实现中,您在计算下一代时已经覆盖了上一代。

您所说的“看起来不正确”是什么意思?@arc\u lup请参见图片图片图片可能是正确的,这取决于轮数。您应该测试一些已知的配置来验证您的程序,而不是一些随机星座。但我认为你们的程序也有一个根本性的缺陷,请看我的答案。