手把手教你用ipycanvas实现Conway‘s Game of Life生命游戏
📅 2026/7/25 21:26:12
👁️ 次浏览
手把手教你用ipycanvas实现Conways Game of Life生命游戏【免费下载链接】ipycanvasInteractive Canvas in Jupyter项目地址: https://gitcode.com/gh_mirrors/ip/ipycanvasipycanvas是一款强大的Jupyter交互式画布工具能帮助开发者轻松创建动态图形和交互式应用。本文将带你快速掌握如何使用ipycanvas实现经典的Conways Game of Life生命游戏无需复杂编程知识只需简单几步即可拥有自己的生命演化模拟系统。准备工作安装ipycanvas的最快方法开始之前我们需要先安装ipycanvas。对于新手用户推荐使用pip或conda这两种简单方式使用pip安装推荐pip install ipycanvas使用conda安装conda install -c conda-forge ipycanvas如果你想进行开发或贡献代码可以参考开发安装指南详见docs/installation.rst。生命游戏简介让细胞自动演化的神奇规则 Conways Game of Life是由英国数学家约翰·康威在1970年发明的细胞自动机。它由一个二维网格组成每个细胞有存活或死亡两种状态根据以下简单规则演化存活规则当一个存活细胞周围有2-3个存活邻居时它会继续存活诞生规则当一个死亡细胞周围恰好有3个存活邻居时它会变成存活状态死亡规则其他情况下细胞会死亡或保持死亡状态这些简单规则能产生极其复杂的演化模式从稳定结构到周期性震荡甚至能模拟移动的滑翔机图使用ipycanvas实现的Conways Game of Life生命游戏界面展示了多种细胞模式的演化过程实现步骤从0到1创建生命游戏第一步导入必要的库首先我们需要导入ipycanvas和其他辅助库from time import sleep import numpy as np from ipycanvas import RoughCanvas, hold_canvas这里使用RoughCanvas可以创建具有手绘风格的图形让我们的生命游戏看起来更有艺术感第二步实现生命游戏核心逻辑接下来我们需要实现生命游戏的核心演化函数life_step它会根据当前细胞状态计算下一代状态def life_step(x): Game of life step nbrs_count sum(np.roll(np.roll(x, i, 0), j, 1) for i in (-1, 0, 1) for j in (-1, 0, 1) if (i ! 0 or j ! 0)) return (nbrs_count 3) | (x (nbrs_count 2))这个函数使用了numpy的数组操作来高效计算每个细胞的邻居数量这是处理大型网格的关键第三步创建绘制函数然后我们需要创建一个绘制函数用于在画布上绘制细胞状态def draw(x, canvas, colorblack): with hold_canvas(canvas): canvas.clear() # 绘制背景 canvas.fill_style #FFF0C9 canvas.stroke_style white canvas.rough_fill_style solid canvas.fill_rect(-10, -10, canvas.width 10, canvas.height 10) # 绘制存活细胞 canvas.rough_fill_style cross-hatch canvas.fill_style color canvas.stroke_style color living_cells np.where(x) rects_x living_cells[0] * n_pixels rects_y living_cells[1] * n_pixels canvas.fill_rects(rects_x, rects_y, n_pixels) canvas.stroke_rects(rects_x, rects_y, n_pixels)第四步设置初始状态并运行模拟最后我们设置初始细胞状态这里使用经典的滑翔机枪模式并运行模拟# 创建初始滑翔机枪模式 glider_gun [ [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0], # 更多初始模式行... ] x np.zeros((50, 70), dtypebool) x[1:10,1:37] glider_gun # 创建画布 n_pixels 15 canvas RoughCanvas(widthx.shape[0]*n_pixels, heightx.shape[1]*n_pixels) canvas.fill_style #FFF0C9 canvas.stroke_style white canvas.fill_rect(0, 0, canvas.width, canvas.height) # 显示画布并运行模拟 draw(x, canvas, #5770B3) display(canvas) for _ in range(100): x life_step(x) draw(x, canvas, #5770B3) sleep(0.1)完整的代码示例可以在docs/conways_game_of_life.ipynb中找到。探索更多让你的生命游戏更有趣 尝试不同的初始模式除了滑翔机枪你还可以尝试其他经典模式方块稳定不变的2x2方块** blinker**周期性震荡的3个细胞太空船能在网格中移动的模式调整参数获得不同效果通过修改以下参数你可以获得完全不同的视觉效果n_pixels细胞大小color细胞颜色尝试#FF6B6B或#4ECDC4sleep(0.1)演化速度值越小速度越快rough_fill_style填充风格尝试hachure或zigzag互动功能扩展你还可以利用ipycanvas的交互功能添加鼠标点击来手动创建或删除细胞使用on_mouse_down事件检测鼠标点击在点击位置切换细胞状态总结从简单规则到复杂系统的奇妙旅程通过本文的教程你已经学会了如何使用ipycanvas创建Conways Game of Life生命游戏。这个项目展示了如何将简单规则转化为复杂系统以及ipycanvas在创建交互式科学可视化方面的强大能力。无论你是编程新手还是有经验的开发者ipycanvas都能帮助你轻松创建各种精彩的交互式图形应用。现在就动手尝试修改代码探索生命游戏中无穷无尽的有趣模式吧想要了解更多ipycanvas的高级功能可以查阅官方文档docs/index.rst里面有关于动画、事件处理、3D绘图等更多精彩内容。【免费下载链接】ipycanvasInteractive Canvas in Jupyter项目地址: https://gitcode.com/gh_mirrors/ip/ipycanvas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
1. 项目背景与核心价值眼前节组织分割在眼科临床诊断和术前规划中具有关键作用。传统分割方法往往面临边缘模糊、对比度低等挑战,而多尺度形态学方法通过模拟人眼视觉系统的层次化处理机制,能够有效捕捉从宏观到微观的组织结构特征。我在青光眼筛查项目中…
📅 2026/7/25 21:26:12
一、那次"改个路由要重启网关"的事故
2022年,我们的网关还是 Nginx Lua 手写的那一套。
某次大促前,运营临时要调整灰度比例:把 5% 的流量切到新版本。
我改了 Nginx 配置,执行 nginx -s reload。
结果:全站…
📅 2026/7/25 21:26:12
1. 什么是二叉堆二叉堆(Binary Heap)是一种特殊的完全二叉树数据结构,它满足堆性质:对于最大堆,每个节点的值都大于或等于其子节点的值;对于最小堆,每个节点的值都小于或等于其子节点的值。二叉…
📅 2026/7/25 21:25:12
5分钟完成STL转STEP:免费开源的3D格式转换终极方案 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp
在3D设计和制造领域,STL转STEP格式转换是连接3D打印与专业CAD软件的必…
📅 2026/7/25 22:55:42
最近在帮朋友挑选电视时,发现了一个普遍现象:面对琳琅满目的电视型号和参数,很多人都会陷入选择困难。特别是像“华为 Vision 5 SE 65英寸 4K电视”这类主打性价比的机型,网上评价褒贬不一,到底值不值得入手࿰…
📅 2026/7/25 22:55:42
研发管理工具选型的关键在于先分清团队需要的是“任务管理工具”还是“项目管理平台”,再按规模与管控深度匹配产品,功能多不等于适用。本文对11款主流研发管理工具进行盘点,从定位、核心能力、适用边界三个维度横向分析,帮助研发…
📅 2026/7/25 22:55:42
AI视频Prompt结构化屠榜:可灵/万相/豆包 适用读者: 想在自己应用里调可灵 / Wan / 豆包 Seedance 这些国产视频模型的开发者 阅读时长: 约 12 分钟 测试时间: 2026 年 7 月(基于 炻光 AI 接入管理平台 公开文档) 一、为什么 2026 年 Q3 突然都在聊 Prompt 结构化
2026 年 7 月…
📅 2026/7/25 22:55:42
国产音乐视频 Prompt 三段式屠夫榜:5 个国产视频模型实测对比 适用读者:想在自己应用里调可灵 / Vidu / 豆包 Seedance / HappyHorse 这些国产视频模型做 MV 生成的开发者 阅读时长:约 12 分钟 测试时间: 2026 年 7 月(基于 炻光 AI 接入管理平台 公开文档) 一、为什么 2026 Q3…
📅 2026/7/25 22:55:42
snake-ai-pytorch游戏环境搭建教程:Pygame实现贪吃蛇游戏核心逻辑 【免费下载链接】snake-ai-pytorch 项目地址: https://gitcode.com/gh_mirrors/sn/snake-ai-pytorch
snake-ai-pytorch是一个基于Pygame的贪吃蛇游戏环境,专为AI训练设计。通过本…
📅 2026/7/25 22:54:41
1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…
📅 2026/7/25 0:00:17
1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…
📅 2026/7/25 0:00:17
一、直达船员,预警链路最短营运船舶强制标配 VHF 船载电台,属于驾驶室常态化值守设备;预警语音直接传递至驾驶人员,区别于岸上声光报警(船员经常听不到)、短信 / 小程序(船员极少主动查看&#…
📅 2026/7/25 0:00:17
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/25 1:09:03
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/25 1:09:03
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/25 1:09:03
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/25 7:09:18
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/25 17:09:47
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/25 5:09:14