用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()

用pygame做一个简单的python小游戏---生命游戏相关推荐

  1. 用pygame做一个简单的python小游戏---贪吃蛇

    用pygame做一个简单的python小游戏-贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/artic ...

  2. 用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习. 玩法:每次点击鼠标时,会以鼠标 ...

  3. python七彩同心圆_用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏---七彩同心圆 用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便 ...

  4. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

  5. 做一个简单的java小游戏--贪吃蛇

    做一个简单的java小游戏–贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/article/detail ...

  6. pygame做一个简单的打字游戏

    pygame做一个简单的打字游戏 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- import pygame from pygame ...

  7. 做一个简单的java小游戏--单机版五子棋

    做一个简单的java小游戏–单机版五子棋 学了java有一段时间了,今天就来搞一个简单的单机版五子棋游戏. 实现功能:那必须能进行基础的输赢判断.还有重新开始的功能,悔棋的功能,先手设置的功能和退出的 ...

  8. 使用ANTLR做一个简单的Python SQL语法解析器 - 推酷

    使用ANTLR做一个简单的Python SQL语法解析器 - 推酷 使用ANTLR做一个简单的Python SQL语法解析器 - 推酷 posted on 2016-11-14 13:11 lexus ...

  9. 用Python做一个简单的表白小弹窗

    有小伙伴喜欢研究编程语言做小弹窗的吗,既有趣又可以装13哦. 下面就给小伙伴演示一个简单的表白小弹窗. from tkinter import * from tkinter import messag ...

最新文章

  1. goldengate 12c 12.2 新特性(updated)
  2. Zepto.js简介
  3. 第10章:Shell基础
  4. 【js】鼠标跟随效果
  5. 【代码备份】ORACLE数据库表同步DBLINK
  6. c - 比较字符串的大小
  7. Struts2学习笔记(十八) 防止表单重复提交
  8. 创建SpringBoot项目的两种姿势
  9. Convert your single instance to 10g RAC by manual
  10. [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!...
  11. iptv网关服务器系统 自己刷,iptv网关服务器镜像系统
  12. php编辑日历,【PHP】制作日历
  13. Mysql Mac版下载安装教程
  14. android packagemanager源码,Android源码个个击破之PackageManager
  15. elment ui 表格中输入验证
  16. 多源异构传感器时空校准
  17. jQuery中的基本选择器,id,class,元素,通用
  18. Windows 下定制黑苹果 USB 驱动教程
  19. 基于Hadoop的电影推荐系统
  20. TIA博途V17中ProDiag功能的使用方法示例(三)文本列表

热门文章

  1. 【已解决】MAC OS上teamviewer商业用途中断连接
  2. 深度学习训练营之灵笼人物识别
  3. 7-6 福到了 (15分)
  4. 7-111 福到了 (15 分)(c语言)
  5. txt改成java没反应_为什么我的TXT文档后戳换成java就打不开呢
  6. Ultra Light Waterproof Jacket 2014 Warm down Coats Cheap
  7. 英语语法篇 - 时态
  8. 你知道小米手机便签如何导入录音和视频文件吗?
  9. 通过Python来调用Chrom浏览器,进入设定网页
  10. Gradle 下载及代理设置