π
<-
Chat plein-écran
[^]

Découvre participations Python au concours Noël 2022 Casio

Découvre participations Python au concours Noël 2022 Casio

Message non lude critor » 31 Jan 2023, 00:08

Collègien(ne) ou lycéen(ne), jusqu'à ce lundi 30 janvier Casio t'a permis de participer à son formidable concours de Noël 2022.

Il te suffisait de programmer sur ta calculatrice Casio ou son émulateur ton menu de Noël, avec 2 catégories au choix :
  • catégorie étudiants : pour les participations individuelles d'élèves de collège ou lycée
  • catégorie classe : pour les participations collectives de classes de collège ou lycée

Pour réaliser ton dessin, tu pouvais choisir entre les 2 technologies suivantes :
  • calculatrice scientifique fx-92+ Spéciale Collège avec son application Algorithmique t'offrant un langage de tracé à la Scratch/Logo
  • calculatrice graphique Graph 35+E II ou Graph 90+E avec son application Python

Pour chacune des 2 catégories étaient à gagner 2 superbes gros lots ; 1 pour le meilleur dessin sur fx-92+ Spéciale Collège, et 1 pour le meilleur dessin sur Graph 90/35+E II :
  • catégorie étudiants : 1 enceinte JBL Charge 3 ou 1 appareil photo Instax avec pack de recharge photos (valeur 130€)
  • catégorie classe :
    • pour le professeur : 1 service à raclette (valeur 30€)
    • pour chaque élève du groupe : 1 montre Casio ou 1 enceinte JBL Go (valeur 30€)
      (dans la limite de 35 élèves)
Et en prime avec Casio, pas de perdant : lot de goodies Casio pour tous les autres participants !
Un superbe concours, merci Casio ! :favorite:

Nous avions très hâte de pouvoir te présenter les productions réalisées que nous espérions à la mesure de l'événement. Plusieurs candidats nous les ont fort aimablement partagées, découvrons tout cela ensemble.




  1. Hors concours Graph 90+E Python :
  2. Classes Graph 90+E Python :




Hors concours Graph 90+E - Réveillon de Noël au chalet sylvestre - critor

Go to top

16375J'ai envoyé une participation pour représenter TI-Planet, en précisant bien sûr que c'était pour le plaisir. Je ne souhaite en effet piquer de gros lot à personne.

