Python实现生命游戏(Game of Life)

python实现生命游戏的示例代码(Game of Life) 这篇文章主要介绍了python实现生命游戏的示例代码(Game of Life),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 生命游戏的算法就不多解释了,百度一下介绍随处可见。 因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依赖库,console输出的版本。 # -*- coding: utf-8 -*- from time import sleep from copy imp 阅读详情

生命游戏的算法就不多解释了,百度一下介绍随处可见。

因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依赖库,console输出的版本。

# -*- coding: utf-8 -*-
from time import sleep
from copy import deepcopy

WORLD_HIGH = 20 #世界长度
WORLD_WIDE = 40 #世界宽度
ALIVE_CON = 3 #复活条件
KEEP_CON = 2  #保有条件

class Cell(object):
    '''细胞对象'''
    def __init__(self, pos):
        '''自身坐标x,y, 已经是否还存活'''
        self.point, self.is_alive = pos, False
        self.x, self.y = self.point
    
    def setAlive(self):
        self.is_alive = True
        
    def setDied(self):
        self.is_alive = False
        
    def display(self):
        if self.is_alive:
            return '*'
        return ' '
        
    def displayLinux(self):
        '''在linux环境下可以打印黑白块'''
        if self.is_alive:
            return '\033[0;37;47m \033[0m'
        return '\033[0;30;40m \033[0m'
        
class GameManager(object):
    def __init__(self):
        self.world = self.initWorld()
        self.initAliveCell()
     
    def initWorld(self):
        world = []
        for pos_x in range(WORLD_WIDE):
            column = []
            for pos_y in xrange(WORLD_HIGH):
                column.append(Cell((pos_x, pos_y)))
            world.append(column)
        return world
    
    def initAliveCell(self):
        from random import choice
        for high in self.world:
            for cell in high:
                if choice((0, 1)) == 0:
                    continue
                cell.setAlive()
    
    def getNeighbours(self, cell_obj):
        alive_count = 0
        for x_of in range(-1, 2):
            for y_of in range(-1, 2):
                c_x, c_y = cell_obj.x + x_of, cell_obj.y + y_of
                if ((c_x, c_y) == cell_obj.point) or \
                   (c_x < 0 or c_x >= WORLD_WIDE) or \
                   (c_y < 0 or c_y >= WORLD_HIGH):
                    '''排除自身和越界的点'''
                    continue
                if self.world[c_x][c_y].is_alive:
                    alive_count += 1
        return alive_count
              
    def display(self):
        print('='*WORLD_WIDE) # 等号分割线
        for index in range(WORLD_HIGH):
            print(''.join([high[index].displayLinux() for high in self.world]))
        print('='*WORLD_WIDE)

    def gameStart(self):
        while True:
            self.display()
            new_world = deepcopy(self.world)
            for p_x, wide_list in enumerate(self.world):
                for p_y, _ in enumerate(wide_list):
                    current_cell = new_world[p_x][p_y]
                    nei_num = self.getNeighbours(current_cell)
                    if nei_num == ALIVE_CON:
                        current_cell.setAlive()
                    elif nei_num != KEEP_CON:
                        current_cell.setDied()              
            self.world = new_world
            sleep(0.2)

if __name__ == '__main__':
    world = GameManager()
    try:
        world.gameStart()
    except KeyboardInterrupt:
        '''防止ctrl+c退出报错'''
        pass

Python编写康威生命游戏算法及完整源代码 这个游戏中,每个细胞有两种状态:存活或死亡。细胞的状态受到它周围八个细胞状态的影响,按照特定的规则进行演化。下面将使用Python语言实现康威生命游戏算法,并提供完整的源代码。运行代码后,会展示出随机初始化的50x50大小的棋盘。每次点击右上角的“运行”按钮,都会计算并展示出下一代细胞的状态,形成动画效果。通过此代码,我们可以体验到康威生命游戏带来的趣味和神奇。同时,这个算法也是一个优秀的编程练手项目,可以帮助提高Python编程能力。参数的值,可以改变棋盘的大小。参数的值,可以改变动画效果的速度。 阅读详情

相关推荐

python:实现康威生命游戏Game of Life(附完整源码)

