模块:pygame

import pygame,sys,time,random
from pygame.locals import * """Color"""
WHITE = (255,255,255)
RED = (255,0,0)
GREEN = (0,255,0)
"""Color""" def Neighbor(x,y):#返回周围存活细胞数
alive = 0
around = ((x+1,y+1),(x+1,y),(x+1,y-1),(x-1,y),(x-1,y+1),(x-1,y-1),(x,y-1),(x,y+1),)
for a in around:
color = WIN.get_at(a)
if color == RED:
alive += 1
return alive def Init():
so = 200000
for number in range(0,so):
pygame.draw.rect(WIN,RED,(random.randint(0,SIZE[0]),random.randint(0,SIZE[1]),1,1))
print('so = ',so) def rule(i,j):
if Neighbor(i,j) < 2:
return False
elif WIN.get_at((i,j)) == RED:
if Neighbor(i,j) == 2 :
return True
elif Neighbor(i,j) == 3:
return True
elif Neighbor(i,j) > 3:
return False
elif Neighbor(i,j) == 3:
return True pygame.init() SIZE = (800,800)
WIN = pygame.display.set_mode(SIZE)
pygame.display.set_caption("game of life") WIN.fill(WHITE)
Init()
gen = 0
while True:
Next_alive = []
Next_dead = []
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit(0)
x = SIZE[0]
y = SIZE[1]
for i in range(10,x-10):
for j in range(10,y-10):
if rule(i,j):
Next_alive.append((i,j))
WIN.fill(WHITE)
print('Alive =',len(list(set(Next_alive)))) for x,y in list(set(Next_alive)):
pygame.draw.rect(WIN,RED,(x,y,1,1))
# for x,y in Next_dead:
# pygame.draw.rect(WIN,GREEN,(x,y,1,1))
gen += 1
print(gen) pygame.display.update()

该代码的实现策略是遍历所有像素点,判断每个像素点下一代的状态,然后每个像素点状态写入数组,根据数组更新画面

这个方法有点暴力,像素过多的话会大量消耗资源,很慢

最新文章

  1. 正定矩阵(positive definite matrix)
  2. innodb必收藏
  3. IIS错误500.21
  4. centos 7 下modelsim10.2c安装教程
  5. Android系统Surface机制的SurfaceFlinger服务的启动过程分析
  6. Ubuntu server 14.04 交叉编译Unicorn-engine
  7. 【外文翻译】使用Timer类去调度任务 ——java
  8. Catalog Service - 解析微软微服务架构eShopOnContainers(三)
  9. [置顶] webapi token、参数签名是如何生成的
  10. Django视图层
  11. java实现将包含多个&lt;REC&gt;的文件拆成若干只包含一个&lt;REC&gt;的文件
  12. 结对项目junit测试用例
  13. java keytool证书工具使用小结【转】
  14. 微信小程序快速移植支付宝小程序
  15. 一个JS引发的血案
  16. MFC函数——CWnd::OnCreate
  17. Python + Robotframework + Appium 之APP自动化测试实践(二)
  18. SpringBoot配置文件注入值数据校验
  19. git删除所有提交历史记录
  20. split命令详解

热门文章

  1. MailKit和MimeKit的.NET基础邮件服务
  2. [luoguP4302] [SCOI2003] 字符串折叠 解题报告(区间DP)
  3. Android--ViewPager-Fragment
  4. Scala基础简述
  5. 解析UML用例图中include与extend的区别
  6. SqlServer 删除日志
  7. iOS-RAC学习笔记(一)——RACStream
  8. javascript上下文this
  9. jQuery实现tab标签切换效果
  10. js实现观察者模式风格替换