用pygame做一个简单的python小游戏---生命游戏

article/2025/10/6 10:40:53

用pygame做一个简单的python小游戏—生命游戏

生命游戏(Game of Life)

生命游戏(Game of Life)是剑桥大学约翰·何顿·康威(John Horton Conway)教授设计的一个计算机程序。这个计算机程序是因为它模拟和显示的图像看起来颇似生命的出生和繁衍过程而得名为“生命游戏”。同时生命游戏也是一个二维的元胞自动机。

生命游戏是一个二维网格游戏,这个网格中每个方格居住着一个活着或死了的细胞。一个细胞在下一个时刻的生死取决于相邻8个方格中活着或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因为孤单而死去。在游戏初始阶段,系统会随机产生一部分细胞。由这些初始细胞进行繁衍。

规则:

  • 若细胞为死亡状态,其周围若存在3个存活细胞,则繁衍后该细胞变成存活状态
  • 若细胞为存活状态,其周围若低于2个存活细胞,则繁衍后该细胞变成死亡状态
  • 若细胞为存活状态,其周围若存在2个或3个存活细胞,则繁衍后该细胞状态保持不变
  • 若细胞为存活状态,其周围若高于3个存活细胞,则繁衍后该细胞变成死亡状态

效果图展示:
在这里插入图片描述

附上代码:

import pygame, sys, time, random
width=102   #面板的宽度(外围有一层墙)
high=102  #面板的高度(外围有一层墙)
size=6   #设置绘制的单方格大小def initialization(arr):   #初始化for i in range(high):for j in range(width):ran=random.random()if ran>0.9:arr[i][j]=1else:passreturn arrdef nextmultiply(arr):    #下一代繁衍newarr = [([0] * width) for n in range(high)]for i in range(high):for j in range(width):num=0if (i==0 or i==high-1) or (j==0 or j==width-1):newarr[i][j]=0else:num=arr[i-1][j-1]+arr[i-1][j]+arr[i-1][j+1]+arr[i][j-1]+arr[i][j+1]+arr[i+1][j-1]+arr[i+1][j]+arr[i+1][j+1]if arr[i][j]==0:  #若原细胞为死亡状态if num==3:newarr[i][j]=1else:    #若原细胞为存活状态if num==2 or num==3:newarr[i][j]=1else:newarr[i][j]=0return newarrif __name__ == '__main__':color_white = pygame.Color(255, 255, 255)color_LightSkyBlue = pygame.Color(135,206,250)color_black = pygame.Color(0, 0, 0)pygame.init()screen = pygame.display.set_mode((width*size, high*size))screen.fill(color_white)pygame.display.set_caption("生命游戏Game of Life")arr = [([0] * width) for i in range(high)]  # 创建一个二维数组arr=initialization(arr)while(True):screen.fill(color_white)time.sleep(0.5)for i in range(high):for j in range(width):if arr[i][j]==1:pygame.draw.rect(screen, color_black, (i * size, j * size, size, size))elif (i==0 or i==high-1) or (j==0 or j==width-1):pygame.draw.rect(screen, color_LightSkyBlue, (i * size, j * size, size, size))else:passfor event in pygame.event.get():  # 监听器if event.type == pygame.QUIT:sys.exit()arr = nextmultiply(arr)pygame.display.update()

http://chatgpt.dhexx.cn/article/5KmaTYFP.shtml

相关文章

python游戏库pygame经典教程

目录 一.Pygame程序基本搭建过程 1.初始化化程序 2.创建Surface对象 3.事件监听 4.游戏循环 二.Pygame Display显示模块详解 1.将Surface对象粘贴至主窗口上 2.设置窗口主窗口 3.填充主窗口背景,参数值RGB 4.设置窗口标题 5.更新屏幕内容 6.pygame.display其他方…

Python游戏编程(Pygame)

安装Pygame pip install pygameC:\Users> pip install pygame Collecting pygame Downloading https://files.pythonhosted.org/packages/3e/f5/feabd88a2856ec86166a897b62bfad828bfe7a94a27cbd7ebf07fd 70399/pygame-1.9.4-cp37-cp37m…

Python、PyGame游戏项目

英文打字游戏项目 项目简介 英文打字小游戏,友好的多界面交互,界面整洁、美观,可动态调节游戏等级难度,可配置游戏信息。 有游戏分数,游戏时间,拼写特效,背景音乐,不同游戏等级的历…

手把手教你用python写游戏

引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,项目来自《Python编程从入门到实践》&…

分享30个有趣的 Python小游戏,我能玩一天

大家好,今天给大家带来30个 Python 小游戏,喜欢记得点赞、一定要收藏,完整版代码,文末获取 文章目录 有手就行1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠 简简单单6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇 普普通通…

