Ma playlist consacrée à la NUMWORKS
import turtle from math import * from kandinsky import * from random import choice, random from time import sleep fill_rect(0,0,320,222,(0,0,0)) nmax, xs, ys, zs = 60, 1, 2.8, 1.3 startFrom, dz = 0, 400 def getX(i, z, sign): return int(160+sign * i * cos(i) * z * xs) def getY(i, z): return int(10+i * z * ys) class spirale: def __init__(self,fg, bg, isLeft, yloc): self.sign = -2 * isLeft + 1 self.yloc = yloc if yloc > 0 else 1 if isLeft: (self.bg, self.fg) = (bg, fg) else: (self.bg, self.fg) = (fg, bg) def show(self, i, h): zoff = i * sin(i) z = dz / (dz - self.sign * zoff * zs) x = getX(i, z, self.sign) y = getY(i * self.yloc + h * cos(800*i) , z) c = self.fg if zoff + self.sign * pi / 4 < 0 else self.bg if sum(get_pixel(x,y)) == 0 or h == 1: s = 1 + int(3 * i) % 2 fill_rect(x, y, s, s, c) def aff(spiral, h = 0): i = -startFrom while i < nmax + startFrom: if i >= 0 and i <= nmax: spiral.show(i, h) i += 0.08 rouge = spirale((255,0,0), (68,0,0), True, 1) cyan = spirale((0,255,204), (0, 86, 51), False, 1) for v in rouge,cyan: aff(v) while True: rvb = choice([(1,1,0),(0,1,1),(0,1,0),(0,0,1),(1,0,1)]) c1 = tuple(255 * rvb[i] for i in rvb) c2 = tuple(70 * rvb[i] for i in rvb) decos = spirale(c1, c2, True, 1) aff(decos, 1) sleep(random())