模拟康威人生游戏的python库

pyseagull的Python项目详细描述


康威生活游戏的Python库

这个框架允许您创建和模拟各种人工生命形式 细胞自动机很简单:简单地定义你的板,添加你的生命形式, 然后执行run命令!它还提供了无数预先制作的 同时允许您创建自己的生命形式

为什么叫它海鸥?康威的人生游戏非常丰富,所以我指的是 它的缩写,CGoL“海鸥”这个词只是个双关语

用几行代码模拟您的第一个生命形式:

importseagullassgfromseagull.lifeformsimportPulsar# Initialize boardboard=sg.Board(size=(19,60))# Add three Pulsar lifeforms in various locationsboard.add(Pulsar(),loc=(1,1))board.add(Pulsar(),loc=(1,22))board.add(Pulsar(),loc=(1,42))# Simulate boardsim=sg.Simulator(board)sim.run(sg.rules.conway_classic,iters=1000)

也可以通过运行sim.animate()

除了Pulsar,我们还有一个nice collection of lifeforms 供你选择!

安装

要安装Seagull,请在终端中运行此命令:

pip install pyseagull

这是安装Seagull的首选方法,因为它将始终安装 最新的稳定版本。

如果要安装Bleeding Edge版本,请克隆此repo:

git clone https://github.com/ljvmiranda921/seagull.git

然后运行

cd seagull
python setup.py install

用法

人工生命模拟有三个主要部分:

  • 生命体四处移动的Board或环境
  • 与环境交互的Lifeform,以及
  • 指示特定细胞是否存活的rules

在Seagull中,您只需定义Board,添加Lifeform/s,然后运行 Simulator给定一个rule。您可以根据需要添加多个生命形式:

importseagullassgfromseagullimportlifeformsaslfboard=sg.Board(size=(30,30))board.add(lf.Blinker(length=3),loc=(4,4))board.add(lf.Glider(),loc=(10,4))board.add(lf.Glider(),loc=(15,4))board.add(lf.Pulsar(),loc=(5,12))board.view()# View the current state of the board

然后,您可以简单地运行模拟,并在需要时设置动画:

sim=sg.Simulator(board)hist=sim.run(sg.rules.conway_classic,iters=1000)# Save simulation historysim.animate()

添加自定义生命形式

您可以使用Custom类来手动创建您的生命形式:

importseagullassgfromseagull.lifeformsimportCustomboard=sg.Board(size=(30,30))board.add(Custom([[0,1,1,0],[0,0,1,1]]),loc=(0,0))

获取模拟统计和历史

默认情况下,调用 run()方法。此外,您还可以通过调用 get_history()方法

# The run() command returns the run statisticsstats=sim.run(sg.rules.conway_classic,iters=1000)# You can also get it using get_history()hist=sim.get_history()

示例

您可以在 documentation

贡献

此项目对贡献者开放贡献的形式可以是 功能请求、错误修复、文档、教程等等!我们高度重视 建议在提交Pull Request之前先提交问题。

只需分叉此存储库并发出拉取请求!我们肯定会 感谢:

  • 新功能的实现
  • 错误报告
  • 文件
  • 测试

许可证

麻省理工学院许可证(C)2019,Lester James v.Miranda

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列