import pygame
from random import randint

couleur_1 = (21,39,57) # couleur de fond de l'image au format rgb
couleur_2 = [ (randint(0,255),randint(0,255),randint(0,255))  for i in range(6) ]    # couleur des carrés au format rgb
iterations = 6

largeur , hauteur = pow(3,iterations) , pow(3,iterations)
carres_liste = [ [0.0,0.0,largeur,hauteur] ]
passages = 0

pygame.init()
screen = pygame.display.set_mode((int(largeur),int(hauteur)))
pygame.display.set_caption("Tapis de Sierpinsky")

buffer = pygame.Surface((int(largeur),int(hauteur))).convert()
buffer.fill(couleur_1)

while iterations > passages:
    liste = []
    for element in carres_liste:
        for xx in range(3):
            for yy in range(3):
                w , h = int((element[2]-element[0])/3) , int((element[3]-element[1])/3)
                x , y = int(w*xx + element[0]) , int(h*yy + element[1])
                
                if xx == 1 and yy == 1:
                    buffer.fill(couleur_2[passages],[x,y,w,h])
                else:
                    liste.append([x,y,x+w,y+h])
        
    carres_liste = liste
    passages += 1

screen.blit(buffer,[0,0])
pygame.display.flip()

pygame.image.save(buffer,'tapis_de_sierpinski.png')

loop = True
while loop:
  for event in pygame.event.get():
    if event.type == pygame.QUIT: # Pour quitter l'application en fermant la fenêtre
      loop = False
      
pygame.quit()