Python游戏汇总:三十个pygame游戏代码【附源码免费分享】

导语 哈喽哈喽!我是木木子! ​ 每日更新游戏不知不觉已经很多啦~ Python兴趣始于游戏,所以更新的文章中基本上都是游戏代码居多。 然后我疯狂的找各种小游戏、小脚本、小项目的教程源码什么的,然后自己进行学习、制作、修改等…

Python游戏汇总:三十个pygame游戏代码

提示:爱学习哦,不要沉迷游戏,平时打发一下无聊时间最好啦 正文 欢迎阅读: 1.python21点小游戏。2.Python笨鸟先飞小游戏。3.python绘制满天星小游戏。4.吃豆豆小游戏项目。 5.python忍者奔跑小游戏。6.python迷宫小游戏。7.pyt…

8个Python小游戏,可以上班摸鱼玩一天

1、吃金币 源码分享: import os import cfg import sys import pygame import random from modules import *游戏初始化 def initGame():# 初始化pygame, 设置展示窗口pygame.init()screen pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption(ca…

30个Python小游戏,小白练手,我都能玩一天【内附源码】

今天给大家带来30个py小游戏,一定要收藏! 全部源码都整理好了,在文章最底部~ 有手就行 1、吃金币 【有手就行系列不介绍玩法了附源码】 源码分享: import os import cfg import sys import pygame import random from module…

迷你项目python

迷你项目python 骰子模拟器石头剪刀布随机密码生成器 骰子模拟器 目的:创建一个程序来模拟掷骰子。 提示:当用户询问时,使用random模块生成一个1到6之间的数字。 import random while int(input(press 1 to roll the dice or 0 to exit:\n…

23款小游戏-Python一行代码就能玩

给IT入门加星标,提升编程技能 free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装 pip?install?freegamesPython包括随您的安装一起分发的大量标准库。标准库有一个称为Turtle的模块,这是一种向普通人…

Python游戏开发实战:飞机大战(含代码)

【课程简介】 玩游戏老是输,不如试试自己做个游戏当欧皇。本次课程教大家如何通过pygame模块实现游戏, 以飞机大战为例,讲解游戏的基本机制, 让大家掌握游戏实现原理 ,触类旁通更多Python游戏开发。 【课程推荐】Python游戏开发实战&#x…

【Python游戏】Python各大游戏合集:超级玛丽、天天酷跑、我的世界、魔塔、雷霆战机 | 附带源码

相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加P…

13个Python小游戏(含源码),开始敲起来,玩吧!

来源丨网络 经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个P…

30个Python小游戏,上班摸鱼我能玩一天【内附源码】

大家好,我是辣条。 今天给大家带来30个py小游戏,一定要收藏! 目录 有手就行 1、吃金币 2、打乒乓 3、滑雪 4、并夕夕版飞机大战 5、打地鼠 简简单单 6、小恐龙 7、消消乐 8、俄罗斯方块 9、贪吃蛇 普普通通 10、24点小游戏 1…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts

在一台服务器中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用。 之前运行一直没有问题(最多的时候有23个MySQL实例同时运行),后来新配置了一台服务器,启动其对应的实例时失败。 部分错误日志如下: …… 140505 16:05:59 …

linux系统中socket错误码:EINTR和EAGAIN的处理

目录 人为重启被中断的系统调用 安装信号时设置 SA_RESTART属性 忽略信号 永远阻塞的系统调用,被信号中断,导致其不继续等待,转而去执行signal_handler 1、什么是慢系统调用? 该术语适用于那些可能永远阻塞的系统调用。永远阻…

iosetup mysql_InnoDB: Error: io_setup() failed with EAGAIN

最近安装好了MySQL之后,在启动MySQL服务时无法正常启动MySQL。提示没有更新/var/lib/mfailedZDB.pid并退出。该MySQL与Oracle位于同一主机。有些内核参数进行过调整应该也是使用与MySQL。下面是该问题的具体描述。 1、故障现象SZDB:/usr/src/mysql_src # /etc/init.…

blocking socket 读写返回 EAGAIN

非阻塞的 socket 读写操作返回 EAGAIN,表示当前已经读完内核缓冲区或者写满内核缓冲区,需要等待下一次 select/poll/epoll 事件到来时再操作。 对于阻塞的 socket 读写操作,如果内核缓冲区是空,read 将一直阻塞;如果不…

【Linux Socket C++】为什么IO复用需要用到非阻塞IO?EAGAIN的简单介绍与应用

目录 为什么IO复用需要非阻塞的IO EAGAIN的介绍 EAGAIN的应用 为什么IO复用需要非阻塞的IO 我们可以先看一下官方的回答: 在Linux命令行输入:man 2 select 找到[BUGS],如下: 官方给予的回答是这样的: Under Lin…