"""Game of Life simulation.
Conway's game of life is a classic cellular automation created in 1970 by John
Conway. https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
Exercises
1. Can you identify any Still Lifes, Oscillators, or Spaceships?
2. How can you make the simulation faster? Or bigger?
3. How would you modify the initial state?
4. Try changing the rules of life :)
"""from random import choice
from turtle import*from freegames import square
cells ={}definitialize():"""Randomly initialize the cells."""# 初始化for x inrange(-200,200,10):for y inrange(-200,200,10):
cells[x, y]=Falsefor x inrange(-100,100,10):for y inrange(-100,100,10):
cells[x, y]= choice([True,False])defstep():"""Compute one step in the Game of Life."""# 生活方式
neighbors ={}for x inrange(-190,190,10):for y inrange(-190,190,10):
count =-cells[x, y]for h in[-10,0,10]:for v in[-10,0,10]:
count += cells[x + h, y + v]
neighbors[x, y]= count
for cell, count in neighbors.items():if cells[cell]:if count <2or count >3:
cells[cell]=Falseelif count ==3:
cells[cell]=Truedefdraw():"""Draw all the squares."""
step()
clear()for(x, y), alive in cells.items():# print(x, y)
colo ='black'if alive else'red'
square(x, y,10, colo)
update()
ontimer(draw,100)# 模拟速度
setup(420,420,370,0)
hideturtle()
speed(10)
tracer(False)
initialize()
draw()
done()