from turtle import *
from random import *
#couleurs
white=[1,1,1]
black=[0,0,0]
red=[1,0,0]
green=[0,1,0]
blue=[0,0,1]
yellow=[1,1,0]
cyan=[0,1,1]
purple=[1,0,1]
brown_tete_renne=[200/255,140/255,140/255]
brown_liste=[170/255,60/255,60/255]
brown_traineau=[160/255,100/255,100/255]
darkbrown=[140/255,100/255,100/255]
lightbrown=[220/255,150/255,150/255]
brown=[140/255,40/255,40/255]
golden=[200/255,200/255,0]

hideturtle()
taille_initiale=1
l_liste=215
h_liste=150

def tracer(lettre,x,y):
  global taille_initiale
  if lettre == "a":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(4)
    rt(130)
    for i in range(30):
      fd(1)
      lt(18)
    setheading(-90)
    fd(-3)
    fd(4)
    for i in range(4):
      lt(18)
      fd(1)
  if lettre == "b":
    penup()
    goto(x,y)
    pendown()
    setheading(-10)
    for i in range(10):
      lt(20-2*i)
      fd(2)
    for i in range(5):
      lt(30)
      fd(1)
    for i in range(9):
      fd(2)
      lt(2*i+4)
    for i in range(4):
      lt(25)
      fd(1)
    rt(95)
    fd(2)
  if lettre == "c":
    penup()
    goto(x,y)
    setheading(30) # vers la droite
    pendown()
    fd(5)
    lt(75)
    for i in range(8):
      fd(1)
      rt(18)
    rt(162)
    for i in range(15):
      fd(1)
      lt(18)
  if lettre == "d":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(4)
    rt(130)
    for i in range(30):
      fd(1)
      lt(18)
    setheading(-90)
    fd(-10)
    fd(11)
    for i in range(4):
      lt(18)
      fd(1)
  if lettre == "e":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(5)
    rt(90)
    for i in range(10):
      fd(1)
      lt(15)
    lt(30)
    for i in range(10):
      lt(25)
      fd(2)
  if lettre == "E": # e accent aigu
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(5)
    rt(90)
    for i in range(10):
      fd(1)
      lt(15)
    lt(30)
    for i in range(10):
      lt(25)
      fd(2)
    penup()
    goto(x+5,y+12)
    pendown()
    setheading(45)
    fd(5)
  if lettre == "W": # e trema
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(5)
    rt(90)
    for i in range(10):
      fd(1)
      lt(15)
    lt(30)
    for i in range(10):
      lt(25)
      fd(2)
    penup()
    goto(x+2,y+13)
    pendown()
    setheading(0)
    fd(2)
    penup()
    fd(2)
    pendown()
    fd(2)
  if lettre == "f":
    penup()
    goto(x,y)
    setheading(-10)
    pendown()
    fd(2)
    for i in range(9):
      lt(20-2*i)
      fd(2)
    for i in range(9):
      lt(19)
      fd(1)
    fd(22)
    for i in range(9):
      fd(1)
      lt(21)
    for i in range(6):
      fd(2)
      lt(2*i)
    rt(150)
    for i in range(3):
      fd(2)
      lt(20)
  if lettre == "g":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(4)
    rt(130)
    for i in range(30):
      fd(1)
      lt(18)
    setheading(-90)
    fd(-3)
    fd(14)
    for i in range(9):
      rt(19)
      fd(1)
    for i in range(6):
      rt(20-2*i)
      fd(2)
  if lettre == "h":
    penup()
    goto(x,y+1)
    setheading(40)
    pendown()
    fd(1)
    rt(60)
    for i in range(10):
      lt(20-2*i)
      fd(1.7)
    for i in range(10):
      lt(18)
      fd(1)
    fd(14)
    lt(180)
    for i in range(7):
      fd(1.3)
      rt(25)
    for i in range(3):
      lt(30)
      fd(1)
  if lettre == "i":
    penup()
    goto(x,y)
    setheading(-15)
    pendown()
    for i in range(8):
      lt(14)
      fd(1.3)
    penup()
    fd(2)
    pendown()
    fd(1)
    penup()
    setheading(-90)#rt(180)
    fd(3)
    pendown()
    for i in range(6):
      fd(1.3)
      lt(15)
  if lettre == "j":
    penup()
    goto(x,y)
    setheading(-15)
    pendown()
    for i in range(8):
      lt(14)
      fd(1.3)
    penup()
    fd(2)
    pendown()
    fd(1)
    penup()
    setheading(-90)#rt(180)
    fd(3)
    pendown()
    fd(14)
    for i in range(8):
      rt(26)
      fd(1)
    for i in range(6):
      rt(2*i+4)
      fd(2)
  if lettre == "k":
    penup()
    goto(x,y+2)
    setheading(40)
    pendown()
    fd(1)
    rt(60)
    for i in range(10):
      lt(20-2*i)
      fd(1.7)
    for i in range(10):
      lt(18)
      fd(1)
    fd(15)
    lt(180)
    fd(3)
    for i in range(12):
      fd(1.3)
      rt(30)
    rt(90)
    for i in range(5):
      fd(1)
      rt(10)
    for i in range(4):
      lt(20)
      fd(1)
  if lettre == "l":
    penup()
    goto(x,y)
    pendown()
    setheading(-10)
    for i in range(10):
      lt(20-2*i)
      fd(2)
    for i in range(5):
      lt(30)
      fd(1)
    for i in range(11):
      fd(2)
      lt(2*i+4)
  if lettre == "m":
    penup()
    goto(x,y)
    pendown()
    setheading(-10)
    for i in range(3):
      fd(0.5)
      lt(34)
    fd(5)
    for j in range(3):
      for i in range(10):
        fd(0.4)
        rt(18)
      fd(6)
      lt(180)
      fd(6)
    fd(-7)
    rt(90)
    fd(2)
  if lettre == "n":
    penup()
    goto(x,y)
    pendown()
    setheading(-10)
    for i in range(3):
      fd(0.5)
      lt(33)
    fd(4)
    for j in range(2):
      for i in range(10):
        fd(0.6)
        rt(18)
      fd(5)
      lt(180)
      fd(5)
    fd(-5)
    rt(90)
    fd(1)
  if lettre == "N":
    penup()
    goto(x,y+3)
    setheading(-90)
    pendown()
    for i in range(10):
      fd(1)
      lt(18)
    fd(15)
    rt(145)
    fd(20)
    lt(145)
    fd(15)
    for i in range(10):
      fd(1)
      rt(18)
  if lettre == "o":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(4)
    rt(130)
    for i in range(30):
      fd(1)
      lt(18)
    for i in range(7):
      fd(1)
      lt(35)
    fd(5)
  if lettre == "p":
    penup()
    goto(x,y)
    setheading(10)
    pendown()
    for i in range(6):
      fd(1.4)
      lt(15)
    setheading(-90)
    fd(15)
    fd(-15)
    lt(90)
    for i in range(7):
      fd(1)
      rt(30-10*i)
  if lettre == "q":
    penup()
    goto(x,y)
    setheading(60) # vers la droite
    pendown()
    fd(4)
    rt(130)
    for i in range(30):
      fd(1)
      lt(18)
    setheading(-90)
    fd(-4)
    fd(18)
    fd(-11)
    lt(80)
    fd(2)
  if lettre == "r":
    penup()
    goto(x,y+1)
    setheading(0)
    pendown()
    for i in range(8):
      fd(1)
      lt(18)
    setheading(0)
    fd(5)
    rt(100)
    for i in range(7):
      fd(1)
      lt(13)
  if lettre == "s":
    penup()
    goto(x,y+1)
    setheading(0)
    pendown()
    for i in range(8):
      fd(1)
      lt(18)
    rt(150)
    for i in range(8):
      fd(1)
      rt(8)
    lt(30)
    fd(2)
    fd(-2)
    rt(90)
    for i in range(8):
      fd(1)
      rt(12)
  if lettre == "t":
    penup()
    goto(x,y)
    setheading(-15)
    pendown()
    for i in range(8):
      lt(13)
      fd(1)
    fd(9)
    fd(-3)
    rt(90)
    fd(5)
    fd(-7)
    fd(2)
    rt(90)
    fd(7)
    for i in range(7):
      lt(15)
      fd(1)
  if lettre == "u":
    penup()
    goto(x,y)
    setheading(-10)
    pendown()
    for i in range(5):
      fd(1)
      lt(20)
    fd(4)
    rt(180)
    fd(3)
    for i in range(7):
      fd(1)
      lt(25)
    fd(5)
    rt(180)
    fd(3)
    for i in range(5):
      fd(1)
      lt(20)
  if lettre == "v":
    penup()
    goto(x,y)
    setheading(45)
    pendown()
    for i in range(3):
      fd(1)
      lt(15)
    fd(2)
    for i in range(5):
      fd(1)
      rt(36)
    fd(3)
    for i in range(5):
      fd(1)
      lt(36)
    fd(3)
    rt(110)
    fd(3)
  if lettre == "w":
    penup()
    goto(x,y)
    setheading(45)
    pendown()
    for i in range(3):
      fd(1)
      lt(15)
    fd(2)
    for i in range(4):
      fd(1)
      rt(45)
    fd(3)
    for i in range(4):
      fd(1)
      lt(45)
    fd(5)
    rt(180)
    fd(4)
    for i in range(5):
      fd(1)
      lt(36)
    fd(4)
    rt(110)
    fd(1)
  if lettre == "x":
    penup()
    goto(x,y)
    setheading(80)
    fd(5)
    pendown()
    for i in range(16):
      fd(1)
      rt(19)
    penup()
    rt(110)
    fd(9)
    pendown()
    rt(240)
    for i in range(13):
      fd(1)
      lt(19)
  if lettre == "y":
    penup()
    goto(x,y)
    setheading(45)
    pendown()
    for i in range(5):
      fd(1)
      lt(9)
    fd(2)
    for i in range(5):
      fd(1)
      rt(36)
    fd(3)
    for i in range(5):
      fd(1.3)
      lt(36)
    fd(4)
    rt(180)
    fd(14)
    for i in range(9):
      rt(19)
      fd(1)
    for i in range(5):
      rt(20-2*i)
      fd(2)
  if lettre == "z":
    penup()
    goto(x,y+1)
    setheading(0)
    pendown()
    for i in range(8):
      fd(1)
      lt(18)
    setheading(0)
    fd(6)
    rt(140)
    for i in range(6):
      fd(1)
      lt(10)
    rt(180)
    for i in range(10):
        fd(0.5)
        rt(19)
    fd(10)
    for i in range(9):
      rt(19)
      fd(1)
    for i in range(3):
      rt(20-2*i)
      fd(2)
    fd(6)
  if lettre == ".":
      penup()
      goto(x+5,y+5)
      pensize(5)
      pendown()
      rt(90)
      for i in range(5):
        fd(1)
        rt(72)
      pensize(taille_initiale)


