from turtle import * from kandinsky import fill_rect,get_pixel,draw_string from math import cos,sin,exp,pi from time import sleep from random import random speed(0) hideturtle() # Produit matrice * vecteur def prod(m,v): r = [] for l in range(4): s = 0 for c in range(4): s += m[l][c] * v[c] r.append(s) return r def affiche(t,x,y): for i,c in enumerate(t): # vert ou jaune coul = (0,255,0) if random() < .5 else (255,255,0) draw_string(c, x + 10 * i, y, coul, (0,0,0)) # Position de la camera M = [[1,0,0,0],\ [0,.28,-.96,0],\ [0,.96,.28,0],\ [0,0,0,1]] # ecran noir fill_rect(0,0,320,222,(0,0,0)) for r in range(42,1,-1): # rayon des cercles d = 4 * exp(r / 10) * sin(r * 3 * pi / 100) # sapin epais et sol plus fin pensize(3 if d > 0 else 2) # nb de points par cercle p = 36 for k in range(p): # coordonnees x,y sur le cercle x, y = d * cos(k * 2 * pi / p), d * sin(k * 2 * pi /p) # w sert pour les translations z, w = -110 + 5 * r, 1 # coordonnees sur ecran en regardant depuis la camera [xv,yv,zv,wv] = prod(M,[x,y,z,w]) # si point est loin alors plus sombre c = min(255,220 - zv) v = get_pixel(int(xv+160),int(110 - yv))[0] # On evite de mettre un point sombre sur un point plus clair if v < c: penup() goto(xv,yv) pendown() # sapin si d > 0 sinon sol if d > 0: pencolor(0, c, 0) else: pencolor(c, c, 0) goto(xv, yv) while True: affiche("BONNES",40,40) affiche("FETES !",220,100) sleep(.1)