J'ai donc l'honneur et l'immense plaisir de vous partager ma participation finale comme promis, préparée avec soin un petit peu chaque jour à compter de début décembre. J'ai pris soin de ne pas dépasser les 300 lignes avec pour chacune au plus 256 caractères, afin que le script reste visualisable dans l'éditeur Python de la Graph 90+E.
(c'est toutefois du concentré, et ce n'est pas demain la veille qu'il tournera sur les modèles de milieu de gamme concurrents... :P)

L'année dernière je t'avais conçu non pas un simple dessin, mais une animation déplaçant diverses images à l'écran.

Cette année il ne s'agit ni d'un simple dessin, ni d'une simple animation, mais d'une véritable scène 3D dans laquelle tu te déplaces. Le script, utilisant la bibliothèque de tracé par pixels casioplot, t'emmenène littéralement réveillonner au chalet au fin fond de la forêt, que j'ai soigneusement préparé pour te recevoir (arbre de Noël, guirlandes à LEDs RVB, vase de fleurs) et te sustanter (foie gras, dinde, bûche, bûche, corbeille de fruits, bonhomme en pain d'épice).

Pour cela le script joue une animation aléatoire en utilisant un moteur 3D que j'ai codé pour l'occasion, basé sur la technique du point de fuite.


Les images utilisées (crédits indiqués en commentaire du code) ont été retouchées puis converties en code Python pour Graph 90+E à l'aide de mon outil de conversion en ligne img2calc.
Code: Tout sélectionner
from random import randint
from casioplot import set_pixel, show_screen, draw_string, clear_screen
from math import sin, cos, pi, sqrt, log, ceil
W, H = 384, 192 # FENETRE GRAPHIQUE PYTHON GRAPH 90+E

# EXTENSION CASIOPLOT (FONCTIONS DE DESSIN DE PRIMITIVES)
def draw_line(x1, y1, x2, y2, c):
  m, a1, b1, a2, b2 = 0, round(x1), round(y1), round(x2), round(y2)
  if (x2 - x1) ** 2 < (y2 - y1) ** 2: m, a1, a2, b1, b2 = 1, b1, b2, a1, a2
  if min(a1, a2) != a1: a1, b1, a2, b2 = a2, b2, a1, b1
  for a in range(max(0, a1), min(m and H or W, a2 + 1)):
    b = round(b1 + (b2 - b1) * (a - a1) / ((a2 - a1) or 1))
    set_pixel((a, b)[m], (b, a)[m], c)

def fill_rect(x, y, w, h, c):
  if w<0: x, w = x + w + 1, -w
  if h<0: y, h = y + h + 1, -h
  x1, y, x2, y2 = max(0, round(x)), max(0, round(y)), min(W - 1, round(x) + w), min(H - 1, round(y) + h)
  for y in range(y, y2 + 1):
    for x in range(x1, x2 + 1): set_pixel(x,y,c)

def fill_trapeze_horizontal(ya, x1a, x2a, yb, x1b, x2b, c):
  if abs(yb - ya) < 1: return
  if yb < ya: ya, x1a, x2a, yb, x1b, x2b = yb, x1b, x2b, ya, x1a, x2a
  for y in range(max(0, ya), min(H, yb + 1)):
    xt1, xt2 = interp(x1a, x1b, ya, yb, y), interp(x2a, x2b, ya, yb, y)
    if xt1 >= xt2: break
    fill_rect(xt1, y, xt2 - xt1 + 1, 1, c)

def fill_trapeze_vertical(x1, y1a, y1b, x2, y2a, y2b, c):
  if x2 == x1: return
  if x2 < x1: x1, y1a, y1b, x2, y2a, y2b = x2, y2a, y2b, x1, y1a, y1b
  for x in range(max(0, x1), min(W, x2 + 1)):
    yta, ytb = interp(y1a, y2a, x1, x2, x), interp(y1b, y2b, x1, x2, x)
    fill_rect(x, yta, 1, ytb - yta + 1, c)

def draw_ellipse(x, y, rx, ry, c, fill=0):
  dx, dy, rmin, rmax, w, h = rx >= ry, rx < ry, min(rx, ry), max(rx, ry), 0, 0
  while h <= ry and w <= rx:
    d = rmin * sqrt(1 - ((w + h) / rmax)**2)
    for sy in range(-1, 2, 2):
      for sx in range(-1, 2, 2):
        if fill: fill_rect(x + sx*w, y + sy*h, sx*dy*d or 1, sy*dx*d or 1, c)
        else: set_pixel(round(x + sx*w + sx*dy*d), round(y + sy*h + sy*dx*d), c)
    w, h = w + dx, h + dy

# COULEURS ET FONCTIONS
C_SOL_INT, C_FOND_INT = (170, 96, 40), (234, 234, 234)
def darker_color(c): return [v // 2 for v in c]
def hsv_2_rgb(h, s=1, v=1):
  c, h = v * s, (h % 1) * 6; m, x = v - c, c * (1 - abs((h % 2) - 1))
  return [round((v + m) * 255) for v in (h<1 and (c, x, 0) or h<2 and (x, c, 0) or h<3 and (0, c, x) or h<4 and (0, x, c) or h<5 and (x, 0, c) or (c, 0, x))]

# FONCTIONS DE DESSIN SPECIFIQUES SCENE 3D RENDUE
def draw_mur(droite=0):
  x_pplan_piece, y1_pplan_piece, y2_pplan_piece, x_pplan_fenetre, y1_2plan_piece, y2_2plan_piece = getx(I_PIECE_PP, droite), gety(I_PIECE_PP, 0), gety(I_PIECE_PP, 1), getx(I_WIN_PP, droite), gety(I_WIN_PP, 0), gety(I_WIN_PP, 1)
  x_dplan_fenetre, y1_3plan_piece, y2_3plan_piece, x_dplan_piece, y1_dplan_piece, y2_dplan_piece, c = getx(I_WIN_DP, droite), gety(I_WIN_DP, 0), gety(I_WIN_DP, 1), getx(I_PIECE_DP, droite), gety(I_PIECE_DP, 0), gety(I_PIECE_DP, 1), (217, 217, 217)
  if droite and x_dplan_piece > x_pplan_piece or not droite and x_dplan_piece < x_pplan_piece: c = darker_color(c)
  fill_trapeze_vertical(x_pplan_piece, y1_pplan_piece, y2_pplan_piece, x_pplan_fenetre, y1_2plan_piece, y2_2plan_piece, c)
  fill_trapeze_vertical(x_dplan_fenetre, y1_3plan_piece, y2_3plan_piece, x_dplan_piece, y1_dplan_piece, y2_dplan_piece, c)
  if x_pplan_fenetre != x_dplan_fenetre:
    y1a_fenetre, y1b_fenetre, y2a_fenetre, y2b_fenetre, x = repos(y1_2plan_piece, y2_2plan_piece, .125, .375) + repos(y1_3plan_piece, y2_3plan_piece, .125, .375) + ((x_pplan_fenetre + x_dplan_fenetre) / 2,)
    fill_trapeze_vertical(x_pplan_fenetre,y1_2plan_piece,y1a_fenetre,x_dplan_fenetre,y1_3plan_piece,y2a_fenetre,c)
    fill_trapeze_vertical(x_pplan_fenetre,y1b_fenetre,y2_2plan_piece,x_dplan_fenetre,y2b_fenetre,y2_3plan_piece,c)
    draw_line(x, (y1a_fenetre + y2a_fenetre) / 2, x, (y1b_fenetre + y2b_fenetre) / 2, c)
    draw_line(x_pplan_fenetre, (y1a_fenetre + y1b_fenetre) / 2, x_dplan_fenetre, (y2a_fenetre + y2b_fenetre) / 2, c)

def draw_pancarte(x, y, txt, ctext, cfont, taille):
  x, y, LH_POLICE = round(x), round(y), {"small":8, "medium":14, "large": 20}; y = y - LH_POLICE[taille]
  draw_string(x, y, txt, ctext, taille)

def draw_haie(img, pal, w, h, z, i, gd = 0):
  x, dx, pancarte = getx(i, 1) - w*z, w * z * 2 * sqrt((i + 1) / i), 0
  while x > -w*z + 1: x -= dx
  while x <= W - 1:
    if not gd or gd <= 0 and x + w*z < getx(i, 0) or gd >= 0 and x > getx(i, 1):
      draw_image(img, x, gety(i, 1) - z*h, w, pal, zoomx=z, zoomy=z)
      if not pancarte and gd == 1 and i in (I_TREE3B, I_TREE2B, I_TREE1B):
        draw_pancarte(x + 2*w*z/3, gety(i, 1),"CASIO",(0,0,191),(255,255,255),{I_TREE3B:"large",I_TREE2B:"medium",I_TREE1B:"small"}[i])
        pancarte = 1
    x += dx
 
def draw_foret(gauchedroite = 0):
  if gauchedroite:
    l=((D_SAPINM,C_SAPINM,L_SAPINM,H_SAPINM,1,I_TREE1M),(D_SAPING,C_SAPING,L_SAPING,H_SAPING,1,I_TREE1B),(D_SAPING,C_SAPING,L_SAPING,H_SAPING,2,I_TREE2B),(D_SAPING,C_SAPING,L_SAPING,H_SAPING,3,I_TREE3B))
    for v in l: draw_haie(v[0], v[1], v[2], v[3], v[4], v[5], gauchedroite)
  else: draw_haie(D_SAPINP, C_SAPINP, L_SAPINP, H_SAPINP, 1, I_TREE1S, gauchedroite)

def draw_murforet(gauchedroite=0):
  l = [gauchedroite == -1, gauchedroite == 1]
  for v in getx(I_PIECE_PP, gauchedroite == 1) < getx(I_PIECE_DP, gauchedroite == 1) and l.reverse() or l:
    if v: draw_mur(gauchedroite == 1) # mur + fenetre
    else: draw_foret(gauchedroite) # foret

def draw_guirlande(y, x1, x2, n, h):
  x1, x2 = round(min(x1, x2)), round(max(x1, x2)); w = x2 - x1 + 1
  for x in range(max(0, x1), min(W, x2 + 1)): set_pixel(x, round(y + h*abs(sin((x - x1) * n * pi / w))), hsv_2_rgb((x2 - x) / w))

def draw_table(y_pplan, y_dplan, h_pplan, h_dplan):
  x1_pplan_table, x2_pplan_table, x1_dplan_table, x2_dplan_table = repos(getx(I_TABLE_PP,0),getx(I_TABLE_PP,1),.175,.175) + repos(getx(I_TABLE_DP,0),getx(I_TABLE_DP,1),.175,.175); y_dplan, y_pplan, c = y_dplan - h_dplan, y_pplan - h_pplan, (159, 50, 52)
  draw_guirlande(y_dplan + 1, x1_dplan_table, x2_dplan_table, 5, h_dplan / 4) # guirlande a la table en arriere plan
  fill_trapeze_horizontal(y_dplan, x1_dplan_table, x2_dplan_table, y_pplan, x1_pplan_table, x2_pplan_table, y_dplan > y_pplan and darker_color(c) or c) # table
  lxy = ((x1_pplan_table, y_pplan), (x2_pplan_table, y_pplan), (x1_dplan_table, y_dplan), (x2_dplan_table, y_dplan))
  for k in range(len(lxy)): # pieds de la table
    xy, t = lxy[k], k >= len(lxy) // 2
    w, h = t and 1 or 3, t and h_dplan or h_pplan
    fill_rect(xy[0] - ((k % 2) and w - 1), xy[1] + 1, w, h, (127, 127, 127))
  draw_guirlande(y_pplan + 1, x1_pplan_table, x2_pplan_table, 5, h_pplan / 5) # guirlande a la table au premier plan

def draw_repas():
  l = (I_ROW1, I_ROW2, I_ROW3, I_ROW4, I_ROW5, I_ROW6, I_ROW7)
  rx_assiette, ry_assiette = round((getx(I_TABLE_PP, 1) - getx(I_TABLE_PP, 0)) / 8), round((gety(I_TABLE_PP, 1) - gety(I_TABLE_DP, 1)) / 14)
  lobj=((),(),((D_OIEP,L_OIEP,H_OIEP,C_OIEP,1,0),(D_VIN,L_VIN,H_VIN,C_VIN,0,-2)),((D_OIEC,L_OIEC,H_OIEC,C_OIEC,-3,0),(D_BUCHET,L_BUCHET,H_BUCHET,C_BUCHET,0,1)),((D_BISCUIT,L_BISCUIT,H_BISCUIT,C_BISCUIT,0,0),(D_CHAMPAGNE,L_CHAMPAGNE,H_CHAMPAGNE,C_CHAMPAGNE
   ,0,-2)),((D_FOIE,L_FOIE,H_FOIE,C_FOIE,0,0),(D_BUCHE,L_BUCHE,H_BUCHE,C_BUCHE,4,1)),((D_OIEG,L_OIEG,H_OIEG,C_OIEG,2,0),(D_FRUITS,L_FRUITS,H_FRUITS,C_FRUITS,0,-2),(D_VASE,L_VASE,H_VASE,C_VASE,0,-1)))
  for k in range(len(l)):
    i = l[k]
    y_assiette, x1_assiette, x2_assiette = gety(i, 1), getx(i, 0), getx(i, 1); z, y_assiette = L_ZFACT[i]/L_ZFACT[I_ROW7], y_assiette - (gety(i, 1) - gety(i, 0))*26//100
    lx_ext, lx_int = repos(x1_assiette, x2_assiette, (k % 2) and 1 / 3 or .25, (k % 2) and 1 / 3 or .2), repos(x1_assiette, x2_assiette, .5)
    lx = ((k % 2) and lx_ext or lx_int) + ((k % 2) and lx_int or lx_ext)
    for x in lx[:1 + (k % 2)]:
      draw_ellipse(x, y_assiette, rx_assiette * z, ry_assiette * z, (255, 255, 255), 1)
      draw_ellipse(x, y_assiette, rx_assiette * z, ry_assiette * z, (0, 0, 0))
    for obj in lobj[k]:
      draw_image(obj[0], lx[obj[5]] - obj[1]/2 + obj[4], y_assiette - obj[2] + 1, obj[1], obj[3])
    if k < I_LUSTRE and k + 1 < len(l) and l[k + 1] > I_LUSTRE:
      y_lustre, x1_lustre, x2_lustre = (gety(I_LUSTRE, 0),) + repos(getx(I_LUSTRE, 0), getx(I_LUSTRE, 1), .5) # lustre au plafond
      draw_image(D_LUSTRE, x1_lustre - L_LUSTRE//2, y_lustre, L_LUSTRE, C_LUSTRE)

# MOTEUR 3D ET FONCTIONS
def interp(v1,v2,r1,r2,r): return v1 + (r - r1)*(v2 - v1)/(r2 - r1)
def repos(a1, a2, f1, f2=0):
  l = a2 - a1 + 1
  return a1 + l*f1, a2 - l*f2

def fuite(ai,bi1,bi2,af,bf,lz):
  ai, af, bf = round(ai), round(af), round(bf)
  if ai == af: return ((ai, bi1, bi2),) * len(lz)
  l, da, iz = [], ai < af and 1 or -1, 0
  for a in range(ai, af + da, da):
    bt1, bt2 = interp(bi1, bf, ai, af, a), interp(bi2, bf, ai, af, a)
    while iz < len(lz) and (bt2 - bt1) / (bi2 - bi1) <= lz[iz]:
      l.append((a, bt1, bt2))
      iz += 1
    if iz >= len(lz): break
  return l

def getx(iz, k):
  if defil_vert: return (k and lx2y or lx1y)[iz][0]
  else: return (abs(ly1x[I_PIECE_DP][0] - ly1x[I_PIECE_PP][0]) >= abs(ly2x[I_PIECE_DP][0] - ly2x[I_PIECE_PP][0]) and ly1x or ly2x)[iz][1 + k]

def gety(iz, k):
  if not defil_vert: return (k and ly2x or ly1x)[iz][0]
  else: return (abs(lx1y[I_PIECE_DP][0] - lx1y[I_PIECE_PP][0]) >= abs(lx2y[I_PIECE_DP][0] - lx2y[I_PIECE_PP][0]) and lx1y or lx2y)[iz][1 + k]

def sign(x): return (x > 0) - (x < 0)

# PARAMETRES SCENE 3D RENDUE
W_PIECE, H_PIECE, N_FESTONS, H_FESTON, L_ZFACT = W * 3 // 4, H, 3, H // 7, (1, .97, .97, .95, .83, .763, .69, .65, .633, .56, .52, .508, .475, .45, .395, .34, .317, .28, .254, .22, .20, .19, .17, .134)
I_PIECE_PP,I_TAPIS_PP,I_TREE3B,I_TABLE_PP,I_ROW7,I_TREE3M,I_ROW6,I_WIN_PP,I_TREE2B,I_ROW5,I_LUSTRE,I_TREE2M,I_ROW4,I_WIN_DP,I_ROW3,I_ROW2,I_TREE1B,I_ROW1,I_TREE1M,I_TABLE_DP,I_TAPIS_DP,I_SAPIN,I_PIECE_DP,I_TREE1S = range(len(L_ZFACT))

# IMAGES - converties sur : https://tiplanet.org/forum/img2calc/?mode=script&target=cg
def draw_image(rle, x0, y0, w, pal, zoomx=1, zoomy=1):
  x0, y0, nbits, i, x = round(x0), round(y0), ceil(log(len(pal), 2)), 0, 0; maskval, maskcnt = (1 << nbits) - 1, (0xFF >> nbits >> 1) << nbits
  while i<len(rle):
    v = rle[i]; mv, c = v & maskval, (v & maskcnt) >> nbits
    if (v & 0b10000000): i += 1; c |= rle[i] << (7 - nbits)
    c += 1
    while c:
      cw = min(c, w - x)
      if mv:
        col = pal[mv]
        for l in range(0, zoomy, zoomy < 0 and -1 or 1):
          for k in range(cw):
            for p in range(0, zoomx, zoomx < 0 and -1 or 1): set_pixel(x0 + (x + k)*zoomx + p - (zoomx < 0), y0 + l - (zoomy < 0), col)
      c, x = c - cw, (x + cw) % w
      y0 += x == 0 and zoomy
    i += 1

# sapin decore - retouche a partir de : https://kandipatterns.com/patterns/holidays/christmas-tree-26865
L_SAPIND,H_SAPIND,C_SAPIND,D_SAPIND=29,35,(0,(248,192,0),(0,120,0),(64,208,0),(240,248,232),(168,144,128),(232,0,0),(0,96,248),(128,0,248),(0,48,0),(64,0,0),(152,64,16)),(b'\xd0\1\1\x90\3A\x80\3!\x90\3\1\2\1\x90\3"\x90\3\3\2\3\4\5\xd0\2\1C\xd0\2\25\24#\4'
b'\xd0\2\2T\5\xc0\2\26\3\4\3\5\2\21\x90\2\23\26#\4\23\1\x80\2\2\x93\1\4\5\x80\2\2\23\25D\5\22\xd0\1\a\4C\25\27\3\5\3\xd0\1\2\5$C\x173\21\x90\1\30\2\25\xf4\0\5\23\2\21\x90\1\b\23\2\3\4\5\24%\4#\4\3\x90\1\t\2\4#\4\3\5\30C$\5\x90\1\t\5\24\3\5\23\30#\24\25\t'
b'\xb0\1\2\5\4C\25$\5#\4\5\xf0\0\xe3\1\22\24\5\xf0\x003\2\3\5D\5\3\2\3\2\5C@\t\2\3\26\3\22\25\4\5\xa3\1\2\t@\t\2\26\23\t\xf3\0\26\3\2\23\2\t\21\20\27\31\22\xf3\0"\26\t\3\2)\21\20\a\2\39\2\23\x023\29S \t\2c\21"\30\x93\1\2\0)\3\2\21#\21\23\t\30\3\2#\22\23'
b'\2\t\20\t\22\t\21\x023\22#\2\t\2\3\2i\20\2I\2\3\22\31\22\3)\229\27\t\20)\0\31\22)\27\t\29\2\20\31\27\20\31@\2)\n\27" \31\xd0\1\t\20\v*\2\n\v\xd0\2k\xe0\2K\xb0\1')
# lustre - retouche a partir de : https://www.deviantart.com/almondkinomotovs/art/Pixel-art-vintage-2-c-447280129
L_LUSTRE,H_LUSTRE,C_LUSTRE,D_LUSTRE=30,34,(0,(192,180,24),(224,208,40),(248,252,144),(248,252,168),(248,252,0),(248,0,112),(200,176,80)),(b'H!\2!\xb0\1\21\xd8\1\1\xe0\1\1\xe0\1\1\xe0\1\1\xe0\1\1\xe0\1\1\xe0\1\1\xb0\1\3 \1 \4\xf8\0\3\5\3\30\1\30\4\5\48'
b'\x040\6 \1 \6(\3\0\4\5\4(\6 \1 \6 \3\5\3\0\x060\6 \1 \6(\6\b\x060\2 \1 \2(\6\b\6\20\4\20\a\30\21\30\1\20\3\b\6\b\2\b\4\5\4\b\17\20\21\30\1\b\3\5\3\0\2\b\1\20\6\30\1\b\t\2\t\b\t\20\6\b\1\0\1\30\6 \31\2!\30\6\20\t\30\2(\2\1\22\1\2(\2\20\21\30\2\b\22\1\1'
b'"\22\b\2\20\t\0\t\30\n\b\t\0\1\2\1\0\t\b\n\30\1\20\t(\t\0\t\2\t\0\t(\t\309\b\1\0\2\0\1\b9`\t\b\2\b\t\x90\1\5\2\1\20\2\20\1\2\5\xa0\1"\xc8\1\22\xd8\1\4\xd8\1\4\5\4\xc8\1\4\25\4\xc0\1\4\25\4\xc8\1\4\5\4\xd8\1\4h')
# grand sapin - retouche a partir de : https://www.reddit.com/r/PixelArt/comments/zbp65h/a_snowy_tree/
L_SAPING,H_SAPING,C_SAPING,D_SAPING=57,71,(0,(144,172,184),(184,192,200),(208,216,216),(240,244,240),(0,44,48),(32,76,40),(0,28,48),(128,148,72),(64,112,32),(104,128,160),(16,24,64),(48,48,40),(48,56,40),(88,56,72),(120,84,88)),(b"\xb0\3\21\xe0\6\1\2\1"
b"\xd0\6\1\2\1\xd0\6\1\2\1\xd0\6\1\3\2\1\xb0\6\1\4\3\22\1\xa0\6\1\4\23\2\1\x90\6\1\x043\21\xe0\5\21\x043\1\3!\xa0\5!\4\3\22\23\1#\21\xa0\5\1\22\3\22\23!\3\1\xb0\5\x012\23\21\5\21\xd0\5\21\2#\21\6\5\a\xc0\5\1\6\5A\5\6\25\a\xb0\5\1\b\x065\26\t\6\5\a\xa0\5"
b"\21\22\t&\t2\21\xf0\4!#\29\x023\2\21\xc0\4\1\3\4\1#Bc\2\1\xb0\4\1\4C\2\xb3\1\1\xc0\4\21#\22C\2C\1\xd0\4\5\1\23\22C\22C\1\xb0\4\21\25\21\2C\"#\21\aa\x80\3A\32\25\n\x023\1\n\1#\1\25C\21\xa0\3:\25\26\5A\n\x151\x053!\xd0\3\25\b)\6\5:\x95\x011\xe0\3\a\b\t\b"
b"\tF\25\26\5V\25\1\27\v\xa0\3%\b\t\b\31&\t\x96\1\5\x165\27\x90\3\25(\31\269\26)6\25&\25\a\xb0\3\5\b\31&I\69F\25&\a\xd0\3\a\31\26\t2)\3)\6\t\26\5\21&\a\xd0\3%\t\22#)\23)\21\6\1\23\21\6\5\a\x80\x031\5\2\25\2C\x023\31\23\x013\2\1\26'\xc0\2\21\x143\2S\x023"
b"\6\t\23\x023\2\x016\a\xc0\2\21\3\22\x93\1\x023\6\t\23\2\21\23\22\1\26\a\xe0\2\5\21\22\1c\x123\26#\2\21\"\1\6\a\x90\3\25\t\1#\2\23\22\1\23\2\23\6\1\23\2\1\6!\6\a\x80\3\25\b\6\5\1\23\22\3\22\1\2\23\"\1\6\1\3\1\6\aF\a\xc0\2\25(&\1\3\22\23\1\27\2#\21\27\6"
b"\1\26\27&\a\5\27\xe0\1\5\a\25(F\x012\3\1\5\a\1\23\x015\27\6\a\25'%\1'\xa0\1\25\b\x143\26\3\2\6\21\2\21\25\26!\x056\5\a\5&\25\6%!7\xf0\0\5\t\2c\2\26\25\1\25\6\t\26\1\25V\25\xf6\x005\21\n\a\x80\1\5\t\x123\2\x016\5)&\x056)V2\21\6%\n\27\x80\1\25\t\1\2\23"
b"\21&I\x86\19FR\1%\27\xb0\1\5A\6\x013)\6\31\6\x196I\6\x191\2\21\5\a\v\xc0\1\v\x051\6\x013\1\t\26\t\2Y&)\6)&1\5\a\v\xa0\1\27\6G\6\1#\1\t\26\31\"\t\2)&\31\269\26\25'\x90\1\33\30\6\x026\aA\6\a\v\t\2#\2\3\tV\t\6\t\5'\t\6\5\a\5'@\v'\30\31\2\3\1&\5\a67\x013"
b"\21G&\31\27\5'5' \v(\t\21\2#\1\26\x157\26\5\a\t\1\23\21\27\5\6\5'6\a\25\6\25\26\5W\0\27\31!#\2\1\x86\1\25\27\21\6\a\x056%G\5&\t\1\n\6\n\a\6\25\a \a\31\6\1#\2\1\tF\x196\5'\5&\t6U\6\31!*\6\5\a0\a\t\6\t\1\23\22\1\31&\t\21V\25\26\t\6\31\x96\1\t\21\n\1\32\6"
b"\5\a@\a\26\t\21\22\21\31\6!\2\1\31f\21\6I6\tA*\25\27P\a)\6\21)\26\1\23\2\1961\x99\1A\n%\a\xf0\0\27\26I\26\1\23\22\1\31\26\5\26\2Q\6\31\6\t&1\n%\a\xa0\1\27F\31\x061\31\26\5\26\2aV\5&\1\n\25\27\xd0\1\v\27\5\31\696\25\26!\x95\1\6\5\a\25\26\5\a\xa0\2\a\26Y"
b"\26\25&\21\5'\25'5\27%\27\xa0\2\xf7\0\26\5\x176\5\27\34\a\5\a\x1c7\20'\xb0\3\a\6\x057\26\5\27<\27\34\v\xb0\4'\0\a\x1c7\xfc\0\a\x80\5\a\34=\16\f\16\f\16,\a\x80\5\a.,.\f\16\34\a\x90\5\a\36\17N\34.\f\a\x80\5\a\36\37>\34\36\34\a\x80\5\a\36/.\34\36\34\a\xf0"
b"\4\a./\16\37\16\f\36\34\a\xf0\4\a\36/\36\37\16\f.\34\a\xd0\4\27\36/\36\37\16\f\36,\a\xe0\4\r\f\36\37\xfe\0,\xb0\5N\34\16\34\xd0\2")
# moyen sapin # retouche a partir de https://www.reddit.com/r/PixelArt/comments/zljrsx/some_variations_of_firtree/
L_SAPINM,H_SAPINM,C_SAPINM,D_SAPINM=50,57,(0,(80,104,176),(184,192,208),(184,192,200),(48,80,120),(128,152,192),(168,184,208),(160,180,216),(24,52,32),(40,76,64),(32,92,80),(32,84,72),(128,156,192),(40,108,80),(72,116,88)),(b'\xe0\2\21\xf0\5\1\2\1\xe0\5'
b'\1\2\1\xd0\5\1\2\3\1\xc0\5\4"\3\1\xb0\5\4\23\5\2\3\1\xb0\5\4\25"\1\x90\5\4\25\6\2\5\2\3\1\x80\5\4\26\a\3\6\5\24\xf0\4\1\27\x062\4\x80\5\1b\5\1\xe0\4\1B\5\23\5\1\xe0\4\1B\6%\6\1\xc0\4\1\3B\a6\1\xc0\4\1\22\x052\a\26\2\6\1\xa0\4\1\6\25\aB\23\22\1\x90\4'
b'\x016\2\3\xf2\0\3\1\xf0\3\1\22&\3R\6\3\22\3\1\xc0\3\21"\3&\3B\6\1\3"\1\xa0\3\1\5B\5\26\5R\1\x052\21\x80\3\1\x057\5&\1\22\5"\5\1\5"\25\1\x80\3\1\5\26\1\26\a\1\b!\2\3\2\5!5\1\x90\x031\25\18\1\2\3\1\25Q\xa0\38\21X!\25\1\30\xc0\3\x88\1)8\218\xa0\3\30\t\n\v'
b'\t(\t\32\v\th\t\30\xf0\2\24\bJ)Z\v8\t\32\30\4\xa0\x024\b\5\34:\31Z\25)*\v\b$\x80\x024\f\3\x125\31\25\f\32\f%\31\32\34\5\bD\xe0\1\24\f"\a\23\6\f\t\5\22\3\f\n\f\23\2\f\31\f\3\22\fD\xd0\1\1\6\22\3B\26\fB\1\22\3\22\3\f\x032%\1\xe0\1\x016\5"&\fB\1\2\f2\3\aB'
b'%\1\xd0\1\3\1\26\f\22\f\26\5\1"\6\22\1\f\1\6"\3\a\6\2\3\22\1\25\1\xf0\1!\23\1\26\b\1"\a\3\2!\x162\25&!\xb0\2\21\b\21\b\5\22\6\5\22\1\30\1\26"\6\1\f\26\1\xb0\2\xf8\0"\f\6\3\2\1(\1\26\22\x061\xa0\2\x88\1\5"\5\a\6\5\18\x015\1H\xe0\1\xa8\1&\a\1\6\a\1X\1%\1'
b'\xf8\0\x80\1\x88\1\31(\1\26\5!\xf8\0!\xb8\1 \xf8\0\t\21)8!X9\x98\3\f\5\f\1)\b\th)\bY\30)\n\v\t\x88\1\0H\f%\1)\b\31H\31\v\31\b\32\t\v\31\b)J\tH0\30\n%\1\n\b\t\b\x99\1*\b*-\n\b\t\bj\t\30 \30*\25\1\32\30\t\35\nI\v=\n\t\n]\30\t\xfa\0\v\b\0\bJ+\32\31M\31\nm'
b'\t\n\35.\35\t\30\t\32\t*\v\b\0\b\33\n\b:\t\n\t\rN\r\v\r\36\35\36\r\32\35\16\f>\r\t(\t\b\32\b (\32\t\32\b\n\t^\r\v\x8e\1\n-\f\5\36\25\f\35\t\30\31\b0\b*\b\31\b\tn\n\r\x8e\1\n-,\16%\34.\30@\b\32\t\b\31\b^\n\r\v\xae\1\v\35\n\34\36\5\f\25.\bPh\n^\v\b\r\xae'
b'\1\n\35\n.\f\36\34\v\n\b\xf0\0H\n\36\r\36\n\r\30N\n\36\n>\t\n\t\36\r\25\f.\b\xb0\1\b\32\16\n.\n\30\rN:>\t\n\t*%\n\36\b\xb0\1\b*\36\n\r(.\n\36:N\30\33\t\34\5(\xc0\1\b\n\v\b\36\v\30\0\b.\b*\30\n\36\v\36\b\0(\n\f\5\t\xf0\1\30\0( \b\36\r\b\32\b\20\b\32\b.'
b'\b\20\b*\t\x80\3\b\36\t\0\x190\31\0\t\36\b (\xa0\3\31\xb0\1\31\x80\2')
# petit sapin # retouche a partir de https://www.reddit.com/r/PixelArt/comments/zljrsx/some_variations_of_firtree/
L_SAPINP,H_SAPINP,C_SAPINP,D_SAPINP=23,30,(0,(80,104,176),(184,192,208),(184,192,200),(160,180,208),(160,180,216),(128,152,192),(24,52,32),(32,88,80),(32,100,80),(72,100,160),(40,76,64),(40,108,80),(64,116,80)),(b"\xa0\1\21\xb0\2\1\2\1\xb0\2\1\2\1\xa0\2"
b"\1\3\2\3\1\x90\2\1\22\3\1\x80\2\1\24\3\22\1\xe0\1\1$\"\1\xe0\1\1\4B\3\1\xc0\1\1\x82\1\1\xa0\1\1\5\3\x82\1\1\x80\1\1$\6\22\4\22\3\4\2\4\1\xf0\0\1\24\21\24\1\4\5\4\1\24\1\x80\1\21\27\21\a\1\5\4!\xa0\1\a\30\27\b\a\21\27\xa0\1\1\tX\27\30\a\xf0\0\3\1\26\bf"
b"\b\26\1P\21\3\2\4\2\3B\4\5\6\5\4\x110\1\6\22\x062\6\3\2\6\3\2\1\24\1@1\22\4\1\a\1\24\1\23\21`'\21\n'\21\a\21\aP'\vG\v\x87\1\x107\30\v\27\v(\v\27\v\b\vg\xc8\1\v\30\v'\0\v<(\t\35\t(\t\b\t\34\v\0\v\31\f\v\26\r\fM\f\r\26\v,\v\a\34\v&-\6-\34&\v\34\a\0'\26\r"
b"\f\v\26\f-\t\r\26'0\a\34\27\26\f\v-\27\34\aP'\0\a\34+\35\a\0'\x90\1+ +`")
# grande oie - retouchee a partir de : https://www.istockphoto.com/fr/vectoriel/dinde-r%C3%B4tie-pixel-art-r%C3%B4ti-pix%C3%A9lis%C3%A9-illustration-vectorielle-gm1340627324-420643187
L_OIEG,H_OIEG,C_OIEG,D_OIEG=40,23,(0,(0,0,0),(240,176,48),(224,100,24),(232,96,24),(240,132,64),(168,12,16),(112,168,40)),(b'\x88\2\1pA`\t\2\1X\tC\tH\1\32\1@\tS\4\x031\b\1\n\1\2\1\0\x010\1\3\f[\4\3\35\3\t\r\22\t\2\1 \1\f\x8b\x015\2\1"\1\20\1\xab\1%\21\n'
b'\1\2\1\20\1\x93\1e\n\1\20\1\x8b\1u\2\1\30\1+\rCu\t\30\1\4#\x153\4\xfd\0\1 \1#\35;u\1(\1#\25;\xfd\0\1(\1\33\35;u\x010\1\33\35;m\3\x010\1\33%3m\4\x010\1#%+e\v\18\1\33-+U\23\18\1#%3E\23\1H\1#\35C%+\1H\1\4\3\26\33\26#\26\33\26\3\4\18\1\17&\17&\27&\17&\17\1'
b'(\1\27&\17&\27&\17&\27\1\30')
# petite oie - retouchee a partir de : https://www.istockphoto.com/fr/vectoriel/dinde-r%C3%B4tie-pixel-art-r%C3%B4ti-pix%C3%A9lis%C3%A9-illustration-vectorielle-gm1347229568-424770354
L_OIEP,H_OIEP,C_OIEP,D_OIEP=21,11,(0,(0,0,0),(224,100,24),(248,192,48),(240,132,64),(240,136,40),(120,160,48),(176,4,16)),(b' )0\21\20\t*\t\30\1\v\1\b\1J\31\23\1\0\1J,\3\1\b\1\n\4"<\1\b\1\n\f"<\1\b\1\n\f\x1a4\5\1\20\1\n\24\x124\2\1\20\1\22\f\32$\2\1 \1B'
b'\f\32\1\30\1\6\17\6\17\6\17\6\17\6\17\6\1\b')
# cuisse d'oie # retouchee a partir de https://www.flaticon.com/fr/icone-gratuite/cuisse-de-poulet_411006
L_OIEC,H_OIEC,C_OIEC,D_OIEC=15,14,(0,(0,0,0),(248,244,200),(224,100,24),(240,132,64)),b"\b\1`\1\2\1P\1\22\1P\1\22!0\1\2\1#\t(\1;\1 \1C\1\30\1K\1\20\1K\1\20\1\v\x043\1\30\1\3\x043\1\30\1\v\4+\1 \1\v\f\3\4\v\1(\1+\1\0"
# buche - retouchee a partir de : https://openai.com/dall-e-2/
L_BUCHE,H_BUCHE,C_BUCHE,D_BUCHE=40,15,(0,(224,52,40),(16,120,64),(0,160,88),(224,144,240),(224,180,240),(232,236,240),(0,0,0),(176,4,24),(64,28,16),(88,60,48),(240,224,176),(160,76,72),(152,92,72),(184,176,176),(184,108,80)),(b"\x80\1\1\2\3@\4\5\0\2\3\2"
b"\6P\3\2\xb0\1'\0\1\b\t\3\22\a\0\1$2\a\1\6\n\a\23\x027`\a&\1\b\26'\6\1\b\6%\27\3\v\30\6'\x056\a@\aF\4V\5\b\24\5\4\26\5\4\30F\v\x0670\a\x065\x1b6\5\6\5\4\33\6\25\6\5\v&\5\6\5\6\a,\a \a\6\5\26\25\26\a\26\25\6\5&\4\26\5\n\6\25\26\v\a\6\a\r&\a\20\a\6\5\33\6"
b"\n\26\a\26\5\16&\36&\27\26\n\26\v\a\6\a\6\34\6\a\20\27\f\26\a\f\a\6\a\26\a\f\a\6\a\34\a\6\a\f\a\6\a\f\n\6\a\17\t\17\f\16\6\f\a\0\a\t\34\26\t\f\a\6\a\26\a\f\a\6\a\34\a\6\a\f\a\6\t\34\6\t\17\t\17\f\16\v\17\a\0\a?\a/\a\17\a\t/\a?\a/\a/\a\f\17\t\17\34\v\f"
b"\17\27\f\x8f\1\34O\35\xaf\1\r\t\r\16\6\r\6\17\27]\6\17\35\t\n\r\17\r\6m\t-\16-\a\r\26\16\6\17\27\35\16m\31\xad\1\tm\a=\6\t7\xfd\0\t\nm\17-\t-\17-\a\r\6\n\6\t\a \x87\4\33\a\20")
# tranche de buche - redessinee a partir de https://manufacturedupixel.com/buche-noel
L_BUCHET,H_BUCHET,C_BUCHET,D_BUCHET=11,7,(0,(0,0,0),(160,76,72),(184,108,80),(232,236,240),(184,176,176),(240,224,176)),b"\b)\30\1*\31\v$\v\t\3\2\5\22\5\6\3\t\3\2\5\2\6\4\5\6\3\t\v$\v\1\0\t&\t\0"
# foie gras - redessinee a partir de https://www.shutterstock.com/fr/image-vector/foie-gras-appetizer-icon-cartoon-vector-2171427293
L_FOIE,H_FOIE,C_FOIE,D_FOIE=17,12,(0,(0,0,0),(240,176,112),(248,196,136),(200,156,112),(240,156,88),(232,156,72),(240,168,88)),(b'\20Q \1\2K\1\b\t\v\4\v\4\3\f\33\1\0\1\5\1\2K\1\2\t\rQ\v\t\5\6\r\27\5"\v\t\35\37"\v\t\6\25\37"\v\t\6\25\x1f2\t\a\35\x172\t\2'
b'\6\25\x172\1\0\21\2\6\27\22\3\21\0')
# bonhomme pain d'epice - retouche a partir de : https://www.anyssa.org/classedesgnomes/wp-content/uploads/documents/francais/litterature/albums/bonhomme-pain-epice_pixel-art.pdf
L_BISCUIT,H_BISCUIT,C_BISCUIT,D_BISCUIT=12,16,(0,(0,0,0),(176,84,0),(232,224,144),(248,0,0),(0,128,0)),(b"\30\x190\1\32\1 \1*\1\30\1\2\1\n\1\2\1\30\1*\1\30\1\n\t\n\1\20\21\32\21\0\1\2\3\n\f\n\3\2\t\2\3*\3\2\1\0\t\n\r\n\t\20\1*\1\30\1\n\f\n\1\30\1*\1\30\1"
b"\v\t\v\1\30\1\n\t\n\1 \t\b\t\20")
# vase de fleurs - retouche a partir de : https://www.shutterstock.com/fr/image-vector/pixel-vase-wildflowers-clay-flower-pot-1781614178
L_VASE,H_VASE,C_VASE,D_VASE=25,47,(0,(0,0,0),(176,48,80),(208,236,224),(192,88,112),(88,240,240),(216,216,176),(232,208,40),(32,104,0),(200,188,136),(16,68,0),(96,56,112),(152,68,152),(176,120,176),(200,112,200),(64,44,88)),(b"\xb0\1!\xe0\1\1@\1\"\1\xc0"
b"\1\1\3\1 \x012\4\1\20\1\xf0\0\1\23\5\1\0\1\4\2\4\2\4\22\21\6\1P\21#!\22\24\"\1\26\3\x010\1\23'\23\1\22\4\22\4\2\1&\21\20\1#'#\1\b\4\b\2\b\3\6'\26\1\20\1\5\3'\23\1\0\1(\6\t\6'\6\t\6\1\20\21\5\23\n\1 \1\n\21\26'\3\6\x010\1\5\3\5\32\1\0\1\32\1\0\1\n\3\26"
b"\21P\1\3\21\n\1\0\1\n\1\0\1\32\3\26\1P\1\b\1\0\1\b\n\1\32\1\0\1\b\21\6\1`\1\b\n\21\n\b\1\32\21\n\b!\b\1P\1\bJ\bJ\b\21\n\b\1P\1\bZ\b:\b*\b\1`\1(\n\b*(:\b\1\xf0\0\1\v\1\n!J(\1\x80\1\1\xbb\1\21\x90\1\1\33\x8c\1\v\1\xa0\1\1\33\x8c\1\v\1\xa0\1\1+\\\r\33\1"
b"\xa0\1\1+,\16-\33\1\xb0\1\1\33,\16-\v\1\xc0\1\1\33,\16-\v\1\xc0\1\1\33,\16-\v\1\xd0\1\1\v,\36\r\v\1\xe0\1\1\v,\36\r\v\1\xd0\1\1\33\34.\r\17\v\1\xc0\1\1\33\34.\r\17\v\1\xc0\1\1\33,\16\35\17\v\1\xc0\1\1\33,\16\35\17\v\1\xb0\1\1+,\16\35\17\33\1\xa0\1\1+,"
b"\16\35\37\v\1\xa0\1\1\33<\16-\17\v\1\xa0\1\1\33<\16-\17\v\1\x90\1\1+L-\17\33\1\x80\1\1+L\16\35\37\v\1\x80\1\1\33\\\36\v\r\17\v\1\x80\1\1\33l\16\v\r\17\v\1\x80\1\1\33l\16\v\r\17\v\1\x80\1\1\33l\16\v\r\17\v\1\x80\1\1\33\\\36\r\17\33\1\x90\1\1+L\35\17\v\1"
b"\xa0\1\1+L\35\17\v\1\xa0\1\1+\\\37\v\1\xb0\1\1\33_\33\1\xd0\1\1\xfb\0\1\xf0\0")
# bouteille de champagne - retouchee a partir de : https://www.shutterstock.com/fr/image-vector/pixel-art-bottle-glass-jar-wine-1025910367
L_CHAMPAGNE,H_CHAMPAGNE,C_CHAMPAGNE,D_CHAMPAGNE=12,26,(0,(0,0,0),(232,208,168),(24,92,64),(48,136,72),(96,196,72),(16,56,64),(232,240,240)),(b' \t@\1\n\x010\1\32\1(\1\3\4\5\3\1(\1\3\f\3\x010\1\16\18\1\6\3\18\1\6\3\x010\1\6\23\1(\1\6\3\5\3\1 \1\6\v\5\v\1'
b'\30\1\6\23\5\3\1\20\1\6\3\26\5\6\3\1\b\1\6\3\26\5\6\3\1\b\1\6\3\26\5\6\3\1\0\1\6\x036\3\t\6\3\26\n\a\n\t\6\3\26\n\a\n\t\6\3\26\n\a\n\t\6\3\26\n\a\n\t\6\3\26\n\a\n\t\6\3\26"\t\6\x036\3\t\6\x036\3\t\6C\1\0\1>\1\0')
# bouteille de vin - retouchee a partir de : https://fr.123rf.com/photo_92573889_bouteille-de-style-de-jeu-r%C3%A9tro-vin-pixel-art-cartoon.html
L_VIN,H_VIN,C_VIN,D_VIN=7,18,(0,(40,40,40),(224,8,40),(32,28,32),(0,140,24),(40,228,80),(248,252,248),(248,236,104)),(b"\b\21\30\1\2\1\30\3\1\3\30\1\4\1\30\1\4\1\20\1\5\f\1\0\1\5\6\24\t\5\34!\f\t\6\a\1\f\t\6\a\1\f\t\6\a\1\f\t\6\a\1\f\t\6\a\1\f\t\6\a\1\f!"
b"\f\t\5\34\t\5\34\1")
# corbeille de fruits - retouchee a partir de : https://myloview.fr/papiers-peints-vecteur-pixel-art-panier-fruit-no-66B7069
L_FRUITS,H_FRUITS,C_FRUITS,D_FRUITS=48,26,(0,(0,0,0),(104,52,0),(192,156,24),(176,128,80),(240,180,128),(224,0,0),(120,132,0),(176,196,16),(224,160,168),(104,152,112),(248,120,152),(80,172,64),(232,108,0),(216,196,104)),(b"\x80\2A \2\xd0\x011\x90\2!C!\2"
b"\21\0\21\xf0\0\x014\x010!\x80\1\1\23\25\23\21&\2\26\1\23\1P\1\4!\24\1\20\1$\1@A3\1\x86\1\1\23\x010\1\4\1 \1\24\1\0\1\4\1\24\1\20\21\27(\21\3\1&\31FA\20\1\4\1@\1\24\21\4\21\4\1\0\1\b78\21&\31F\x015Q@\1\4\21\4\21\24\1\b7X\1\x96\1\1\5!Z\x010\1\4\21\24\21"
b"\4\1\30\27h\1\x96\1\21+\1Z\1 \1\4\1\0\1\4\21\4\1\xa8\x011V\1[\1J\1\20\1\24\1\0\1\24!\x98\1\1<\x016\1\v\31K\1:!\24\1 \1\4\1\5\1\xf8\0\21\r\21\f!&\1\v\31K\1:\1\5\1\4\1@\21\4\1h\1=\1\f\1\35\1\6\1\x8b\1\1:\1\4\21`\1\4\5\1H\1\35\25\35\21-\21\x8b\1\1*\1\5\4"
b"\1\xf0\0\1\24\5\1(\1-\25\xfd\0\1\36[\1*\1\5\24\1\x80\1\1\24\5\21\b\1\xbd\1\1>K\1\n\21\5\24\1\x90\1\1$\25!\xad\1\1\16\3.+!\25$\1\xa0\1\x014%QM\1\36Q%4\1\xc0\1\1TU\xf1\0UT\1\xd0\1!\x94\1\xf5\0\x94\1!\xe0\1\1\2\21\xf4\2\21\4\1\x80\2\1\2\x041\xf4\x011\2\4"
b"\1\xa0\2\1\2\4\2\4\2ATA\4\2\4\2\4\1\xc0\2\1\2\4\2\4\2\4\2\4\2Q\4\2\4\2\4\2\4\2\4\1\xe0\2\21\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\21\x90\3\21\2\4\2\4\2\4\2\4\2\4\2\4\2\4\2\4\21\xd0\x031\4\2\4\2\4\2\4\x021\xf0\1")

# CODE PRINCIPAL
defil_vert, vx, vy, x_ref, x_ref_end, y_fuite, y_end, x1_pplan_piece = 0, 1, -1, -2 * W_PIECE, W - W_PIECE + 1, H // 2, H // 4, round(-1.73 * W_PIECE); x_end = x_ref_end
while 1:
  if defil_vert and y_fuite == y_end: y_end = randint(1, H - 2); vx, defil_vert = sign(x_end - x1_pplan_piece), 0
  elif not defil_vert and x1_pplan_piece == x_end: x_end = randint(-2 * W_PIECE, W + W_PIECE); vy, defil_vert = sign(y_end - y_fuite), 1
  if not defil_vert: x1_pplan_piece += vx
  else: y_fuite += vy
  trash, x2_pplan_piece, y1_pplan_piece, y2_pplan_piece, xf_piece = None, x1_pplan_piece + W_PIECE - 1, 0, H_PIECE - 1, round(W * .875 * (x1_pplan_piece - x_ref) / (x_ref_end - x_ref)) # calculs 3D
  ly1x, ly2x = fuite(y1_pplan_piece, x1_pplan_piece, x2_pplan_piece, y_fuite, xf_piece, L_ZFACT), fuite(y2_pplan_piece, x1_pplan_piece, x2_pplan_piece, y_fuite, xf_piece, L_ZFACT) # plafond + sol
  lx1y, lx2y = fuite(x1_pplan_piece, y1_pplan_piece, y2_pplan_piece, xf_piece, y_fuite, L_ZFACT), fuite(x2_pplan_piece, y1_pplan_piece, y2_pplan_piece, xf_piece, y_fuite, L_ZFACT) # murs gauche + droite
  x1_dplan_piece, x2_dplan_piece, y1_dplan_piece, y2_dplan_piece = getx(I_PIECE_DP, 0), getx(I_PIECE_DP, 1), gety(I_PIECE_DP, 0), gety(I_PIECE_DP, 1)
  clear_screen() # sol enneige
  fill_rect(0,0,W,y_fuite,(16,18,64)) # fond
  fill_trapeze_horizontal(y2_pplan_piece, x1_pplan_piece, x2_pplan_piece, y2_dplan_piece, x1_dplan_piece, x2_dplan_piece, C_SOL_INT) # sol interieur
  draw_foret(0) # foret en arriere plan
  x1_porte, x2_porte, y1_porte, y2_porte = repos(x1_dplan_piece, x2_dplan_piece, .625, .125) + repos(y1_dplan_piece, y2_dplan_piece, .25, 0)
  fill_rect(x1_dplan_piece, y1_dplan_piece, x1_porte - x1_dplan_piece, y2_dplan_piece - y1_dplan_piece + 1, C_FOND_INT)
  fill_rect(x2_porte + 1, y1_dplan_piece, x2_dplan_piece - x2_porte, y2_dplan_piece - y1_dplan_piece + 1, C_FOND_INT)
  fill_rect(x1_porte, y1_dplan_piece, x2_porte - x1_porte + 1, y1_porte - y1_dplan_piece, C_FOND_INT)
  draw_murforet(-1) # mur + foret de gauche
  fill_trapeze_horizontal(y1_pplan_piece, x1_pplan_piece, x2_pplan_piece, y1_dplan_piece, x1_dplan_piece, x2_dplan_piece, C_SOL_INT) # plafond
  c_tapis, lx_pplan, lx_dplan = [(255,255,0),(102,0,0)]*2, [], [] # tapis
  y_pplan_tapis, x1_pplan_tapis, x2_pplan_tapis, y_dplan_tapis, x1_dplan_tapis, x2_dplan_tapis = gety(I_TAPIS_PP, 1), getx(I_TAPIS_PP, 0), getx(I_TAPIS_PP, 1), gety(I_TAPIS_DP, 1), getx(I_TAPIS_DP, 0), getx(I_TAPIS_DP, 1)
  for k in range(4): z = .1 + k*.05; lx_dplan.append(repos(x1_dplan_tapis, x2_dplan_tapis, z, z)); lx_pplan.append(repos(x1_pplan_tapis, x2_pplan_tapis, z, z))
  for k in range(3):
    fill_trapeze_horizontal(y_dplan_tapis, lx_dplan[k][0], lx_dplan[k+1][0], y_pplan_tapis, lx_pplan[k][0], lx_pplan[k+1][0], c_tapis[k])
    fill_trapeze_horizontal(y_dplan_tapis, lx_dplan[k+1][1], lx_dplan[k][1], y_pplan_tapis, lx_pplan[k+1][1], lx_pplan[k][1], c_tapis[k])
  fill_trapeze_horizontal(y_dplan_tapis, lx_dplan[3][0], lx_dplan[3][1], y_pplan_tapis, lx_pplan[3][0], lx_pplan[3][1], c_tapis[1])
  draw_guirlande(y1_dplan_piece, x1_dplan_piece, x2_dplan_piece - 1, N_FESTONS, round(H_FESTON*L_ZFACT[I_PIECE_DP])) # guirlande au plafond au dernier plan
  y_sapin, x1_sapin, x2_sapin = gety(I_SAPIN, 1), getx(I_SAPIN, 0), getx(I_SAPIN, 1) # sapin decore au fond de la piece
  x1_sapin += ((x2_sapin - x1_sapin + 1) * .625 - L_SAPIND) // 2
  draw_image(D_SAPIND, x1_sapin, y_sapin - H_SAPIND, L_SAPIND, C_SAPIND)
  y_pplan_table, y_dplan_table, h_dplan_table, h_pplan_table = [gety(I_TABLE_PP, 1), gety(I_TABLE_DP, 1)] + [(gety(i, 1) - gety(i, 0)) * 26 // 100 for i in (I_PIECE_DP, I_PIECE_PP)]
  yh_pplan_table, yh_dplan_table = y_pplan_table - h_pplan_table, y_dplan_table - h_dplan_table
  lh = [0, 1]
  for h in x2_pplan_piece < x2_dplan_piece and lh.reverse() or lh:
    if h:
      lv = [0, 1]
      for v in yh_dplan_table >= yh_pplan_table and lv.reverse() or lv:
        if v: draw_repas() # assiettes + objets sur la table
        else: draw_table(y_pplan_table, y_dplan_table, h_pplan_table, h_dplan_table) # table
    else: draw_murforet(1) # mur + foret de droite
  draw_guirlande(y1_pplan_piece, x1_pplan_piece, x2_pplan_piece - 1, N_FESTONS, H_FESTON) # guirlande au plafond au premier plan
  show_screen()
Télécharger




Hors concours Graph 90+E - Menu en anaglyphe - Cirekraft/Schraf

Go to top

1637616377Voici maintenant Eric Schrafstetter (alias cirekraft chez nous ou schraf sur les réseaux sociaux), qui te partage la carte de son menu mais en anaglyphe rouge-bleu.

Une nouvelle fois nous avons donc du relief. Le script s'appuie de nouveau sur casioplot. Si tu retrouves la bonne paire de lunettes, tu pourras donc voir littéralement flotter le menu devant ton écran !
Code: Tout sélectionner
from casioplot import *

CYAN = (112, 216, 200)
ROUGE = (248, 148, 120)
GRIS = (160, 120, 56)
BLC = (255, 255, 255)

def rect(x, y, l, h, z, coul):
  for i in range(l * h):
    c = get_pixel(x + z + i % l, y + i // l)
    if c != GRIS and c != coul:
      set_pixel(x + z + i % l, y + i // l, coul if c == BLC else GRIS)

def dessin(x, y, z, l, h):
  rect(x, y, l, h, 0, ROUGE)
  rect(x, y, l, h, z, CYAN)

def txt3d(txt, x, y, z, t, taille="medium"):
  h = 170
  draw_string(0, h, txt, GRIS, taille)
  for c in range(0, 150):
    for l in range(h, 190):
      if get_pixel(c, l)[0] < 255:
        dessin(x + 2 * c, y + 2 * l - 337, z, t, t)
  draw_string(0, h, txt, BLC, taille)

clear_screen()
txt3d("*      *", 40, 0, 30, 4, "large")
txt3d("  MENU", 40, 0, 50, 4, "large")
txt3d("Huitres", 10, 48, 20, 2, "small")
txt3d("Amuse-bouche", 43, 75, 50, 2)
txt3d("Dinde aux marrons", 10, 110, 10, 2, "small")
txt3d("Buche", 210, 135, 50, 3)
txt3d("Champagne", 20, 144, 30, 3, "small")
show_screen()
Téléchargement




Classe Graph 90+E - grande table de Noël - cent20

Go to top

16378Et voici maintenant cent20 et son groupe de disciples au Lycée Louis Pasteur à Avignon, déjà grands gagnants lors de l'édition précédente.

Contrairement à l'année dernière, son équipe de choc de cette année ne s'appuie pas sur la bibliothèque turtle mais casioplot, ce qui lui permet d'aller beaucoup plus loin dans les effets visuels et la finition.

Les différents élèves ont donc conçu des sprites à afficher sur une scène de table de Noël, en se basant sur la technique exposée lors de notre atelier jeu vidéo en novembre dernier.

Mais laissons de suite le poète Adam Y. te décrire la scène en alexandrins :
Adam Y. a écrit:En ce jour de Noël est dressée la grand table ;
Friandise et champagne accompagne à l’oubli
Et la bûche enivrant dont le goût est affable
Resplendit sous l’éclat rutilant des bougies.

Tout convive a pris place et festoie du repas ;
Les présents emballés sont légués à autrui.
Enjoués, ces gens rient, réjouis de leurs plats ;
On entend un grelot résonner dans la nuit.


Rendons à César ce qui est à César, créditons correctement les 21 artistes dont les œuvres apparaissent sur le rendu final :
  • Adam Y. : chandelle
  • Thomas S. : bouteille de champagne
  • Sylvain B. : bol de chocolats
  • Alexis M. : tasse chocolat chaud
  • Mathis L. : cadeau de Noël emballé
  • Justine C. : Joyeux Noël en texte en pixel art
  • Julien R. : un calisson
  • Ilana R. : couronne de Noël
  • Coline R. : truffe en chocolat
  • Antoine R. : bouteille de vin
  • Anna C. : sucre d'orge
  • Anthony F. : cadeau de noel jaune et rouge
  • Neila S. : chaussette de noel
  • Florian G. : un petit Papa Noël
  • Robin C. : houx de Noël
  • Samuel V. : un bonhomme de neige
  • Merlin C. : un sapin
  • Ilyas R. : une bûche de Noël
  • Raphael C. : bonhomme en pain d'épice
  • Raphaël M. : une horloge digitale qui affiche 20h22 façon Casio F91W mais affiché au mur (mais quel coquin, le clin d'œil qui ne passera sûrement pas inaperçu ;) )
  • Sybil L. : bougie

Ayons également une pensée pour 10 autres élèves qui ont eux aussi produit des éléments dont l'intégration au script n'a pas été possible :
  • Matheo L. : étoile
  • Aurélien B. : étoile
  • Sarah V. : flocon de neige
  • Rayan C. : bonhomme de neige
  • Romeo B. : bonnet de Noël
  • David G. : oreillettes
  • Bilal L. : guirlandes
  • constance A. : un saumon sous forme de poisson
  • Romain L. : chandelier
  • Noah M. : bougies
Bravo à toutes et à tous, c'est superbe cette année, encore plus que l'année dernière ! :D
Code: Tout sélectionner
# Participation au jeu concours de Noël 2022 de Casio

from casioplot import *
from random import randint

"""
Catégorie Classe : Elèves du Lycée Louis Pasteur d'Avignon
Professeurs : Vincent ROBERT, Raphaël CLEMENTE
Elèves : 31 élèves citées dans ce document, sous la forme Prénom N.
https://www.casio-education.fr/actualites/jeu-concours-casio-de-noel/
"""

# Des objets préparés et codés en pixel art
"""
Nous avons découvert lors de l'atelier
CRÉER UN JEU VIDÉO AVEC LES CALCULATRICES GRAPHIQUES de novembre 2022
> https://www.casio-education.fr/contenus/creer-un-jeu-video-avec-les-calculatrices-graphiques/
une technique de codage basé sur du pixel Art. Nous remercions à ce propos les animateurs de cet atelier,
Xavier Andreani (tiplanet.org) et Sebastien Michelland (planet-casio.com) tant pour la qualité de la présentation
que pour l'aide inestimable que cette formation a été pour nous.
Une "orange" codée avec cette technique fut envoyé aux élèves.
vr_orange_color = {
    " " : (255, 255, 255), # transparence
    "#" : (241, 149, 11), # ecorce #f6b26
    "." : (247, 178, 107), # anti crénelage #f1950b
    "A" : (235, 156, 36), # dégradé 1 #eb9c24
    "B" : (237, 176, 41), #dégradé 2 #edb029
    "C" : (241, 194, 50), # centre #f1c232
    }
vr_orange_image = [
    "  .##.  ",
    " ##AA## ",
    ".#ABBA#.",
    "#ABCCBA#",
    "#ABCCBA#",
    ".#ABBA#.",
    " ##AA## ",
    "  .##.  ",]   
Les volontaires eurent donc la mission de choisir un objet, de le coder.
Chaque élève qui a participé a rendu une liste et un dictionnaire python.
Ces deux objets permettent de générer une image.
Un groupe de pilotage de 3 élèves et d'un professeur realisa la composition finale :
- selectionner les images qui seront dans la composition,
- Placer les objets,
- Ecrire une histoire,
- Ajouter des élèments pour améliorer la cohérence de l'ensemble.
Groupe de pilotage : Ilana R., Adam Y, Ilyas R., Vincent ROBERT
"""

# L'histoire par Adam Y.
"""
En ce jour de Noël est dressée la grand table ;
Friandise et champagne accompagne à l’oubli
Et la bûche enivrant dont le goût est affable
Resplendit sous l’éclat rutilant des bougies.

Tout convive a pris place et festoie du repas ;
Les présents emballés sont légués à autrui.
Enjoués, ces gens rient, réjouis de leurs plats ;
On entend un grelot résonner dans la nuit.
"""

# Les images codées par les élèves de ligne 64 à la ligne 1010.

"""==================================
   Une chandelle par Adam Y.
   =================================="""

ay_chandelle_color = {
    " " : (255, 255, 255), # transparence
    "#" : (195, 195, 195), # contour gris
    "." : (230, 230, 230), # anti-crénelage gris
    "A" : (254, 254, 254), # cire blanche
    "B" : (210, 200, 40), # contour jaune flamme
    "C" : (200, 110, 40), # intérieur orange flamme
    "D" : (200, 20, 40), # centre rouge flamme
    "-" : (250,240,80), # anti-crénelage jaune
    }

ay_chandelle_image1 = [
    "  -B-   ",
    "   -B-  ",
    "  -BBB  ",
    "  BCCB  ",
    "  CDDC  ",
    ".##DD#. ",
    "#..##.#.",
    "#.A##A.#",
    ".#.AAA.#",
    " ######.",
    " #AAAA# ",
    " #AAA.# ",
    ".#.AA.# ",
    "#.....#.",
    "#......#",
    ".######.",]

ay_chandelle_image2 = [
    "            ",
    "   -BB-     ",
    "    BBB-    ",
    "    -BBB-   ",
    "   -BBCBB   ",
    "   BCCCCB   ",
    "   CCDDCC   ",
    "  #CDDDDC#",
    " .##DDDD##. ",
    "##..####.## ",
    "##.A####AA##",
    " ##.AAAAA.##",
    " .##.AAA.## ",
    "  ########. ",
    "  ########  ",
    "  ##AAAA##  ",
    " .##AAAA##  ",
    " ##.AAA.##. ",
    "##...AA..## ",
    "##........# ",
    " ##......## ",
    " .########. ",
    "   ######   ",
    "            ",]


"""========================================
   Une bouteille de champagne par Thomas S.
   ========================================"""

ts_bouteille_champagne_color = {
    " " : (255, 255, 255), # transparence
    "#" : (0, 0, 0), # noir
    "." : (255, 180, 0), # doré
    "F" : (2, 51, 7), # vert foncé
    "D" : (2, 80, 7), # dégradé vert
    "V" : (5, 110, 15), # vert
    "A" : (100, 152, 105), # dégradé vert clair pour étiquette
    "Z" : (74, 105, 77), # dégradé vert foncé pour étiquette
    "E" : (195, 195, 195), # Gris/Blanc étiquette
    "J" : (255, 255, 0), # Jaune
    "K" : (239, 206, 37), # Doré clair
    "L" : (255, 190, 0), # Nuance de doré 1
    "M" : (253, 190, 40), # Nuance de doré 2
    "H" : (221, 212, 0) # Nuance du jaune (pour écran)
    }

ts_bouteille_champagne_image = [
    "      ########      ",
    "     ##########     ",
    "    ###KKKKKK###    ",
    "    ##KKKKKKKK##    ",
    "   ###KKLLLLKK###   ",
    "   ##KKLHHHHLKK##   ",
    "   ##KKLHHHHLKK##   ",
    "   ##KKLLLLLLKK##   ",
    "   ##KKLKKKKLKK##   ",
    "   ##KKLKLKMLKK##   ",
    "   ##KKLLLLKLKK##   ",
    "   ##KKLKLKKLKK##   ",
    "   ##KKKLLLLKKK##   ",
    "   ###KKKKKKKK###   ",
    "    ##..KKKK..##    ",
    "    ###..KK..###    ",
    "     ##.KKKK.##     ",
    "     ##......##     ",
    "     ##......##     ",
    "     ##..J..J##     ",
    "     ##.J.J.J##     ",
    "     ##.J..JJ##     ",
    "     ##..J..J##     ",
    "     ##......##     ",
    "     ##..JJJJ##     ",
    "     ##...J..##     ",
    "     ##.JJJ..##     ",
    "     ##......##     ",
    "     ##.JJJJJ##     ",
    "     ##.J.J.J##     ",
    "     ##.J.J.J##     ",
    "     ##.JJJJJ##     ",
    "     ##......##     ",
    "     ##.....J##     ",
    "     ##.JJJJJ##     ",
    "     ##..J..J##     ",
    "     ##......##     ",
    "     ##......##     ",
    "     ###....###     ",
    "     ####..####     ",
    "     ##.####.##     ",
    "     ###.##.###     ",
    "    ##F##..##F##    ",
    "    ##FF####FF##    ",
    "   ##FFVF##FVFF##   ",
    "   ##FVVVFFVVVF##   ",
    "  ##FFVVVVVVVVFF##  ",
    "  ##FVVVVVVVVVVF##  ",
    " ##FFVVVVVVVVVVFF## ",
    " ##FVVVVVVVVVVVVF## ",
    " ##FVVVVVVVVVVVVF## ",
    "##FFVVVVVVVVVVVVFF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##ZAVVVVVVVVVVVVAZ##",
    "##ZAAAVVVVVVVAAAAZ##",
    "##ZEEAAAAAAAAAEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEE#EEEEEEEEEEZ##",
    "##ZEE#######EE#EEZ##",
    "##ZEEEEEE##E###EEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEEEEEEEE#EEEEZ##",
    "##ZEE##########EEZ##",
    "##ZEEEE##EEEEEEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZAAEEEEEEEEEEAAZ##",
    "##FVAAAEEEEEAAAAVF##",
    "##FDVVAAAAAAAVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDDVVVVVVVVVVDDF##",
    "##FDDVVVVVVVVVVDDF##",
    "##FFDVVVVVVVVVVDFF##",
    "##FFDDVVVVVVVVDDFF##",
    "##FFFDDDVVVVDDDFFF##",
    "###FFFFDDDDDDFFFF###",
    " ###FFFFFFFFFFFF### ",
    "  ################  ",
    "    ############    ",
    ]

"""========================================
   Un bol de chocolats par Sylvain B.
   ========================================"""

sb_bol_de_chocolat_color = {
    " " : (255, 255, 255),
    "#" : (225, 225, 225),
    "." : (233, 233, 233),
    "/" : (215, 215, 215),
    "A" : (102, 64, 43),
    "B" : (111, 75, 55),
    "C" : (141, 112, 96),
    }

# L"image codée dans un tableau, ce que vous devrez modifier, y compris le nom.
sb_bol_de_chocolat_image = [
    " BCBBBCC  CBBB C  ",
    ".#AABBAABAAAAAC/#.",
    "..#//AABBABBB//#..",
    " .##//////////##. ",
    " ..##////////##.. ",
    "  ..##//////##..  ",
    "   ..###//###..   ",
    "    ...####... BB ",
    "      ......  CCAB",]


"""==========================================
   Une tasse de chocolat chaud  par Alexis M.
   =========================================="""

am_chocolatchaud_color = {
    " " : (255, 255, 255), # transparence
    "#" : (25, 10, 190), # rouge foncé #9a0200
    "." : (71, 38, 242), # anti crénelage #db5856
    "A" : (100, 10, 242), # rouge pale #ef4026
    "B" : (150, 81, 18), #chocolat #7f5112
    "C" : (216, 220, 214), # fumée grise #d8dcd6
    "O" : (240, 240, 240), # fumée blanche #d8dcd6
    }
am_chocolatchaud_image = [
     "                    ",
     "           O        ",
     "           OO       ",
     "          OOO       ",
     "        OOOOOC      ",
     "       OOOOOCC      ",
     "       OOOOCCC      ",
     "      OOOOCC        ",
     "      OOOCCC        ",
     "     OOOCC     O    ",
     "     OOCC    OOOC   ",
     "     OCC    OOCC    ",
     "      C     OCC     ",
     "            C       ",
     "                    ",
     "  .AAAAAAAAAAA.     ",
     "  ABBBBBBBBBBBA     ",
     " AAABBBBBBBBBA# A#A ",
     " AAAAAAA########  ##",
     " AAAAAAAAAA#####   #",
     " AAAAAAAAAA#####  # ",
     " AAAAAAAAAAA###  #  ",
     " .AAAAAAAAAA### #   ",
     "  AAAAAAAAA#####    ",
     "  AAAAAAAAA###      ",
     "  .AAAAAA####       ",
     "   AAA#######       ",
     "   .AAAAA###        ",
     "                    ",]


"""=======================
   Un cadeau par Mathis L.
   ======================="""

ml_cadeau_color = {
    " " : (255, 255, 255), # transparence
    "B" : (21, 30, 129), # bleu face #151ee5
    "A" : (21, 22, 190), # bleu côté #1516be
    "C" : (51, 71, 222), # haut #3347de
    "D" : (228, 229, 25), # ruban #e4e519
    "E" : (201, 204, 25), # noeud #c9cc19
    }
ml_cadeau_image = [
    "        EE EE       ",
    "       E  E  E      ",
    "       E  E  E      ",
    "       E  E  E      ",
    "BBCCCCCCEDEDECCC    ",
    "BBBBDDDDDEEEDDDDDD  ",
    "BBBDBBCCCCCDDDCCCCCC",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    " BBDBBBAAAAADDDAAAAA",
    "   DBBBAAAAADDDAAAAA",
    "     BBAAAAADDDAAAAA",]

"""=======================
   Joyeux Noel par Justine C.
   ======================="""

jc_joyeuxnoel_image = [
    "          RRRR                                                                                             RR                     R R        RB       ",
    "        RR  R                               RRRRR                                              RR         R RB                              RB        ",
    "      RR   RB       RB      R       R      RR   RB     R        R   RR      RB                R  R       R  RB        RB         RRRRR      RB        ",
    "     RB   RB        RRRR   RB      RB     RR     RB   R        RR    RB    RB                R   RB      R  RB        RRRR      RR   RB     RB        ",
    "    RB    RB    RR   R     BB      RB    RB      RB   R        BB     RB   R                      RB    R  RRB    RR   R       RB     RB   RB         ",
    "    RB    RB   RB    RR   RB       RB R  RB      RB  RB       RB       RB R                       RR    R  RBB   RB    RR     RB      RB   RB         ",
    "     RR   RB  RB      RB  RB      RRB  RRR      RB   RB       RB       RRBR                        RB   R  RB   RB      RB R  RB      RB   RB         ",
    "      R   RB  RB      RB  RB      RRB   RBR     R    RB       RB        RB                         RB  R   RB   RB      RB  RRR      RB    RB         ",
    "          RB RB       RB  RB      RRB   RB RRRRR     RB      RRB        RRB                        RB  R   RB  RB       RB   RBR    RR     RB         ",
    "          RB RB       RB  RB     R RB   RB           RB      RRB       R RB                        RB  R   RB  RB       RB   RB RRRRR      RB         ",
    "          RB RB       RB  RB     R RB   RB           RBB     RRB       R  RB                       RB R    RB  RB       RB   RB            RB         ",
    "          RB RB      RB   RB    R  RB    RB      R    RB    R RB      R   RB                       RRRB    RB  RRB     RB    RB            RB         ",
    " RR      RRB  BB     R     B   R   RB    RB     R     RBB  R  RBB    R     RB                      RRR     RRB  RB     R      BB      R    RB         ",
    "RB       RB    RR   RB     RB R   RR      BB   R       RBBB    RB   R       R  R                   RRB      RB   RB   RB      RB     R     RB     R   ",
    "RB      RRB     RRRR        RR   RRRR      RRRR         RR     RB            RR                    RB       RB    RRRR         RB   R      RRB   R    ",
    "R       RB                     RR RB R                          RBR                               RRB       RB                  RRRR        RRB R     ",
    "R       R                    RR  RB   R                         RR                                RB        RB                               RRR      ",
    " R     RB                   R    RB                                                               RB         R                                        ",
    "  R   RR                    R   RB                                                               RB          RB R                                     ",
    "   RRR                       RRRB                                                                RB           RR                                      ",]

jc_joyeuxnoel_color = {
    " " : (255, 255, 255), #transparence
    "R" : (230, 20, 40), #rouge
    "B" : (170, 40, 20), #bordeau
    }

"""=======================
   Un calisson par Julien R.
   ======================="""

jr_calisson_color = {
    " " : (255, 255, 255), # transparence
    "W" : (254,254,211), # blanc #fefefe
    "C" : (247, 178, 107), # crème de calisson #f7b232
    }

jr_calisson_image = [
    "    WWWW    ",
    "  WWWWWWWW  ",
    " WWWWWWWWWW ",
    " CWWWWWWWWC ",
    "  CCWWWWCC  ",
    "    CCCC    ",]

"""=================================
   Une couronne de Noel par Ilana R.
   ================================="""

ir_couronne_color = {
    " " : (255, 255, 255), # transparence
    "V" : (9, 88, 49), # vert foncé
    "v" : (50, 180, 80), # vert clair
    "R" : (255, 35, 30), # rouge foncé
    "r" : (240, 90, 80), # rouge clair
    "O" : (240, 150, 80), # orange
    "B" : (70, 110, 240), # bleu foncé
    "b" : (70, 145, 240), # bleu clair
    "C" : (125, 210, 245) # bleu tres clair
    }

ir_courone_image = [
    "             RRRR        RRRR             ",
    "            RrrrOR      RrOOOR            ",
    "            RrrrrOR    RrrrrOR            ",
    "            RrrrrrORVVRrrrrrOR            ",
    "           VRrrrrrrrRRrrrrrrrRV           ",
    "         VVvvRrrrrrROORrrrrrRvvVV         ",
    "        VvvvvvRrrrRrrOORrrrRvvvvvV        ",
    "       VvvvvvvvRRRRrrrORRRRvvvvvvvV       ",
    "      VvvvvvvvvRrrORrrRrrrRvvvvvvvvV      ",
    "     VvvvvvvvvRrrrrORRrrrrrRvvvvvvvvV     ",
    "    VvvvvvvvvRrrrrrrRRrrrrrORvvvvvvvvV    ",
    "   BBBBvvvvvRrrrrrrrRRrrrrrrORvvvvvvvvV   ",
    "  BbbCCBvvvRRRRRrrrR  RrrrRRRRRvvvvvvvV   ",
    " BbbbbbCBvvV   RrrR    RrrR   VvvvvvvvvV  ",
    "BbbbbbbbCBV    RrR      RrR    VvvvvvvvV  ",
    "BbbbbbbbCBV    RR        RR    VvvvvvvvvV ",
    "BbbbbbbbbB                      VvvBBBBvV ",
    "BbbbbbbbbB                      VvBbbCCBV ",
    " BbbbbbbB                        BbbbbbCB ",
    " VBbbbbBV                       BbbbbbbbCB",
    " VvBBBBvV                       BbbbbbbbCB",
    " VvvvvvvV                       BbbbbbbbbB",
    " VvvvvvvV                       BbbbbbbbbB",
    " VvvRRRRV                        BbbbbbbB ",
    " VvRrrOOR                        VBbbbbBV ",
    " VRrrrrrOR                       VvBBBBvV ",
    " RrrrrrrrOR                      VvvvvvvV ",
    " RrrrrrrrOR                      VvvvvvvV ",
    " RrrrrrrrrR                     VvvvvvvvV ",
    " RrrrrrrrrR                    RRRRvvvvvV ",
    " VRrrrrrrR                    RrrOORvvvvV ",
    "  VRrrrrRvV                  RrrrrrORvvV  ",
    "  VvRRRRvvvV                RrrrrrrrORvV  ",
    "   VvvvvvvvBBBB             RrrrrrrrORV   ",
    "   VvvvvvvBbbCCB          VVRrrrrrrrrRV   ",                 
    "    VvvvvBbbbbbCBVVVVVVVVVvvRrrrrrrrrRV   ",           
    "     VvvBbbbbbbbCBvvvvvvvvvvvRrrrrrrR     ",           
    "      VvBbbbbbbbCBvvvvvvvvvvvvRrrrrR      ",         
    "       VBbbbbbbbbBvvvvvvvvvvvvvRRRR       ",
    "        BbbbbbbbbBvvvvvvvvvvvvvvvV        ",
    "         BbbbbbbBvvvvvvvvvvvvvvVV         ",
    "          BbbbbBvvvvvvvvvvvvvVV           ",
    "           BBBBVVVVVVVVVVVVVV             ", ]

"""========================
   Une truffe par Coline R.
   ========================"""

cr_truffeenchocolat_color = {
    " " : (255, 255, 255), # transparence
    "#" : (139,69,19),
    "." : ((160,82,45)),
    "A" : (170,105,30), # dégradé 1
    "B" : (205,133,63), #dégradé 2
    "C" : ((224,164,96)), # centre
    }

cr_truffeenchocolat_image = [
    "  .##.  ",
    " ##AA## ",
    ".#ABBA#.",
    "#ABCCBA#",
    "#ABCCBA#",
    ".#ABBA#.",
    " ##AA## ",
    "  .##.  ",]

"""===================================
   Une bouteille de vin par Antoine R.
   ==================================="""

ar_vin_color = {
    "T" : (255,255,255),
    "F" : (41,5,19),
    "V" : (84,11,40),
    "C" : (255,171,221),
    "J" : (243,255,130),
    "O" : (232,194,67),
    "M" : (158,93,36),
    "N" : (0,0,0),
    }

ar_vin_image = [
    "TTTTTTTNNNNNNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNJJJJNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTNVVVVVVNTTTTTT",
    "TTTTTNVVVVVVVVNTTTTT",
    "TTTTTNVVVVVVVVNTTTTT",
    "TTTTNVVVVVVVVVVNTTTT",
    "TTTNVVVVVVVVVVVVNTTT",
    "TTTNVVVVVVVCVVVVNTTT",
    "TTTNVVVVVVVCVVVVNTTT",
    "TTTNVVVVVVVCCVVVNTTT",
    "TTNVVVVVVVVCCCVVVNTT",
    "TTNVVVVVVVVVCCCVVNTT",
    "TNVVVVVVVVVVCCCVVVNT",
    "TNVVVVVVVVVVCCCCVVNT",
    "TNVVVVVVVVVVVCCCVVNT",
    "TNVVVVVVVVVVVCCCVVNT",
    "NVVVVVVVVVVVVCCCVVVN",
    "NVVVVVVVVVVVVVCCVVVN",
    "NVVVVVVVVVVVVVVCVVVN",
    "NVVVVVVVVVVVVVVCVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NJJJJJJJJJJJJJJJJJJN",
    "NJJJJJMMMMMMMMMMMMMN",
    "NJJJJJJJJJJJJJJJJJJN",
    "NJJMJJJJJJJJJMJJJMJN",
    "NJJMJJJJJJJJJMJMJMJN",
    "NJMMJJJJMJJJJMJMJMJN",
    "NJJMJJJJMMJJJJMJMJJN",
    "NMMMJJJJMMMJJJJJJJJN",
    "NJJMJJJJMMJJMMMMMJJN",
    "NOMMJJJJMJJMJJJJMMMN",
    "NOJMJJJJJJJMJMJJJJJN",
    "NOJMJJJJJJJJMJJJJJJN",
    "NOOJJJJJJJJJJJJJJJJN",
    "NOOOJJMMMMMMMMMMMMMN",
    "NOOOOOOOOJJJJJJJJJJN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFFVVVVVVVVVVVVVVVVN",
    "NFFFVVVVVVVVVVVVVVVN",
    "NFFFVVVVVVVVVVVVVVVN",
    "NFFFFVVVVVVVVVVVVVVN",
    "NFFFFFVVVVVVVVVVVVVN",
    "NFFFFFVVVVVVVVVVVVVN",
    "NFFFFFFFFFVVVVVVVVVN",
    "NFFFFFFFFFFFVVVVVFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "TNNNNNNNNNNNNNNNNNNT",
    ]

"""===========================
   Un sucre d'orge par Anna C.
   ==========================="""

ac_orge_color={
    "A":(230,190,190),
    ".":(255,255,255),
    "B":(230,20,20),}

ac_orge_image=[
    ".....BBAAA......",
    "....BBBBAAA.....",
    "...AABBBBAAA....",
    "...AAA...BAA....",
    "...BAA...BBA....",
    "...BBA...BBB....",
    "...BBB...BBB....",
    "....BB...ABB....",
    ".........AAB....",
    ".........AAA....",
    ".........BAA....",
    ".........BBA....",
    ".........BBB....",
    ".........BBB....",
    ".........ABB....",
    ".........AAB....",]

"""=======================
   Un cadeau  par Antony F.
   ======================="""

afc_cadeau_color = {
    " " : (255, 255, 255), # transparence
    "R" : (250, 0, 0), # rouge 1 ##fa0000
    "T" : (200, 0, 0), # rouge 2 #c80000
    "Y" : (160, 0, 0), # rouge 3 #a00000
    "U" : (125, 0, 0), # rouge 4 #7d0000
    "I" : (105, 0, 0), # rouge 5 #690000
    "N" : (2, 2, 2), # noir
    "F" : (240, 200, 0), # jaune 1 #f0c800
    "G" : (220, 175, 0), # jaune 2 #dcaf00
    "H" : (200, 160, 0), # jaune 3 #c8a000
    "J" : (180, 145, 0), # jaune 4 #b49100
    }

# L"image codée dans un tableau, ce que vous devrez modifier, y compris le nom.
afc_cadeau_image1 = [
    "  NNN  NNNN ",
    " NJHGNNNGFN ",
    " NNJHGNHFNN ",
    "NNNNNNNNNNNN",
    "NIUYNJHGNTRN",
    "NIUYNHGFNTRN",
    "NNNNNNNNNNNN",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NNNNNNNNNN ",]

afc_cadeau_image2 = [
    "    NNNN    NNNN    ",
    "   NNGFNN  NNGFNN   ",
    "   NJHGFNNNNHGGFN   ",
    "   NNJHGFNNJJHHNN   ",
    "    NNNNNNNNNNNN    ",
    "NNNNNNNNNNNNNNNNNNNN",
    "NIUUYYNJHGGFFNYTTRRN",
    "NIUUYYNJHHGFFNYTTRRN",
    "NIUUYYNJJHGGFNYTTRRN",
    "NIUUYYNJJHHGFNYTTRRN",
    "NNNNNNNNNNNNNNNNNNNN",
    " NIUYYNJJHHGFNTTRRN ",
    " NIUYYNJJHHGFNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NNNNNNNNNNNNNNNNNN ",]


"""=========================
   Une chausette par Neila S.
   ========================="""

ns_chaussette_color = {
    " " : (255, 255, 255), # transparence
    "C" : (240, 0, 32), #rouge
    "." : (253, 253, 150), # jaune
    "A" : (0, 0, 0), # noir
    "V" : (130, 196, 108), # vert
    }


ns_chaussette_image = [
    "          A    ",
    "        AA.A   ",
    "      AA...A   ",
    "    AA......A  ",
    " AAAA........A  ",
    "A...........A  ",
    " A.......AAAA  ",
    "  A...AAAVVVA  ",
    "  AAAAVVVCVVA  ",
    "   ACVVVVCCCA  ",
    "    AVVCCCCCA  ",
    "     ACCCCCCA  ",
    "     ACCCCVVA  ",
    "      ACCVVVA  ",
    "       AVVVVA  ",
    "       AVVCCCA ",
    "       ACCCCCA ",
    "       ACCCCCCA",
    "       ACCCCCCA",
    "      ACCCCCVA ",
    "AAA AACVVVVVVA ",
    "ACCAAVCCVVVVA  ",
    "ACCCVVCCCCCA   ",
    "ACCCVVCCCCAA   ",
    " ACCVVCCCCA    ",
    " ACCVVCCCA     ",
    "  ACVVCCA      ",
    "   ACVAA       ",
    "    AA         ",
   
    ]

"""===========================
   Un pere noel par Florian G.
   ==========================="""

fg_papanoel_image = [
    "       CCC  ",
    "    CCCAAAC ",
    "   CAAAAACA#",
    "  CAAAAAC ##",
    "  CAAAAAC   ",
    " H#######H  ",
    " HBBBBBBBH  ",
    "  #BDBDB#   ",
    "  ##BBB##   ",
    "   ##G##    ",
    "AAAA###AAAA ",
    "AACAA#AACAA ",
    "##CAEEEAC## ",
    "DDCADDDACDD ",
    " DACDDDCAD  ",
    "  CAACAAC   ",
    "  DEFDEFD   ",
    "  DDDDDDD   ",]


fg_papanoel_color = {
    " " : (255, 255, 255), #transparence
    "#" : (230, 230, 230), #blanc
    "A" : (237, 28, 35), #rouge
    "B" : (225, 198, 153), #beige
    "C" : (153, 0, 48), #2eme rouge
    "D" : (0, 0, 0), #noir
    "E" : (70, 70, 70), #gris fonce
    "F" : (180, 180, 180), #gris clair
    "G" : (253, 110, 158), #rose
    "H" : (255, 195, 14), #jaune
    }

"""====================
   Un houx par Robin C.
   ===================="""

rc_houx_color = {
    " " : (255, 255, 255),
    "R" : (248, 18, 18),
    "G" : (0, 59, 5),
    "A" : (2, 153, 5),
    }

rc_houx_image = [
    "                    GGG  ",
    "  GG              GGAAAG ",
    " GAAG            GAAAAAAG",
    "GAAAAG           GAAAGAAG",
    "GAGGAAG         GAAAGGAAG",
    "GAAGAAAG       GAAAGAAAG ",
    " GAGGAAAG      GAGGAAAAG ",
    " GAAGGAAG  RR GAAGAAAAG  ",
    " GAAAGAAAGRR RAAGAAAAAG  ",
    "  GAAAGAAARRRRAGAAAGGG   ",
    "   GGAAARR RRAAAAGGG     ",
    "     GARR R RRAAGG       ",
    "      GRRRRRR RG         ",
    "        RR RRRR          ",
    "            RR           ",]


"""=============================
   Un bonhomme de neige Samuel V.
   ============================="""

sv_bonhomme_color = {
    " " : (255, 255, 255), # transparence
    "#" : (231, 4, 4), # rouge
    "." : (252, 229, 205), # couleur neige
    "A" : (244, 102, 27), #carotte
    "B" : (91, 15, 0), #bras
    "C" : (0, 0, 0), # pomme de pin
    "D" : (255, 153, 0), # echarpe orange
    "E" : (255, 255, 0), # echarpe jaune
    "F" : (221, 126, 107), # sourrire
    "H" : (120, 63, 4), # bras deux
    }

sv_bonhomme_image = [
    "      #     ",
    "     ###    ",
    "    #####   ",
    "    .....   ",
    "   ...A...  ",
    "   ...A...  ",
    "   .F...F.  ",
    "    .FFF.   ",
    "     ...    ",
    " B  DEDED  B",
    " BH.E.....HB",
    "  ..D.C.... ",
    "  ......... ",
    " .....C.....",
    " ...........",
    " .....C.....",
    "  ......... ",
    "   ...C...  ",
    "    .....   ",
    "     ...    ",]
   

"""======================
   Un sapin par Merlin C.
   ======================"""

mc_sapin_color = {
    " " : (255, 255, 255), # transparence
    "#" : (85, 62, 37), # ecorce #553e25
    "." : (60, 222, 138), # anti crénelage #f1950b
    "A" : (19, 189, 101), # dégradé 1 #13bd65
    "B" : (12, 153, 80), #dégradé 2 #edb029
    "C" : (5, 104, 53), # centre #056835
    }

mc_sapin_image = [
    "     ..     ",
    "    .AA.    ",
    "   .ABBA.   ",
    "     ..     ",
    "    .AA.    ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    "    .AA.    ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    " .ABCCCCBA. ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    " .ABCCCCBA. ",
    ".ABCCCCCCBA.",
    "     ##     ",
    "     ##     ",
    "     ##     ", ]

"""=====================
   Une buche par Ilyas.R
   ====================="""

ir_buche_image = ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdefghggijjaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaklemnhhhhnininjaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoppqrsttuvwiiinxyzczxAAaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamBCxDDEFGBHoHIJpAKLbMzNfzKNxxwBaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaaOPPhnggBAQRSTUHpQpVBWvWWlKlKXXzYllZvvaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagACw0inni1yyDNvJIFFttSkSS222SB3XXXLLLMMbHpBE4aaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagfQo3wxxyxxwXLMMLLMQJUIIIIISCEpUv5LLL3355eE267Vaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaighgwprWxi888xHolDwDDD9<MddQQou2uCvHHIkEvWvEQorSItS4Vaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiighhghnvreDxx111xbzxywDDD999LMMMebpHHHpvEt>GJJHHHWvp2tF247aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax3pZ2ku7mAi88888i8iBopAxxx1nxAufyDyDD99<<<LLLMMcMdc5vWQoEe55ceeWWc5pSF44aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafxW3GsjwxBsplx8i111nZokBAl3vvbbAmkwD<zD<<zXLL<LLcXMLMceHUJbc3LcLccecc5eEG24aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagnzAeHstv5cWZmNwwwwnfEJJoH55LKffwNf33z<z<<<X<<<<<<XL3vEQuUCv53YMcceccce5eeCF77aaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxffxwwzzqBZAb6GIsJCBvQJpB4Sb53zAffwDDyDzDfHL<<<<zLzXXL3cepJIsqQv55MY3c535555e555vFV4aaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBAAAfwxxxDXpWmxpBtF642GCWBB2SCc3ffzzNzfzzzDzzpQlX<YXYlcvHUUsuobcYKKKzff35c5e33c5555vS6vaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaamiMQGBk2TF226ZsEBBllfNXM5eebpHsFFFtsIJBApuJC5LYXKXzXzzKNYKXXpUEvvvQUJuuGrecllYzXYzlzff355533e5c55WvSVE7aa', 'aaaaaaaaaaNAf3A4ABWZmaaaagnxjZWv6VVVV46EpW3ZB3pQQLLMMceHuSSSI4mZQrSCdMMLYXY3lvHQJJrppoJU>FtUvlYlEUWccfcMMLNKKzXllcZW555WWWB4EvV4aa', 'aaaaaaarAnjgmZ7BBBEJUGGJJqUUC226SIISIF2226EVV47BZBZZZZZBBBZAZAmmfAAfmfmwfAAZHopB5BEQooHppEvWYKzXWG6W3YNAzzNNfwAB33WW5llZZWE6vp4Vaa', 'aaaaaaafwzwfmwmngjwNfwwfwfNKXcevbHQoJJIIIFFFFSIIuuuJurJJISSIUUUUUUUUSIJSS2kEW3cYYKl3ecc3YXYYKYYl3rJB5l3AA3YlYwAW3lBl3333B6I7Bv4Vaa', 'aaaaaawLDXwXXfjnjx111111yyDyyDDzDXXXc5dpCUI2k2Hov55555eeplfVQECHCE4V4SsJHe3333YYXLMelK35XLLXl33llpGWW5l33AlAfAWB3333WBBW2t2VZW76aa', 'aaaaaw<DDcKKlNAmABAwwxyyyywDyDDXXYc5pQopv5355eEQUrHbbeeeffvHpECouIts2pv3YMMLcYcXKKc53M5vLY33l533lWUkB3333lZwAZBZAAllWW662tS4BW4Vaa', 'aaaayy<LeU6BAfmmAjnjAfwyyyxz5oppHve3l33XXl333YM5UkCHHQfjACIII>>tFIvvcMe3YXY5e3l3cl535Yl5553333ZAY3CIWWWBV2SJsFT6VV6V6666V2IG6774aa', 'aaaayMKHt6ZmwmmjAAAAEvcfDDfzzzzfXXX<zYXLXXLXKXL3CGGJWnxvkssskHppIoWc53555355355l5353l5l55BWl3KllX3BIsuk6666666226662rC477ZB6I64Vaa', 'aaaywbutTfh000imfAlA72EYzfXzzXXzXXXXYLXXYXXXLM3BHsEniWQQHvQHp5e5JJ5bWW5555lc5e3535555l333ZZlAX35AAWVV6H6EV6I2ABB466Hvv5vvBB4V2V4aa', 'aaaywoFtm0PPPPPPjAfmApVvLzXXXLKlXXXYLLXY33BBWECJrmifpveeH5eQHee5CUeeWe3llAl3c535ee3555333Yl33AZB4EEV62rWvWW2SZZBBAmABwBWBvW7746Vaa', 'aaa1wrtA00000h0PPn3AAWVEe3cY3c3cLLYYY35borsItrC4nnvpeeeLecWHVp5WCGE5l3lKKKK33lY5cYl3l5llYlYZECC6222HvBZ3ZZW4IBBB3vZBZAWBBBv772S2aa', 'aawDQ26hPP000PhhPPnjBA44pvc3LLc53vCSI>GJVWWWvBjhfEW5e5edepWeB555VtClYZwZ3l3LYYXlBB3535BWvV66kCk2S2WZZZZWWvv4t7BZBBBBB7vvEWBW7V26aa', 'aiDzpFjPPPPP00ihhPPjmwAVWp5535v2TtIuEW5lleeed5AWpc3eee3AA5f3AfN3CFIb33l533lBBZBZW44EJrkrruurHv46t7BBWBv5WWZ7tHBBWZWWWvvvWEvE4626aa', 'azydU2hPPP0ggg0iihPPmAfW4VpEoItICv55ee5czLLLKMevvvbe33l3lAAflLAWoFFkvvvWBvBvvECruS22226ukpWWWvv7IBBBBvvWvWpBTHBWvWvWvvWpEpCCVS62aa', 'ayDeGBPPPPP000iginhPiAfB6VktTTIVceeeee3cLXLMLe5Wpp55WWW355l3lvQkk2IIttISSuuurrkkrk62267HWBWWZlZZIBlvvWvvvZB7FVWWWvvpEEEEEEHCu262aa', 'axDeImOOPPP00ihiiji0PjfAV46TSTspbbvvveecMLXLXz555vvWvvW5ZBAZv22kkHE6rr2rrkr26vWpppvWWV4W4vvWvHE4IVpvppb5vpE6UWW5vWvbECCCCr2I2626aa', 'aDy3UiPOPPPhh0gingfgPAwZ74V2SuJvvEpbev3lLlLlXYAYBWEpvEWvpEkuSSrHppvpvvVHEstVWZZvpvBZWWWWWpWvWvvVF44vvCW5HWvIEvvvpHCCH6rrSIIS6SS6aa', 'axDeShOOPOPPPnggixgjhAfwZ6V22uJHppbvvdMzXLLZlzZpUIFtIIISSSSST2vWZWWAWvWvWEt6BAZvvvBBWlB35WWBpWWWs662SI6vWCISCQor6SJUsIFII22SSSS2aa', 'afDdr0OOOPPhh0nixgnfgiAwf6V62SI6EEvEppecY3lWl32SSS22646662TS6WlAflAfAlAdWBSCWA3BvBBfl35W53WBBWW7STI2rEusGIC6EpESIFIJ2SSTTS22uSSaaa', 'ayDeCPOOPPP00ghwixxnx0BAmVVV2SFFS2ISssSurHWvCrSTCBvWWWppVEpv5Zlfl3lfAll5E4SrW5WWWvWWWW5Wvvvv5WvutIEpQH4StI2JJIIsCHQoSISTS6uustaaaa', 'ayDbVPOOOPPPhhigmxgi3gmww44422SrJrrE66rS2TSSSTSEllA335HpBvbcWe33lKXKAlBBW4SEZ5vW55WWWpWWWWHHpHStI2CQQQCIFIrSukHHkkuSsssIIu2uuIaaaa', 'ayDo6POOPPP0hhhxxijwmngwf4VVS24EEvEvVVVV444EuFHZYXlN3vEVvWvvWWH5fflA3WvpeVT4WBvp5vppvbebbvHE2I>rkkkpHE2tIuruSJuJIISIIISSSrSSTaaaaa', 'a1zJrPOOPP0g0hgiimAwnfhfxZ6VrEvEEEHpHpppp5vpE>WAXA55AZW4EpvvWvEpvvZWvHEZWVFE4vvppbEHHpEErSSt>srkppoJJUSIoHQH6SSSTItItIuSIttaaaaaaa', 'aDyeu0POPPP0hhgixljni3hnfZ6St2vECEE4WppvpvvpCFE333WZlvpHvppppvpv5vvvZWvp42F2V762WWV2STFTFIS2CCkruoooC2ISoQqUIIsSSSIFFFTTTtaaaaaaaa', 'ayDXUgPPPP00hggwxfnxnWgxxAVrFSV4EEE44v4VVV6HrtoWbWpe33W4HWAWB33lAWZWlceW4ITttttTIsttGrrCHrurJokVkkoouTISJoQ2SoHHCstTTTSTaaaaaaaaaa', 'awDXtnPPPP0gghhxnxxxmBinnl62FSHVEEQEvvvEEHHpEFHev65plcWB3XfXzXY3EuoW5e7uIsrkkCkkrTFICkuJJoJokouuJrJ2sI22roJkoouttTFaaaaaaaaaaaaaaa', 'awDD>mPPPP00hhhixnfwAZwixWV2FSkpEECEEHEEHHpCCts5vHlwDDNXYYYY5CrurCrIItRHdppQQQHr2TT2ouuooJJJuJJJrJJTtSSSITFFtFFFaaaaaaaaaaaaaaaaaa', 'aaDyCB000P0hhhgixnAfAZwgxAVSTsk4EEEECHEHvHHCrFVZvvXlzwcpHQ2uS6SV6HJoHHQEvHroooJkutSCuuUrrrrrr2JSSSFFTTFFFFFTIaaaaaaaaaaaaaaaaaaaaa', 'aaDzoH80h000ghgnwnAAAZfgxf6STSuHCCHEHHEEEHHHrFuJQEQkur2SIIIS4BVs>HdbHHkJJUr2u2k2rtrruSJJJJSJSSSSTFFFFtTTTTaaaaaaaaaaaaaaaaaaaaaaaa', 'aawDbJi8h000hhijxxfAAZAgxwV6TISEHHoHQHHECQbCrFHbp4pkIUIFFFttUGtFIuJJusuuHkHHJooouIrSuISSUIISSSSSFTFFTTaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aawDzJm888hhhgizxxwffZNhxwV6IIS6662rCHEHHEQCkTuoSstFtIIITTruJJSFISrJouoJJJUJUSSSSISSsTTTsIuSSSITFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaazDov888hhnnifwNnwwWNgwx7V2I2kCrrCoQQHHk2kSTFFFFFJkCkJIIJJoorIIuUJkrSUJJJJSSSSITSSSSTTTTSTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaawDdJi888h8iAiflxwnHfiww72SI2222r22kkHkSSSttsUJoQCHQuuIIkoQQrtIJuusIssssSSsISIFTSITFFFFFTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaDwol8888inifxx3xnQxnwwVTTT22C2rCSrSSItFsuoHQQQoJuoCITIuSITFFIUUSSrrSSsIIIIFFFFFFFFFTFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaDDeQg888ixxjfxfmwbnxxwESTSS6rsUGtttFFS2kkouussSCQuITTTssFTFI2J2SJGIISItttFFFTTTFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaafzNHm888gnwwnlnnv3gxfw6SSIt>USSSSSSSSoJrSsIIsSsUIITTTTsSuFFssIsuJIFFFFFTTFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaf<DYQi8888iwfnwjpfixzl222ItIS222uJJrrrJJuHHrr2IIIIISurS2TFFSsII>FFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaD9Nvlh88giixwivlnxxfNC22IISSSr2JJJJJkCHoooUItIIsuourJttFFFFttFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaD<y3ef88hiihn5Awgwmww462IIuSSJJurruuoosIIFTFTIIsIIIItFFFFFTTTTFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaa<DLfdxg8nxfzwmgfxxwn76VSSSuuuuksSSSIIIIITTISSSItttFFFTTTFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaz<ywcfhinxfngfffwxwCTSIuuSIIISIIIIttttttFF>tFFtFTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaazDDflfihghgZmZxzwfFFFukRuISItsItttttttFFFFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaayywxww3BWZwmfAXw5FFtsRHHkRussItItttttTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaNffwAjjAmflwXzJTFITsJs>IIt>tttFFTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaawwfwAffmffAEtFFFtTIISsttFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaa3ZAffKzfAJFFIsIIIFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaAABwvIFFkuSIIIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa']
ir_buche_color = {'a': (255, 255, 255), 'b': (96, 65, 58), 'c': (114, 81, 73), 'd': (102, 70, 56), 'e': (105, 73, 65), 'f': (150, 121, 107), 'g': (205, 182, 170), 'h': (215, 193, 180), 'i': (197, 172, 159), 'j': (167, 146, 138), 'k': (72, 49, 49), 'l': (129, 102, 90), 'm': (148, 127, 119), 'n': (187, 160, 147), 'o': (73, 49, 44), 'p': (92, 67, 60), 'q': (62, 38, 28), 'r': (68, 51, 44), 's': (54, 33, 34), 't': (40, 27, 24), 'u': (63, 41, 41), 'v': (99, 75, 67), 'w': (160, 131, 117), 'x': (173, 144, 130), 'y': (180, 141, 117), 'z': (143, 110, 92), 'A': (137, 112, 102), 'B': (116, 93, 87), 'C': (78, 60, 53), 'D': (163, 123, 100), 'E': (87, 68, 60), 'F': (38, 27, 28), 'G': (44, 26, 20), 'H': (82, 58, 54), 'I': (50, 35, 33), 'J': (62, 42, 36), 'K': (134, 99, 90), 'L': (125, 91, 75), 'M': (115, 82, 67), 'N': (144, 108, 99), 'O': (237, 223, 212), 'P': (232, 215, 204), 'Q': (80, 54, 44), 'R': (66, 38, 40), 'S': (58, 43, 41), 'T': (47, 35, 37), 'U': (54, 35, 29), 'V': (85, 68, 66), 'W': (107, 84, 77), 'X': (133, 100, 84), 'Y': (125, 91, 82), 'Z': (125, 103, 96), '0': (223, 204, 191), '1': (196, 162, 137), '2': (67, 51, 49), '3': (120, 93, 81), '4': (94, 76, 74), '5': (110, 84, 72), '6': (76, 60, 58), '7': (102, 85, 82), '8': (214, 186, 165), '9': (147, 103, 79), '<': (144, 101, 84), '>': (43, 23, 24)}

"""==============================
   Un pain d'epice par Raphael C.
   =============================="""

rc_pdepice_color = {
    " " : (255, 255, 255), # transparence
    "#" : (196, 119, 2), # orange exterieur #c47702
    "." : (255, 174, 0), # orange interieur #ffae00
    "A" : (10, 8, 10), # noir   #0a080a
    "B" : (236, 83, 89), #bouton rouge #ec5359
    "C" : (0, 153, 36), # bouton vert #009924
    "D" : (255, 144, 222), #couleur rose #009924
    "E" : (254, 254, 254), #blanc #fefefe
    "F" : (180, 27, 27), #rouge du chapeau #b41b1b
    }
rc_pdepice_image = [
    "        FFF        ",
    "       FFFFF       ",
    "      FFFFFFF      ",
    "     FF#####FF     ",
    "    FF#.....#FF    ",
    "   FF#.......#FFAA ",
    "    #.........#EE A",
    "    #..A...A..#AEEEA",
    "   #...........#AEA ",
    "   #..D.....D..#EAE  ",
    "    #..E...E..#     ",
    "    #...EEE...#     ",
    "     #.......#      ",
    "      #.....#      ",
    "       #...#     ",
    " ######.....###### ",
    "#..E...........E..#",
    "#.E.............E.#",
    "#..E.....B.....E..#",
    " ######.....###### ",
    "      #.....#      ",
    "      #..C..#      ",
    "      #.....#      ",
    "      #.....#      ",
    "      #..B..#      ",
    "      #.....#      ",
    "      #.....#      ",
    "     #.......#     ",
    "     #.......#     ",
    "    #.........#    ",
    "   ##.........##    ",
    "  #......#......# ",
    "  #EE...# #...EE# ",
    "  #.EE.#   #.EE.# ",
    "  #..EE#   #EE..# ",
    "  #....#   #....# ",
    "  #....#   #....# ",
    "  #....#   #....# ",
    "   ####     ####  ",]


"""========================================================
   Une horloge facon casion qui affiche 20:22 par Raphael M.
   ========================================================"""
#20:22, clin d'oeil à 2022 ! :-)

rm_horlogecasio_color={
    "#": (13, 13 ,13), # Noir
    "L": (42, 42, 42), # Lettre du 42
    "-": (62, 90, 147), # Bleu contour
    ".": (164, 169, 153), # .ris pour le fond
    "F": (104, 104, 96), # .ris foncé
    "C": (165, 171, 162), # .ris clair
    "B": (227, 225, 233), # Blanc
    "N": (250,)*3,
    " ": (255, 255, 255), # Transparent
    }
rm_horlogecasio_image = [
    "  #################################   ",
    " ###################################  ",
    "CC##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##CC ",
    ".F##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##F. ",
    " ###BB.........................BB###  ",
    "  ##BB.LLL..LLL.....LLL..LLL...BB##   ",
    "  ##BB...L..L.L..L....L....L...BB##   ",
    "  ##BB..L...L.L......L....L....BB##   ",
    "  ##BB..LLL.LLL..L...LLL..LLLL.BB##   ",
    "   #BB.........................BB#    ",
    "   #BB#########################BB##    ",
    "  ##BB###NNN#NNN#NN##N##NNNN###BB##   ",
    "  ##BB###N###N#N#N###N##N##N###BB##   ",
    "  ##BB###N###NNN##N##N##N##N###BB##   ",
    "  ##BB###NNN#N#N#NN##N##NNNN###BB##   ",
    " ###BB#########################BB###  ",
    "CC##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##CC ",
    ".F##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##F. ",
    " ###################################  ",
    "  #################################   "]


"""=========================
   Une lanterne par Sybil L.
   ========================="""

sl_lanterne_color = {
    " " : (255, 255, 255), # transparence
    "a" : (111, 102, 102), # acier de la lanterne #6f6666
    "s" : (71, 71, 71), # fond de la lanterne #474747
    "d" : (255, 218, 172), # dégradé 1 de la bougie #ffdaac
    "D" : (255, 199, 154), #dégradé 2 de la bougie #ffc79a
    "b" : (255, 181, 121), # dégradé 3 de la bougie #ffb579
    "t" : (40, 37, 37), # tige bougie #282525
    "f" : (213, 59, 0), # dégradé bas de la flamme #d53b00
    "F" : (193, 53, 0), # dégradé coté clair de la flamme #c13500
    "!" : (242, 114, 8), # orange centre bas de la flamme #f27208
    ":" : (230, 109, 10), # orange centre haut de la flamme #e66d0a
    "h" : (167, 46, 0), # dégradé haut de la flamme #a72e00
    "?" : (242, 250, 251), # vitre lanterne #f2fafb
   
    }

sl_lanterne_image = [
    "  aaaaaaaa",
    " aa     aa",
    "aaaaaaaa a",
    "a a h  a a",
    "a ah:h a a",
    "a aF!F a a",
    "a a f  a a",
    "a adtb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a sdDbsasa",
    "assdDbsaa ",
    "aaaaaaaa  ",]

# Participations des élèves : Listing des créations
"""
Parfois les élèves ont rendu un codage non conforme,
Parfois l'image proposée ne s'intégrait pas de manière harmonieuse,
Ils ont participé leur production n'a juste pas été sélectionnée pour le dessin final.
==== Liste de tous les élèves participants, image sélectionnée ou pas  ===
1 Raphaël M Une horloge digitale qui affiche 20h22 façon Casio F91W mais affiché au mur
2 Matheo L étoile
3 Alexis M tasse chocolat chaud
4 Aurélien B étoile
5 Sarah V flocon de neige
6 Adam Y Chandelle
7 Rayan C bonhomme de neige
8 Anthony F cadeau de noel jaune et rouge
9 Florian G Un petit papa noel
10 Neila S chaussette de noel
11 Merlin C Un sapin
12 Justine C Joyeux Noël en texte en PixelArt
13 Romeo B bonnet de noel
14 Ilyas R une buche de Noël
15 Ilana R couronne de noel
16 Robin C Houx de noël
17 Raphael C bonhomme en pain d'épice
18 Mathis L cadeau de noël emballé
19 Sybil L bougie
20 Samuel V un bonhomme de neige
21 Antoine R bouteille de vin
22 David G  oreillettes
23 Julien R un calisson
24 Bilal L Guirlandes
25 constance A un saumon sous forme de poisson
26 Anna C sucre d'orge
27 Thomas S Bouteille de champagne
28 Sylvain B bol de chocolats
29 Romain L Chandelier
30 Noah M Bougies
31 Coline R Truffe en chocolat
+ 2 enseignants
==============================
"""

# Dessin de l'image sur une Casio Graph 90+E
def trace_casio(clr: dict, img: list, x_pos: int, y_pos: int, size: int = 1):
    img = [list(i) for i in img]
    for i in range(len(img)):
        show_screen()
        for j in range(len(img[i])):
            if clr[img[i][j]] != (255, 255, 255):
                for k in range(size):
                    for o in range(size):
                        set_pixel(x_pos+5+j*size+o, y_pos+5+i*size+k, clr[img[i][j]])

# Construction du mur, effet pixel alétoire 4x4
for x in range(0,385):
    for y in range(0,43):
        r,g,b = randint(250,255), randint(222,242), randint(210,242)
        set_pixel(2*x, 2*y, (r,g,b))
        set_pixel(2*x+1, 2*y, (r,g,b))
        set_pixel(2*x, 2*y+1, (r,g,b))
        set_pixel(2*x+1, 2*y+1, (r,g,b))
           

trace_casio(afc_cadeau_color, afc_cadeau_image1,263,67)
trace_casio(afc_cadeau_color, afc_cadeau_image2,237,62)
trace_casio(ml_cadeau_color, ml_cadeau_image,247,60)
trace_casio(ir_couronne_color, ir_courone_image, 5, 12)
trace_casio(rm_horlogecasio_color, rm_horlogecasio_image,340,55)
trace_casio(ns_chaussette_color, ns_chaussette_image,350,20)

# Construction de la table, effet pixel aléatoire + degradé.
for x in range(0,385):
    for y in range(82,193):
        c = 82+y//2+randint(0,8)
        set_pixel(x, y, (c,c-95,c-130))

trace_casio(ar_vin_color, ar_vin_image,54,22)
trace_casio(ar_vin_color, ar_vin_image,70,55)
trace_casio(ts_bouteille_champagne_color, ts_bouteille_champagne_image,45,45)
trace_casio(sb_bol_de_chocolat_color, sb_bol_de_chocolat_image, 112, 75)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 120,81)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 125,78)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 123,83)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 20, 85)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 134, 103)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 225, 67)
trace_casio(ay_chandelle_color, ay_chandelle_image2, 79, 160)
trace_casio(ay_chandelle_color, ay_chandelle_image2, 310, 90)
trace_casio(am_chocolatchaud_color, am_chocolatchaud_image,10,127 ,2)
trace_casio(am_chocolatchaud_color, am_chocolatchaud_image,340,115)
trace_casio(rc_pdepice_color, rc_pdepice_image, 116, 127)
trace_casio(jr_calisson_color, jr_calisson_image,260,174)
trace_casio(jr_calisson_color, jr_calisson_image,272,173)
trace_casio(jr_calisson_color, jr_calisson_image,284,175)
trace_casio(jr_calisson_color, jr_calisson_image,265,167)
trace_casio(jr_calisson_color, jr_calisson_image,276,168)
trace_casio(jr_calisson_color, jr_calisson_image,271,162)
trace_casio(ac_orge_color, ac_orge_image,320,155)

# Buche et accessoires
trace_casio(ir_buche_color, ir_buche_image, 171, 100)
trace_casio(rc_houx_color, rc_houx_image, 230, 105)
trace_casio(mc_sapin_color, mc_sapin_image, 215, 107)
trace_casio(mc_sapin_color, mc_sapin_image, 255, 103)
trace_casio(fg_papanoel_color, fg_papanoel_image, 200, 110)
trace_casio(sv_bonhomme_color, sv_bonhomme_image, 270, 95)
trace_casio(sl_lanterne_color, sl_lanterne_image, 177, 70,2)

trace_casio(jc_joyeuxnoel_color, jc_joyeuxnoel_image, 50, 15,2)

# Affichage final de l'image
show_screen()

"""
   ####     ##      #####    ####     #####             ####     ####     ####     ####
  ##  ##   ####    ##   ##    ##     ##   ##           ##  ##   ##  ##   ##  ##   ##  ##
##       ##  ##   #          ##     ##   ##               ##   ##  ##       ##       ##
##       ##  ##    #####     ##     ##   ##             ###    ##  ##     ###      ###
##       ######        ##    ##     ##   ##            ##      ##  ##    ##       ##
  ##  ##  ##  ##   ##   ##    ##     ##   ##           ##  ##   ##  ##   ##  ##   ##  ##
   ####   ##  ##    #####    ####     #####            ######    ####    ######   ######

   ####    #####   ##   ##    ####    #####   ##   ##  ######    #####            ##   ##   #####   #######  ####
  ##  ##  ##   ##  ###  ##   ##  ##  ##   ##  ##   ##   ##  ##  ##   ##           ###  ##  ##   ##   ##   #   ##
##       ##   ##  #### ##  ##       ##   ##  ##   ##   ##  ##  #                 #### ##  ##   ##   ## #     ##
##       ##   ##  ## ####  ##       ##   ##  ##   ##   #####    #####            ## ####  ##   ##   ####     ##
##       ##   ##  ##  ###  ##       ##   ##  ##   ##   ## ##        ##           ##  ###  ##   ##   ## #     ##   #
  ##  ##  ##   ##  ##   ##   ##  ##  ##   ##  ##   ##   ##  ##  ##   ##           ##   ##  ##   ##   ##   #   ##  ##
   ####    #####   ##   ##    ####    #####    #####   #### ##   #####            ##   ##   #####   #######  #######
"""
# Lycée Louis Pasteur, concours de Noël 2022 de Casio.
Télécharger




La 3D semble bizarrement être à la mode cette année, c'est curieux... ;)
Bref comme l'année dernière, tous ceux qui ont bien voulu partager leurs créations sur Graph 90+E jusqu'à présent se sont visiblement donné à fond, désintégrant littéralement les limites de ce qui avait pu être réalisé jusqu'alors en Python sur cette machine ! :#tritop#:

Nous trouvons la chose à la mesure des gros efforts consentis par Casio en dotation pour ce concours, et espérons que ces derniers sont également satisfaits de tous les chefs-d'œuvre qu'ils ont reçu. ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude ggauny@live.fr » 31 Jan 2023, 13:24

Bonjour à tous,

Superbe programme de critor, mais est-ce normal que cela "tourne" aussi drastiquement lentement sur ma Graph 90+e ?
Sur la clé USB ça va mais je n'atteins pas la vitesse de l'exemple sur le PC.

Une belle illustration (libre) des 3 messes basses de Daudet !
Encore une fois bonne et heureuse année 2023 !
Avatar de l’utilisateur
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 43.4%
 
Messages: 283
Inscription: 11 Mar 2015, 20:43
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude critor » 31 Jan 2023, 13:44

Merci pour la référence à ma culture provençale, que j'ai franchement adaptée sans même le faire exprès. :P

Oui c'est lent sur calculatrice. Il faudrait :
  • davantage de primitives natives dans la bibliothèque graphique casioplot, ici mis à part les textes "CASIO" tout est fait avec des appels set_pixel(), faute de mieux
  • et/ou un nouveau modèle au matériel un peu réactualisé

Pour le simulateur sur clé USB, c'est la vitesse que j'obtiens ici sur ordinateur. Cela peut varier d'une machine à une autre, et dépendre des autres tâches exécutées sur la machine en question.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude critor » 31 Jan 2023, 13:50

En fait, pour la disposition intérieure du chalet, je me suis très librement inspiré d'un rendu vectoriel trouvé en ligne :


Mais il ne bougeait pas lui à la différence. ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude Noury » 31 Jan 2023, 23:11

critor a écrit:jusqu'à ce lundi 31 janvier

:thinking:
Avatar de l’utilisateur
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 52.5%
 
Messages: 287
Inscription: 07 Sep 2018, 09:19
Localisation: Sceaux, France 92
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude critor » 31 Jan 2023, 23:13

Merci. :)

Je n'irai pas jusqu'à dire comme certains profs que c'était fait exprès, mais heureusement qu'il y en a quelques-uns comme toi qui suivent. ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude critor » 01 Fév 2023, 21:42

cent20 te révèle tous les secrets autour de sa participation : ;)
https://twitter.com/nsi_xyz/status/1620847631542157312
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude cent20 » 01 Fév 2023, 23:09

Je n’ai rien révélé de très secret vu que tu as publié le code, avec notre accord, et que tout est dans le code que je trouve plus facile à lire que celui de l’année précédente, le codage utilisé permet vraiment à tous de participer. L’année dernière je n’avais eu que 5 participations venant des élèves en classe de 1ere vs 20 cette année, je parle de la classe de 1ere car pour eux le travail était obligatoire.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 45.9%
 
Messages: 1007
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude DoOmnimaga » 02 Fév 2023, 01:46

Si ça continue, vous allez nous sortir un script python d'une démo de DOOM basé sur la version Super Nintendo tournant sans problèmes sur TI ou Casio. :P Beau travail! :yolo:
Dream of Omnimaga
ImageImageImageImage
Avatar de l’utilisateur
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 6.9%
 
Messages: 680
Images: 25
Inscription: 21 Fév 2012, 12:04
Localisation: Quebec, Canada
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 11eme annee scolaire termine
YouTube: DJOmnimaga
Twitter/X: DJOmnimaga
Facebook: djomnimaga

Re: Découvre participations Python au concours Noël 2022 Cas

Message non lude critor » 08 Mar 2023, 17:57

Bonjour.

J'ai eu droit à une interview de Casio par rapport à mon dessin de Noël hors concours : :favorite:
https://www.casio-education.fr/actualit ... -andreani/
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Suivante

Retourner vers News Casio

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 24 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
824 utilisateurs:
>800 invités
>19 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)