当前位置: 首页 > news >正文

网站建设 微信公众号网页欢迎页面设计

网站建设 微信公众号,网页欢迎页面设计,北京网站优化企业,网站规划模板康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则&#xff1a; 细胞有两种状态&#xff0c;存活或死亡&#xff0c;每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞&#xff1a; 当周围的细胞过少(<2)或…

康威生命游戏

康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。
生命游戏有几个简单的规则:
细胞有两种状态,存活或死亡,每个细胞以自身为中心与周围的八格细胞互动。
对于存活的细胞

  1. 当周围的细胞过少(<2)或过多(>3)时,细胞死亡。
  2. 周围细胞数量适中(2或3)时,细胞保持存活。

对于死亡的细胞(空白区域):

  1. 周围有3个细胞时,该区域生成细胞。(模拟繁殖)

参考:中文维基百科-康威生命游戏

康威生命游戏通过上述几条简单的规则,加上不同的初始状态,就可以演化出各种复杂的模式:
生命游戏中的一种情形。图源维基百科

Python实现

由于生命游戏的规则非常简单,我们可以很容易的用Python实现。
可以用二维数组表示细胞状态,并根据生命游戏的规则计算下一次的细胞状态进行更新。
(当规模变大时,更新细胞会变得困难。可以考虑并行)

下面是一个简单的实现,使用pygame显示动画,借助numpy操作数组。
效果如下:
python实现

代码参考:https://www.youtube.com/watch?v=cRWg2SWuXtM

完整代码:

import pygame
import numpy as np
import time# 定义颜色和细胞大小
COLOR_BG = (10, 10, 10) # 背景,黑色
COLOR_GRID = (40, 40, 40) # 网格,黑灰色
COLOR_DIE_NEXT = (170, 170, 170) # 下一代死亡细胞,灰色
COLOR_ALIVE_NEXT = (255, 255, 255) # 下一代存活细胞,白色
SIZE = 10# 更新细胞状态
def update(screen, cells, size, with_progress=False):'''更新细胞状态screen: pygame.Surface 对象cells: 细胞状态矩阵size: 细胞大小with_progress: 是否显示下一代细胞状态。有时候我们只想(通过鼠标点击)修改当前细胞状态,而不想立即显示下一代细胞状态'''updated_cells = np.zeros_like(cells)# 遍历每一个细胞for row, col in np.ndindex(cells.shape):# 统计周围细胞的存活数量alive = np.sum(cells[row-1:row+2, col-1:col+2]) - cells[row, col]# 设置格子颜色,如果当前细胞处于死亡状态,颜色为背景色;否则为存活细胞颜色color = COLOR_BG if not cells[row, col] else COLOR_ALIVE_NEXT# 如果当前细胞处于存活状态if cells[row, col]:if alive < 2 or alive > 3:if with_progress:color = COLOR_DIE_NEXTelif 2 <= alive <= 3:updated_cells[row, col] = 1if with_progress:color = COLOR_ALIVE_NEXT# 如果当前细胞处于死亡状态else:if alive == 3:updated_cells[row, col] = 1if with_progress:color = COLOR_ALIVE_NEXT# 在屏幕的(row, col)位置绘制细胞。size-1是为了留出边界pygame.draw.rect(screen, color, (col*size, row*size, size-1, size-1))return updated_cellsdef main():pygame.init()screen = pygame.display.set_mode((800, 600))cells = np.zeros((60, 80))screen.fill(COLOR_GRID)update(screen, cells, SIZE)pygame.display.update()ruuning = Falsewhile True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()returnif event.type == pygame.KEYDOWN:# 空格键控制游戏暂停/继续if event.key == pygame.K_SPACE: ruuning = not ruuningupdate(screen, cells, SIZE)pygame.display.update()# 鼠标左键点击,添加活细胞if pygame.mouse.get_pressed()[0]:x, y = pygame.mouse.get_pos()cells[y//SIZE, x//SIZE] = 1update(screen, cells, SIZE)pygame.display.update()screen.fill(COLOR_GRID)if ruuning:cells = update(screen, cells, SIZE, with_progress=True)pygame.display.update() time.sleep(0.1)if __name__ == '__main__':main()
http://www.yayakq.cn/news/247992/

相关文章:

  • 山东三强建设咨询有限公司网站游戏ui设计师工资一般多少
  • gofair外贸建站给网站做外链要注意哪些
  • 织梦系统做的网站忘记登录密码自己做网站怎么选架构
  • 网站制作镇江网上推
  • 有趣的网站官网如何创造一个网站
  • 网站开发的评论界面模板上海建筑设计研究院有限公司招聘
  • wordpress多站点无法访问建筑公司经营范围有哪些
  • 怎么用vs2015做网站app开发的价值
  • 广州找人做网站河北省住房及城乡建设部网站
  • 做微网站那pc端显示啥长沙网站空间
  • 关于协会网站建设的几点思考正版android应用开发教程
  • 河南网站建设价位潍坊的网站开发公司
  • 网站建设需求分析报告深圳网站论坛建设
  • 北京网站备案注销linux系统搭建网站
  • vip电影网站建设wordpress首页视频
  • 嘉兴网站建设公司就找嘉乐网络陕西交通建设集团西长分公司网站
  • 网站做排名有用吗怎么免费申请个人网站
  • 做营销网站视频哪些人需要建网站
  • 定制网站建设价格公司网站建设费入哪个科目
  • 管理登陆网站开发软件专门做卫生间效果图的网站
  • 济宁网站建设公司h5营销型网站suteng
  • jsp网站开发登陆怎样做号网站优化
  • 网站空间如何续费网站模版 下载工具
  • 张掖市住房和城乡建设局网站wordpress里面怎么加链接
  • 有哪些做的好的小众网站深圳电器公司邮编
  • 信阳高端网站建设平面设计自学网站有哪些
  • 营销企业网站制作青州做网站电话
  • php网站开发api湖北省住房和城乡建设网站
  • 网站jquery上传源代码dz多语言企业网站
  • 网站开发语言包括哪些wordpress单页面