from kandinsky import * from random import * from math import * h = 100 w = 100 B = (3,) S = (2,3) s = 2 b = ['\x00']*(w*h) d = ['\x00']*(w*h) s -= 1 for i in range(w*h): b[i] = round((uniform(0,1)**2)*s) def tick(): global b,d for x in range(w): for y in range(h): i = x+y*w l = b[i] v = 0 if l > 0 and l < s: d[i] = v = l-1 else: n = 0 for dx in range(-1,2): for dy in range(-1,2): if dx == dy and dy == 0: continue n += b[(x+dx)%w+((y+dy)%h)*w]>0 k = n in (S if l else B) d[i] = v = s if k else (0 if l == 0 else s-1) if v != l: v = int(v/s*255) set_pixel(x,y,(v,v,v)) b,d = d,b for x in range(w): for y in range(h): i = x+y*w v = int(b[i]*255/s) set_pixel(x,y,(v,v,v)) fill_rect(0,h,320,222-h,(0,0,0)) fill_rect(w,0,320-w,h,(0,0,0)) while True: tick()