##### Les six lignes : Pour i de 0 à 5 faire A(5 * (-1)**i) L D A(1) B G Fin Pour ##### La spirale : Pour i de 1 à 12 faire A((i+1)/2) G Fin Pour ##### Retour maison : (x, y) <- pos() Tant que orientation() != "E" faire D Fin Tant que R(x) G R(y) ##### Orientation : Fonction ori() b <- etat_crayon() L (x, y) <- pos() A(1) (z, t) <- pos() R(1) Si b alors B Fin Si # Version lourde mais facile, optimisations expliquées en classe Si x > z Alors Retourner "O" Fin Si Si x < z Alors Retourner "E" Fin Si Si y > t Alors Retourner "S" Fin Si Retourner "N" Fin Fonction ##### Les m lignes de taille n espacées de k : Fonction lignes(m, n, k) Si m = 0 Alors Retourner Fin Si A(n) R(n) L D A(k) B G # Version courte et simple qui repasse deux fois sur chaque ligne. lignes(m-1, n, k) Fin Fonction ##### La spirale de taille n : Fonction spirale(n) Fonction auxiliaire(i) Si i > n Alors Retourner Fin Si A((i+1)/2) G auxiliaire(i+1) Fin Fonction auxiliaire(1) Fin Fonction ##### Le flocon à profondeur n de taille lgr : Fonction flocon(n, lgr) # On commence avec une orientation vers l'Est Si n = 0 Alors A(lgr) Sinon flocon(n-1, lgr/3) G(60) flocon(n-1, lgr/3) D(120) flocon(n-1, lgr/3) G(60) flocon(n-1, lgr/3) Fin Si Fin Fonction Fonction flocon_total(n, lgr) Pour i de 1 à 3 faire flocon(n, lgr) D(120) Fin Pour Fin Fonction