Programme qui permet de générer une “infinité” de tableaux aléatoires à la Piet Mondrian.
Plusieurs améliorations sont envisageables comme :
- Faire varier légèrement les couleurs des pixels pour donner un effet de texture
- Lorsque 2 blocs contigus ont la même couleur, ne pas afficher de trait noir entre les 2
- Éviter qu’un même bloc puisse être choisi plusieurs fois ce qui est le cas dans le programme proposé
Quelques exemples :
from random import randint,seed from kandinsky import * from time import sleep def pos(nb, d): l =[] for i in range(nb): # espace entre traites >= 10px l.append(randint(1, d) * 10) # Ajout des bords extremes l.append(0) l.append(10*d+8) l.sort() return l def coul(n): # rouge - bleu - jaune - noir c = [[225,45,31],[19,4,109],[242,192,17],[12,12,12]] return color(c[n][0],c[n][1],c[n][2]) def rect(xmin, ymin, xmax, ymax, c): fill_rect(xmin,ymin,xmax-xmin,ymax-ymin,coul(c)) def mondrian(s): seed(s) # position lignes vert et horiz x = pos(randint(2,6), 31) y = pos(randint(2,5), 23) # nb de blocs en couleurs n = randint(8,20) for b in range(0,n): # choix du bloc i = randint(0,len(x)-2) j = randint(0,len(y)-2) # choix couleur c = randint(0,3) rect(x[i],y[j],x[i+1],y[j+1],c) # Traits verticaux for i in x: rect(i,0,i+2,240,3) # Traits horizontaux for i in y: rect(0,i,320,i+2,3) while True: n = randint(10,100000) mondrian(n) sleep(.3) fill_rect(0,0,320,222,(255,255,255))