python:实现康威生命游戏Game of Life(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 825

Python生命游戏代码

Python生命游戏代码

corn1949的博客 1060

康威生命游戏:用Python实现经典的Game of Life

函数是动画的更新函数,它会根据康威生命游戏的规则来更新细胞的状态。在每一帧中,我们遍历游戏区域中的每个细胞,计算其周围存活细胞的数量,并根据规则更新细胞的状态。希望本文能够帮助你理解和实现康威生命游戏,并通过观察游戏的演化过程来感受细胞自动机的魅力。每个细胞的状态仅依赖于其周围细胞的状态,但整个系统的演化过程却呈现出了各种有趣的模式和行为。然后,我们需要创建一个初始的随机状态矩阵,其中每个细胞的状态都是随机的。接下来,我们需要初始化游戏区域的状态,并创建动画。函数来更新游戏区域的状态,并返回更新后的图像。

CyberGenius的博客 562

Python 生命游戏(tkinter版)

生命游戏(Game of Life) 由剑桥大学约翰·何顿·康威设计的计算机程序。美国趣味数学大师马丁·加德纳(Martin Gardner,1914-2010)通过《科学美国人》杂志,将康威的生命游戏介绍给学术界之外的广大渎者,一时吸引了各行各业一大批人的兴趣,这时细胞自动机课题才吸引了科学家的注意。 【游戏概述】用一个二维表格表示“生存空间”,空间的每个方格中都可放置一个生命细胞,每个生命细胞只有两种状态:“生”或“死”...............

汉阳Hann's Home 7077

Python3 趣味系列题18----生命游戏

生命游戏(Game of Life )是英国数学家约翰·何顿·康威(John Horton Conway)在1970年发明的,由3条规则构成的二维细胞自动机。该游戏号称“零玩家且永不结束”。令人感到惋惜的是,2020年4月11日他因感染新冠肺炎(COVID-19)去世,数学“老顽童”就此陨落。 细胞自动机有一个通用的形式化的模型: 每个细胞的状态可以在一个有限的状态集合S中取值; 确立细胞邻居集合的半径R。也就是以这个细胞所在格子为中心,在距离它R远的所有格子构成了这个细胞的邻居集合; 细胞状态演化的规则

AnFany 672

几条简单规则,竟然能“创造世界”?——聊聊算法里的生命游戏(Game of Life)

摘要: 英国数学家John Conway在1970年提出的"生命游戏"(Game of Life)展示了简单规则如何产生复杂行为。该模型基于二维棋盘,每个格子仅有存活(1)或死亡(0)两种状态,通过四条简单规则演化:孤独死亡(邻居<2)、过度拥挤死亡(邻居>3)、正常存活(邻居2-3个)和繁殖(死细胞周围有3个活细胞)。Python实现的核心是遍历棋盘、统计邻居状态并应用规则。经典结构"滑翔机"甚至能模拟生命移动。这一模型揭示了复杂系统理论的核心思想——复

Echo_Wish 130

python自动游戏脚本_详解Python 实现元胞自动机中的生命游戏(Game of life)

简介细胞自动机(又称元胞自动机),名字虽然很深奥,但是它的行为却是非常美妙的。所有这些怎样实现的呢?我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有NN个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把33的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的...

weixin_39683858的博客 142

Python 实现生命游戏及进化模拟完整指南

生命模拟是进化计算的一个特定子集,模拟了自然界中所观察到的自然过程,例如粒子或鸟群的聚集方式。生命模拟只是用来探索和优化问题的模拟形式之一,还有很多其他形式的模拟,可以更好地建模各种过程,但它们都源于康威生命游戏 (Conway’s Game of Life)。在本节中,我们将介绍生命模拟的基本概念,并使用 Python 实现康威生命游戏。

盼小辉丶的博客 7万+

python游戏代码示例_python实现生命游戏的示例代码(Game of Life)

生命游戏的算法就不多解释了,百度一下介绍随处可见。因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依赖库,console输出的版本。# -*- coding: utf-8 -*-from time import sleepfrom copy import deepcopyWORLD_HIGH = 20...

weixin_39854326的博客 596

Agent 长期记忆三代演进:从 RAG 到 Memory Graph,mem0 / Zep / LangMem / Letta 深度横评

文章摘要 2026年,Agent长期记忆技术迎来关键突破,OpenAI、Anthropic等厂商通过扩大上下文窗口和推出记忆工具,推动长期记忆从工程补丁发展为独立技术层。本文通过分析三代记忆架构演进(RAG→结构化Fact→MemoryGraph)和四大方案(mem0/Zep/LangMem/Letta)的8维度横评,揭示以下核心观点: 长上下文≠长期记忆:128K上下文如同RAM,仍需硬盘式记忆层筛选和结构化存储,避免“Context Rot”导致的准确率下降。 三代架构演进: Gen1(RAG):向量检

LDZKKJ的博客 1453

在ubuntu上安装FastSufer【本机安装】

其实说是安装,只需要将文件下载并解压即可。推荐教程注意版本:在下面这个网址根据你的操作系统找到最新的版本安装。比如我的操作系统为Ubuntu 20.04.5,因此我安装ubuntu20-7.4.1的freesurfer打开~/.bashrc在~/.bashrc文件中添加以下三行关闭~/.bashrc更新~/.bashrc安装tcsh注意每次进入终端使用freesurfer时需要输入FREESURFER_HOME路径根据freesurfer的文件夹所在位置自己修改。

Xingwen_future的博客 2009

python拉丁猪文字游戏代码_python实现生命游戏的示例代码(Game of Life)

生命游戏的算法就不多解释了,百度一下介绍随处可见。因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依赖库,console输出的版本。# -*- coding: utf-8 -*-from time import sleepfrom copy import deepcopyWORLD_HIGH = 20...

weixin_39913422的博客 320

Verilog基础知识11(异步FIFO为什么使用格雷码(gray-code) )

需求说明:Verilog设计 内容       :第一部分 异步FIFO为什么使用格雷码                   第二部分 格雷码在异步FIFO中的使用 来自       :时间的诗 第一部分 异步FIFO为什么使用格雷码 原文:http://www.cnblogs.com/kxk_kxk/p/3931591.html 异步FIFO通

时间的诗 8889

细胞计算机生命游戏,详解Python 实现元胞自动机中的生命游戏(Game of life)

搜索热词简介细胞自动机(又称元胞自动机),名字虽然很深奥,但是它的行为却是非常美妙的。所有这些怎样实现的呢?我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有NN个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把33的9个格子构成的正方形看成一个基本单位的话,那么这个正方...

weixin_34088048的博客 519

DTW Barycenter Averaging(DBA)——平均序列求法

DBA该算法是用来求序列数据集SS的一致序列(平均序列)。由Franc-ois Petitjean提出的。目前,该方法求得的平均序列是最准确的。 假设一元组为S={s1,s2,⋯,sn}S={s1,s2,\cdots,sn},当SS中的元素为实数时,很容易求的SS的平均值: avg=s1+s2+⋯+snn(1) avg = \dfrac{s1 +s2+\cdots+sn}{n} \qquad\q

光怪陆离 1万+

[deprecated]第四章:TTM分析: 4.2.1 存储分配ttm_bo_validate功能实现分析

ttm_bo_validate是TTM框架中负责验证和调整BufferObject物理内存分配的核心函数,主要用于显存管理。该函数通过placement参数判断BO是否需要迁移或重新分配资源,完成内存分配、迁移及缓存策略调整等操作。实现流程包括资源释放、兼容性检查、迁移保护、新资源分配、迁移实现等步骤,支持多跳迁移和临时缓冲区。典型应用于显存溢出迁移、缓存策略调整、驱动初始化等场景,确保BO始终处于预期状态。

图形/计算GPU的驱动与虚拟化技术分享园地 849

python元胞转list_详解Python 实现元胞自动机中的生命游戏(Game of life)

简介细胞自动机(又称元胞自动机),名字虽然很深奥,但是它的行为却是非常美妙的。所有这些怎样实现的呢?我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有NN个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把33的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的...

weixin_39553458的博客 152

无刷电机FOC硬件电路设计

本文先对MIT无刷电机FOC硬件电路分析做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章软件程序在我另外一个博客【嵌入式–伺服电机】MIT无刷电机FOC驱动程序分析。

qq_35635374的博客 575

Python 实现 Game of life

团队内部组织现场编程活动,实现这个Game of life。现场没写出来,思路是有的。 结尾讨论时领导提到了数组,一下想到了用Numpy. 网址:https://bitstorm.org/gameoflife/ 代码: Python2.7 # -*- coding: utf-8 -*- import numpy as np import os class AAA(object):...

的专栏 1412

ABB机器人与S7-1200PLC实现位置坐标数据发送和接收的具体方法

ABB机器人与S7-1200PLC实现位置坐标数据发送和接收的具体方法

Robot_PLC_HMI_Automation 2918

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

王老师青少年编程 992

Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life

Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life,课后作业

m0_59562547的博客 613

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

康威生命周期游戏的实现-python

之前看到这个游戏挺有趣的,但关于用python来实现的资料不多,自己找了一下: 来源:#http://rosettacode.org/wiki/Conway's_Game_of_Life#Python 上面有各个版本的... 直接上源码吧:import random from collections import defaultdict printdead, printlive

sinat_17161487的专栏 2806

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

下一篇: Python斐波那契数列集锦(Fibonacci sequence)
其实我是一头猪
博客等级 码龄13年 4粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值