4 dessins d’arbres de Noël (sur le simulateur il n’y a qu’un arbre qui s’affiche mais vous en aurez 4 différents en mettant le programme sur votre machine)
Découvrez ma chaine YouTube (Python, JavaScript, calculatrices…)
from turtle import * from math import * from time import sleep from random import randint, random from kandinsky import fill_rect def T(u,a1,a2,b1,b2): return int((b2-b1)/(a2-a1)*(u-a1)+b1) def f1(x): return -100 def f2(x): return 80 + 9 * x / 4 def trait(f,p): xd = -80 while xd < 80: ps = randint(4,7) penup() x,y = xd, f(xd) goto(x, y) pendown() pensize(ps) while y < 80 - 9 * x / 4: fd(2) (x, y) = position() xd += ps + p NB = 10 svg = ['M',166,38,'C',170,38,178,40,174,42,169,44,160,43,163,46,166,48,171,47,180,49,178,52,160,53,159,56,159,59,175,58,189,59,176,63,159,62,151,69,156,74,182,73,208,71,199,77,131,81,139,83,147,85,202,87,222,86,210,89,116,106,116,106,116,106,226,100,233,102,222,107,109,117,99,119,124,120,231,115,244,115,226,123,111,134,100,140,128,138,237,136,250,137,242,149,82,153,65,167,103,166,277,151,288,160,261,170,75,183,60,193,83,198,128,190,145,204,'M',156,38,'C',156,38,164,16,165,12,170,16,176,24,177,34,169,28,159,28,150,23,162,21,169,20,183,18,172,24,156,38,156,38,'Z'] def move(x,y): goto(x-160,110-y) def coord(a,b,c,d,t): return a*(1-t)**3+3*b*t*(1-t)**2+3*c*t*t*(1-t)+d*t**3 def bezier(l): pendown() t = 0 for i in range(NB+1): x = coord(l[0],l[2],l[4],l[6],t) y = coord(l[1],l[3],l[5],l[7],t) move(x,y) t += 1/NB def tree0(): i = 0 color(30,140,0) tt = len(svg) while i<tt: pensize(1 + int(12 * i / tt) if i < 120 else 2) if svg[i] == "M": l = [svg[i+1],svg[i+2]] penup() move(l[0], l[1]) i += 3 elif svg[i] == "Z" or svg[i] == "C": i += 1 else: for j in range(6): l.append(svg[i+j]) bezier(l) l = [svg[i+4],svg[i+5]] i += 6 hideturtle() def tree1(): setheading(30) trait(f1,12) trait(f2,1) penup() goto(0,92) def tree2(): xd = -75 while xd < 75: h = 80-9*abs(xd)/4 penup() x,y = xd,-100 goto(x,y) pendown() a = T(abs(x),0,75,90,75) if x > 0: a = 180-a setheading(a) while y < h: pensize(T(y,-100,h,7,1)) fd(1) (x,y) = position() xd += 5 penup() goto(0,90) fill_rect(150,210,20,10,(30,140,0)) def tree3(): k=.4 for a in range(173): x=k*a*cos(21.6*a) pendown() if a else penup() goto(x,75-a) if a>158: k=.1 penup() goto(0,85) while True: for i in sorted(range(4), key=lambda x: random()): reset() pencolor(30,140,0) eval("tree"+str(i)+"()") sleep(1)