Conway的生命游戏

文章目录

主要内容

一.Conway的“生命游戏”

1.玩法

Conway的“生命游戏”是细胞自动机的一个例子:一组规则控制由离散细胞组成的区域的行为。在实践中,它会创建一个漂亮的动画以供观看。你可以用方块作为细胞在方格纸上绘制每个步骤。实心方块是“活”的,空心方块是“死”的。 如果一个活的方块与两个或3个活的方块为邻,它在下一步将还是活的。如果一个死的方块正 好有3个活的邻居,那么下一步它就是活的。所有其他方块在下一步都会死亡或保持死亡。

代码如下(示例):
#Conway's Game of Life
import random,time,copy
WIDTH=60
HEIGHT=20#Create a list of list for the cells:
nextCells=[]
for x in range(WIDTH):column=[] #Create a new column.for y in range(HEIGHT):if random.randint(0,1)==0:column.append('#') #Add a living cell.else:column.append(' ') #Add a dead cell.nextCells.append(column) #nextCells is a list of column lists.while True: #Main program loop.print('\n\n\n\n\n') #Separate eath step with newlines.currentCells=copy.deepcopy(nextCells)#print currentCells on the screen:for y in range(HEIGHT):for x in range(WIDTH):print(currentCells[x][y], end='') #print the # or space.print() #print a newline at the end of the row.#Calculate the next step's cells based on current step's cell:
for x in range(WIDTH):for y in range(HEIGHT):#get neighboring coordinates:#'% WIDTH' ensures leftCoord is always between 0 and WIDTH -1leftCoord=(x-1)%WIDTHrightCoord=(x+1)%WIDTHaboveCoord=(y-1)%HEIGHTbelowCoord=(y+1)%HEIGHT#Count number of living neighbors:numNeighbors=0if currentCells[leftCoord][aboveCoord]=='#':numNeighbors+=1 #top-left neighbor is alive.if currentCells[x][aboveCoord]=='#':numNeighbors+=1 #top neighbor is alive.if currentCells[rightCoord][aboveCoord]=='#':numNeighbors+=1 #top-right neighbor is alive.if currentCells[leftCoord][y]=='#':numNeighbors+=1 #left neighbor is alive.if currentCells[rightCoord][y]=='#':numNeighbors+=1 #right neighbor is alive.if currentCells[leftCoord][belowCoord]=='#':numNeighbors+=1 #bottom-left neighbor is alive.if currentCells[x][belowCoord]=='#':numNeighbors+=1 #bottom neighbor is alive.if currentCells[rightCoord][belowCoord]=='#':numNeighbors+=1 #bottom-right neighbor is alive.#set cell based on Conway's game of life rules:if currentCells[x][y]=='#' and (numNeighbors==2 or numNeighbors==3):#living cells with 2 or 3 neighbors stay alive:nextCells[x][y]='#'elif currentCells[x][y]=='' and numNeighbors==3:#dead cells with 3 neighbors become alive:nextCells[x][y]='#'else:#everything else dies or stays dead:nextCells[x][y]=''time.sleep(1) #add a 1-second pause to reduse flickering.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

以上是今天要讲的内容,练习了Conway生命小游戏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413636.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【办公类-21-02】20240118育婴员操作题word打印2.0

作品展示 把12页一套的操作题批量制作10份,便于打印 背景需求 将昨天整理的育婴师操作题共享, 因为题目里面有大量的红蓝颜色文字,中大班办公室都是黑白单面手动翻页打印。只有我待的教务室办公室有彩色打印机打印(可以自动双面…

Gitlab添加ssh-key报500错误处理

Gitlab添加ssh-key报500错误 一、查看日志 发现Errno::Enoent(No such file or derectory -ssh): rootasu1:/home/caixin# tail -f /var/log/gitlab/gitlab-rails/production.log二、分析 根据日志提示,好像是缺少文件或目录,后面有个ssh,难首是依赖s…

CVE重要通用漏洞复现java php

在进行漏洞复现之前我们需要在linux虚拟机上进行docker的安装 我不喜欢win上安因为不知道为什么总是和我的vmware冲突 然后我的kali内核版本太低 我需要重新安装一个新的linux 并且配置网络 我相信这会话费我不少时间 查看版本 uname -a 需要5.5或以上的版本 看错了浪…

Leetcode2182. 构造限制重复的字符串

Every day a Leetcode 题目来源:2182. 构造限制重复的字符串 解法1:贪心 双指针 我们先用一个长度为 26 的数组 cnt 统计字符串 s 中每个字符出现的次数,然后从大到小枚举字母表的第 i 个字母,每次取出最多 min⁡(cnt[i], re…

React配置src根目录@

文章目录 1.打开webpack配置文件2.配置webpack 1.打开webpack配置文件 yarn eject or npm run eject 如果报错了记得提前 git commit一下 2.配置webpack 找到 webpack.config.js 文件在 webpack.config.js 文件中找到 alias 配置在alias里添加: path.resolve(src) , 或者 : pa…

密码学学习笔记(二十四):TCP/IP协议栈

TCP/IP协议栈的基础结构包括应用层、传输层、网络层、数据链路层和物理层。 应用层 应用层位于TCP/IP协议栈的最顶层,是用户与网络通信的接口。这一层包括了各种高级应用协议,如HTTP(用于网页浏览)、FTP(用于文件传输…

Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)

目录 1. GUIStyle1.1 参数总览1.2 样式代码 2. GUISkin2.1 参数总览2.2 创建自定义Skin 3. EditorStyles2.1 参数总览1.2 反射获取所有EditorStyles 1. GUIStyle GUIStyle是一个用于定制GUI控件样式的类,它包含了控件的外观属性,如字体、颜色、背景等。…

html + css + js简单的项目

以下内容直接复制粘贴就能运行 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

傲空间私有部署 Linux 指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。Install Docker Engine on Ubu…

精品量化公式——“大资金雷达”,量价信号组合,精准探底!不漂移!

不多说&#xff0c;直接上效果如图&#xff1a; ► 日线表现 代码评估 技术指标代码评估&#xff1a; VA&#xff08;Volume Accumulation&#xff09;&#xff1a;这个公式计算了成交量的累积&#xff0c;如果当前收盘价高于前一天的收盘价&#xff0c;则累积成交量为正值&a…

Android Dialog setCanceledOnTouchOutside失效,点击dialog外面不消失

前言&#xff1a;有一个需求需要点击dialog外面要消失&#xff0c;本来以为很简单结果设置了一直未生效 setCanceledOnTouchOutside(true); 问了半天chat-gpt4结果给的答案都不明显 查看代码发现设置了style&#xff0c;于是尝试去除这个style&#xff0c;结果点击setCancele…