def dessin():
  penup()
  goto(-130,70)
  pensize(3)
  pencolor(brown_liste)
  pendown()
  setheading(210)
  for i in range(50):
    fd(1)
    rt(6)
  fd(h_liste)
  for i in range(50):
    fd(1)
    lt(6)
  for i in range(5):
    rt(6)
    fd(-1)
  setheading(0)
  fd(l_liste)
  for i in range(30):
    fd(1)
    rt(6)
  fd(l_liste)
  fd(-l_liste)
  for i in range(30):
    lt(6)
    fd(-1)
  fd(-5)
  lt(90)
  fd(h_liste-10)
  for i in range(15):
    fd(1)
    lt(6)
  fd(l_liste)


def liste():
  penup()
  pensize(2)
  mot="ma liste de N oWl"
  for rang in range(len(mot)):
    pencolor([(25*rang)%256/255,(255-25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-105+10*rang,55)
  pensize(1)
  mot=". un sapin dEcorE"
  for rang in range(len(mot)):
    pencolor([(255-25*rang)%256/255,(25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-110+10*rang,30)
  mot=". des jolis cadeaux"
  for rang in range(len(mot)):
    pencolor([(25*rang)%256/255,(255-25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-110+10*rang,10)
  mot=". un bon repas"
  for rang in range(len(mot)):
    pencolor([(255-25*rang)%256/255,(25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-110+10*rang,-10)
  mot=". de la neige"
  for rang in range(len(mot)):
    pencolor([(25*rang)%256/255,(255-25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-110+10*rang,-30)
  mot=". une trotinette"
  for rang in range(len(mot)):
    pencolor([(255-25*rang)%256/255,(25*rang)%256/255,(160+5*rang)%256/255])
    tracer(mot[rang],-110+10*rang,-50)
  pensize(2)
  penup()
  goto(55,-40)
  pendown()
  setheading(0)
  fd(1)
  penup()
  fd(4)
  pendown()
  fd(1)
  penup()
  goto(55,-45)
  setheading(-60)
  pendown()
  for i in range(11):
    fd(1)
    lt(12)


def sapin(x,y,orientation):
  penup()
  goto(x,y)
  pensize(4)
  setheading(0+orientation)
  pendown()
  pencolor(brown)#marron
  k=1
  for m in range(2):
    fd(2)
    lt(90*k)
    fd(5)
    pensize(3)
    pencolor(green)#vert
    rt(110*k)
    l=1
    for j in range(7):
      for i in range(8):
        fd(2*l)
        lt(5*k)
      rt(35*k)
      for i in range(10):
        fd(-2*l)
        lt(-5*k)
      lt(50*k)
      l=l*0.7
    setheading(-180+orientation)
    k=-1
    penup()
    goto(x,y)
    pendown()
    pensize(4)
    pencolor(brown)#marron
  penup()#remplissage
  goto(x,y)
  setheading(orientation+90)
  fd(5)
  pendown()
  pencolor(green)#vert
  rt(90)
  fd(8)
  fd(-16)
  fd(8)
  lt(90)
  fd(4)
  rt(90)
  fd(6)
  fd(-12)
  fd(4)
  lt(90)
  fd(15)
  rt(90)
  fd(4)
  rt(90)
  fd(15)
  boule(x,y,10*(2*randint(0,1)-1),5,orientation)
  boule(x,y,-13,15,orientation)
  boule(x,y,7,22,orientation)
  boule(x,y,-2*(2*randint(0,1)-1),30,orientation)
  etoile(x,y,orientation)


def boule(x,y,dx,dy,orientation):
  penup()
  goto(x,y)
  setheading(orientation)
  fd(dx)
  lt(90)
  fd(dy)
  pendown()
  pensize(5)
  pencolor([0.5*randint(0,2),0.5*randint(0,2),0.5*randint(0,2)])
  fd(1)
  penup()


def etoile(x,y,orientation):
  penup()
  goto(x,y)
  setheading(90+orientation)
  fd(36)
  pendown()
  pensize(2)
  pencolor(golden)#jaune doré
  rt(30)
  for i in range(5):
    fd(8)
    lt(144)


def renne(x,y,orientation):
  penup()
  goto(x,y)
  setheading(orientation)
  pendown()
  for k in [-1,1]:
    penup()
    pensize(3)
    goto(x,y)
    pencolor(brown)#marron
    setheading(90+orientation-90*k)
    pendown()
    for i in range(25):
      fd(1)
      lt(5*k)
    for i in range(3):
      fd(1)
      rt(20*k)
    for i in range(5):
      fd(1)
      lt(5*k)
    rt(70*k) # oreilles
    for i in range(10):
      fd(1)
      rt(5*k)
    rt(100*k)
    for i in range(10):
      fd(1)
      rt(5*k)
    rt(100*k)
    for i in range(10):
      fd(1)
      lt(5*k)
    rt(90*k) # debut des bois
    for i in range(10):
      fd(1)
      rt(5*k)
    for i in range(10):
      fd(1)
      lt(10*k)
    rt(180*k)
    for i in range(10):
      rt(10*k)
      fd(1)
    rt(70*k)
    for i in range(5):
      fd(1)
      rt(5*k)
    for i in range(5):
      fd(1)
      lt(5*k)
    for i in range(5):
      rt(5*k)
      fd(-1)
    for i in range(5):
      lt(5*k)
      fd(-1)
    lt(70*k)
    for i in range(5):
      lt(5*k)
      fd(1)
    rt(90*k)
    fd(5)
    fd(-5)
    lt(90*k)
    for i in range(5):
      lt(5*k)
      fd(1)
    rt(90*k)
    for i in range(11):
      fd(1)
      lt(8*k)
    lt(90*k) # remplissage
    fd(5)
    pensize(5)
    lt(40*k)
    for i in range(6):
      fd(1)
      rt(20*k)
      for n in range(10):
        fd(1)
        lt(36*k)
    for i in range(8):
      fd(1)
      lt(10*k)
      for n in range(10):
        fd(1)
        lt(36*k)
    for i in range(13):
      fd(1)
      rt(10*k)
      for n in range(10):
        fd(1)
        lt(36*k)
    rt(90*k)
    fd(25)
    penup()
    goto(x,y)
    setheading(90+orientation-90*k)
    lt(85*k)
    fd(10)
    pendown()
    pensize(5)
    pencolor(brown_tete_renne)
    fd(6) # museau
    rt(90*k)
    for i in range(36):
      fd(1)
      rt(10*k)
    lt(90*k)
    penup()
    fd(-16)
    lt(5*k)
    fd(13)
    pensize(5)
    pencolor(red)
    pendown()
    fd(2) # nez
    rt(90*k)
    for i in range(20):
      fd(1)
      rt(18*k)
    lt(90*k)
    penup()
    fd(9)
    rt(90*k)
    fd(4)
    pensize(3)
    pencolor(white)
    pendown()
    lt(90*k)
    for i in range(3): # blanc oeil
      fd(1)
      for i in range(10):
        fd(1)
        rt(36*k)
    penup()
    pensize(5)
    pencolor(black)
    fd(-1)
    pendown()
    fd(-1) # pupille
    penup()
    fd(-1)
    rt(90*k)
    fd(12)
    pencolor(brown_tete_renne)
    pensize(3)
    pendown()
    fd(1) # creux oreille


def nez_renne(x,y,orientation,couleur):
  penup()
  goto(x,y)
  setheading(orientation+90)
  fd(14)
  pensize(5)
  pencolor(couleur)
  pendown()
  rt(90)
  for i in range(15):
    fd(1)
    rt(24)
  for i in range(20):
    fd(1)
    rt(18)


def flocon(x,y,orientation,nb=6,etapes=4):
  k=5
  penup()
  goto(x,y)
  setheading(orientation)
  pendown()
  pensize(2)
  pencolor(cyan)
  for i in range(nb):
    for j in range(etapes):
      fd(k)
      lt(45)
      fd(k)
      fd(-k)
      rt(90)
      fd(k)
      fd(-k)
      lt(45)
    fd(-etapes*k)
    lt(360//nb)


def flocon2(x,y,orientation,nb=6,etapes=4):
  k=5
  penup()
  goto(x,y)
  setheading(orientation)
  pendown()
  pensize(2)
  pencolor(cyan)
  for i in range(nb):
    for j in range(etapes):
      pencolor([(30*i+10*j)/255,(255-(30*i+10*j))/255,1])
      fd(k)
      lt(45)
      fd(k)
      lt(90)
      fd(3)
      fd(-3)
      rt(90)
      fd(-k)
      rt(90)
      fd(k)
      rt(90)
      fd(3)
      fd(-3)
      lt(90)
      fd(-k)
      lt(45)
    fd(-etapes*k)
    lt(360//nb)


def flocon3(x,y,orientation,nb=6,etapes=4,angle=30):
  k=5
  penup()
  goto(x,y)
  setheading(orientation)
  pendown()
  pensize(2)
  pencolor(cyan)
  for i in range(nb):
    for j in range(etapes):
      pencolor([80*j/255,(255-(80*j))/255,1])
      fd(k)
      lt(45)
      fd(k)
      rt(angle)
      fd(3)
      fd(-3)
      lt(angle)
      fd(-k)
      rt(90)
      fd(k)
      lt(angle)
      fd(3)
      fd(-3)
      rt(angle)
      fd(-k)
      lt(45)
    fd(-etapes*k)
    lt(360//nb)


def guirlande(x,y,dx,dy,orientation):
  penup()
  goto(x,y)
  setheading(orientation+20)
  pensize(5)
  j=0
  k=1
  while j<dx+dy:
    for i in range(5):
      fd(10)
      rt(8*k)
      pencolor(choice([red,green,blue,yellow,purple,cyan]))
      pendown()
      fd(1)
      penup()
    k=-k
    j+=12*5


def renne_volant(x,y,orientation):
  penup()
  goto(x,y)
  pensize(2)
  setheading(orientation)
  pencolor(black)#noir
  for i in range(4):
    fd(1)
    rt(90)
  penup()
  fd(1/2)
  lt(90)
  fd(1/2)
  pendown()
  pensize(3)
  pencolor(darkbrown)#marron
  for i in range(5):
    fd(1)
    rt(6)
  lt(70)
  for i in range(10):
    fd(1)
    rt(10)
  penup()
  lt(30)
  fd(-15)
  pendown()
  pensize(2)
  pencolor(black)#noir
  rt(70)
  for i in range(4):
    fd(1)
    rt(90)
  penup()
  fd(1/2)
  lt(90)
  fd(1/2)
  pendown()
  pensize(3)
  pencolor(darkbrown)#marron
  for i in range(5):
    fd(1)
    rt(6)
  lt(70)
  for i in range(10):
    fd(1)
    rt(10)
  fd(5)
  rt(60)#queue
  pensize(2)
  pencolor(lightbrown)#marron clair
  for i in range(5):
    fd(3/2)
    lt(20)
  pencolor(darkbrown)#marron
  for i in range(5):
    rt(30)
    fd(-3/2)
  lt(170)
  for i in range(7):#dos
    fd(i)
    lt(10)
  for i in range(10):
    fd(1/2)
    rt(15)
  rt(50)
  fd(-5/2)
  for i in range(2):#oreille
    for j in range(10):
      fd(1.5/2)
      lt(5)
    lt(110)
  rt(110)
  fd(-5/2)
  pencolor(darkbrown)#marron
  rt(90)
  for i in range(3):
    fd(5/2)
    lt(30)
  rt(90)
  fd(5/2)
  rt(120)#bois 1
  for i in range(10):
    fd(5/2)
    lt(5+i)
  lt(180)
  for i in range(3):
    rt(14-i)
    fd(5/2)
  rt(90)
  for i in range(4):
    fd(5/2)
    rt(15)
  for i in range(4):
    lt(15)
    fd(-5/2)
  lt(90)
  for i in range(4):
    rt(11-i)
    fd(5/2)
  rt(80)
  for i in range(3):
    fd(5/2)
    rt(15)
  for i in range(3):
    lt(15)
    fd(-5/2)
  lt(80)
  for i in range(2):
    rt(7-i)
    fd(5/2)
  rt(5)
  fd(20/2)
  for i in range(10):
    fd(1/2)
    rt(10)
  for i in range(10):
    lt(10)
    fd(-1/2)
  fd(-5/2)
  rt(160)#bois 2
  for i in range(10):
    fd(5/2)
    lt(5+i)
  lt(180)
  for i in range(3):
    rt(14-i)
    fd(5/2)
  rt(90)
  for i in range(4):
    fd(5/2)
    rt(15)
  for i in range(4):
    lt(15)
    fd(-5/2)
  lt(90)
  for i in range(4):
    rt(11-i)
    fd(5/2)
  rt(80)
  for i in range(3):
    fd(5/2)
    rt(15)
  for i in range(3):
    lt(15)
    fd(-5/2)
  lt(80)
  for i in range(2):
    rt(7-i)
    fd(5/2)
  for i in range(10):
    fd(1/2)
    rt(10)
  for i in range(10):
    lt(10)
    fd(-1/2)
  fd(-5/2)
  lt(90)
  fd(10/2)
  rt(140)#front
  for i in range(8):
    lt(10)
    fd(2/2)
  for i in range(5):
    fd(2/2)
    rt(10)
  lt(20)
  pencolor(black)#noir
  for i in range(6):#museau
    fd(3/2)
    lt(90)
  rt(90)
  pencolor(darkbrown)#marron
  fd(5/2)
  lt(60)
  fd(5/2)
  for i in range(5):
    fd(5/2)
    rt(15)
  rt(30)
  pensize(3)
  for i in range(5):
    fd(5/2)
    rt(15)
  lt(100)
  pensize(3)
  for i in range(5):
    fd(2/2)
    rt(10)
  pencolor(black)#noir
  pensize(2)
  for i in range(6):
    fd(2/2)
    lt(90)
  rt(40)
  penup()
  fd(-2)
  rt(40)
  fd(9)
  lt(60)
  pendown()
  rt(55)
  for i in range(5):
    fd(2/2)
    lt(90)
  pensize(3)
  pencolor(darkbrown)#marron
  for i in range(5):
    lt(10)
    fd(2/2)
  rt(55)
  pensize(2)
  for i in range(4):
    lt(10)
    fd(5/2)
  for i in range(4):
    fd(-5/2)
    rt(10)
  rt(20)
  for i in range(5):
    lt(10)
    fd(5/2)
  fd(0/2)
  rt(115)
  fd(-2/2)
  pensize(3)
  for i in range(4):
    fd(6/2)
    lt(12-i)
  for i in range(4):
    fd(6/2)
    rt(10-i)
  lt(110)#remplissage
  pensize(5)
  fd(10/2)
  lt(85)
  for i in range(4):
    fd(6/2)
    lt(10-i)
  for i in range(4):
    fd(6/2)
    rt(12-i)
  lt(80)
  fd(10/2)
  rt(155)
  fd(14/2)
  rt(105)
  for i in range(4):
    fd(6/2)
    lt(10-i)
  for i in range(5):
    fd(6/2)
    rt(6-i)
  lt(90)
  fd(4/2)
  lt(78)
  for i in range(4):
    fd(6/2)
    lt(10-i)
  for i in range(4):
    fd(6/2)
    rt(12-i)
  fd(3/2)
  rt(85)
  fd(4/2)
  rt(90)
  for i in range(4):
    fd(6/2)
    lt(10-i)
  for i in range(4):
    fd(6/2)
    rt(12-i)
  lt(179)
  for i in range(4):
    fd(6/2)
    lt(10-i)
  for i in range(4):
    fd(6/2)
    rt(12-i)
  fd(-15/2)
  lt(45)
  fd(11/2)
  rt(56)
  for i in range(3):
    fd(11/2)
    lt(13)
  rt(170)
  for i in range(4):
    fd(8/2)
    rt(17)
  lt(160)
  fd(13/2)
  rt(90)
  pencolor(lightbrown)#marron clair
  pensize(2)
  fd(10/2)
  fd(-10/2)
  lt(90)
  pencolor(darkbrown)#marron
  pensize(3)
  fd(2/2)
  for i in range(9):
    fd(2/2)
    lt(15)
  rt(20)
  fd(10/2)
  lt(130)
  fd(20/2)
  lt(100)
  fd(2/2)
  for i in range(10):
    fd(3/2)
    lt(30)
  lt(90)
  fd(7/2)
  pencolor(white)#blanc de l'oeil
  for i in range(10):
    fd(1/2)
    rt(36)
  fd(-2/2)
  penup()
  pencolor(black)#pupille
  rt(180)
  fd(-1)
  pensize(2)
  pendown()
  fd(2/2)
  penup()
  lt(180)
  fd(-3)
  penup() # fin du renne
  fd(-27/2)
  pencolor(red)#rouge
  pensize(3)
  pendown()
  rt(117)
  fd(-10/2)
  for i in range(3):
    fd(10/2)
    lt(3)
  for i in range(3):
    rt(3)
    fd(-10/2)
  pencolor(yellow)#jaune
  pensize(2)
  pendown()
  fd(1/2)
  fd(-1/2)
  for i in range(2):
    penup()
    fd(9/2)
    pendown()
    fd(1/2)
    lt(3)
  penup()
  fd(10/2)
  pensize(3)
  pencolor(red)#rouge
  pendown()
  fd(10/2)
  fd(-10/2)
  lt(90)
  for i in range(2):
    fd(10/2)
    rt(10)
  for i in range(3):
    lt(10)
    fd(-10/2)
  pencolor(yellow)#jaune
  pensize(2)
  penup()
  lt(10)
  fd(-10/2)
  for i in range(4):
    penup()
    fd(9/2)
    pendown()
    fd(1/2)
    rt(10)
  penup()
  for i in range(2):
    lt(10)
    fd(-10/2)
  rt(90)
  pencolor(red)#rouge
  pensize(3)
  fd(10/2)
  pendown()
  for i in range(9):
    fd(10/2)
    lt(3)
  penup()
  for i in range(10):
    rt(3)
    fd(-10/2)
  pencolor(yellow)#jaune
  pensize(2)
  penup()
  for i in range(10):
    penup()
    fd(9/2)
    pendown()
    fd(1/2)
    lt(3)


def traineau(x,y,orientation):
  setheading(orientation)
  penup()
  goto(x,y)
  pendown()
  pencolor(brown_traineau)
  pensize(2)
  fd(50)#ski
  for i in range(20):
    rt(7*i)
    fd(5-i/4)
  penup()
  goto(x,y)
  setheading(orientation)
  pendown()
  fd(10)
  rt(90)
  fd(7)#barreau vertical
  rt(100)#arriere du traineau
  for i in range(20):
    lt(20-2*i)
    fd(2-0.02*(10-i)**2)
  for i in range(10):
    fd(1)
    rt(20)
  penup()
  goto(x,y)
  pendown()
  setheading(orientation)
  fd(10)
  rt(90)
  fd(7)#barreau vertical
  lt(90)
  for i in range(4):#bas et barreaux
    fd(10)
    lt(90)
    fd(7)
    fd(-7)
    rt(90)
  lt(30)
  for i in range(20):#avant du traineau
    rt(20-2*i)
    fd(2-0.02*(10-i)**2)
  for i in range(5):
    fd(1)
    lt(20)
  setheading(orientation-180)
  lt(90)
  for i in range(20):
    fd(i/3)
    rt(20-2*i)
  rt(7)#remplissage
  fd(-10)
  pensize(5)
  rt(90)
  fd(2)
  fd(-2)
  lt(233)
  for i in range(5):
    fd(9)
    rt(17-3*i)
  lt(120)
  fd(5)
  lt(65)
  for i in range(5):
    fd(9)
    lt(11+i)
  rt(105)
  fd(5)
  rt(95)
  for i in range(5):
    fd(9)
    rt(10)
  lt(130)
  fd(5)
  lt(80)
  fd(42)
  rt(180)#grelots
  penup()
  pensize(3)
  pencolor(yellow)
  fd(2)
  for i in range(6):
    pendown()
    fd(1)
    penup()
    fd(6)
  rt(80)
  fd(20)
  rt(120)


def guirlande_traineau(x,y,orientation):
  penup()
  goto(x,y)
  setheading(orientation)
  fd(60)
  rt(90)
  fd(27)
  rt(100)
  pensize(3)
  for i in range(7,20):
    pencolor(choice([red,blue,green,yellow]))
    pendown()
    fd(1)
    penup()
    fd(i/3-1)
    rt(20-2*i)


def paquet(x,y,orientation):
  k=5
  penup()
  goto(x,y)
  pendown()
  pensize(5)
  pencolor([randint(2,4)/4,randint(2,4)/4,randint(2,4)/4])#couleur claire
  setheading(orientation)
  for i in range(4):#face devant
    fd(40/k)
    lt(90)
  fd(40/k)
  lt(45)
  fd(15/k)#cote droit
  lt(45)
  fd(40/k)
  lt(135)
  fd(15/k)
  fd(-15/k)
  rt(45)
  fd(40/k)#face haut
  lt(45)
  fd(15/k)
  penup()
  lt(45)
  pencolor([randint(1,3)/4,randint(1,3)/4,randint(1,3)/4])#couleur foncee
  pensize(3)
  fd(20/k)
  lt(90)
  fd(40/k)
  lt(45)
  fd(15/k)
  fd(-7/k)
  pendown()
  pensize(2)#ruban droite
  lt(45)
  fd(-25/k)
  fd(45/k)
  lt(90)
  fd(45/k)#ruban haut
  fd(-45/k)
  rt(90)
  fd(-20/k)
  rt(45)
  pensize(2)#ruban devant
  penup()
  fd(-8/k)
  rt(45)
  fd(-20/k)
  pendown()
  lt(90)
  fd(-25/k)
  fd(45/k)
  pensize(2)#ruban noeud
  rt(45)
  fd(7/k)
  rt(15)
  for j in range(2):
    for i in range(30):
      fd(1/k)
      lt(2)
    lt(120)
    for i in range(30):
      fd(1/k)
      lt(2)
    rt(180)


def clignotement(n):
  for i in range(n):
    for (x,y,orientation) in [(128,-30,10),(120,50,-30),(-165,15,-30),(-160,-90,-10)]:
      boule(x,y,10*(2*randint(0,1)-1),5,orientation)
    nez_renne(175,10,20,yellow)
    guirlande(-127,90,h_liste,0,-90)
    for (x,y,orientation) in [(128,-30,10),(120,50,-30),(-165,15,-30),(-160,-90,-10)]:
      boule(x,y,-13,15,orientation)
    nez_renne(-175,-40,-15,yellow)
    guirlande(93,96,h_liste,0,-90)
    for (x,y,orientation) in [(128,-30,10),(120,50,-30),(-165,15,-30),(-160,-90,-10)]:
      boule(x,y,7,22,orientation)
    nez_renne(175,10,20,red)
    guirlande(-128,86,0,l_liste,0)
    for (x,y,orientation) in [(128,-30,10),(120,50,-30),(-165,15,-30),(-160,-90,-10)]:
      boule(x,y,-2*(2*randint(0,1)-1),30,orientation)
    nez_renne(-175,-40,-15,red)
    guirlande_traineau(185,-95,170)

dessin()
liste()

sapin(128,-30,10)
sapin(120,50,-30)
sapin(-165,15,-30)
sapin(-160,-90,-10)

renne(175,10,20)
renne(-175,-40,-15)

guirlande(-127,90,h_liste,0,-90)
guirlande(93,96,h_liste,0,-90)
guirlande(-128,86,0,l_liste,0)

flocon(-50,-80,70,8,4)
flocon(65,-15,25,6,3)
flocon2(170,-20,15,8,3)
flocon3(20,-75,25,6,3,-30)
flocon3(-170,70,-10,6,3,30)

paquet(140,-60,30)
paquet(145,-65,-45)
paquet(155,-70,-20)
paquet(160,-60,45)
paquet(170,-70,20)
renne_volant(115,-85,55)
traineau(185,-95,170)

clignotement(100)
