Les dessins viennent de ce site / Explications pour créer vos propres dessins
Derrière les 20 touches inférieures du clavier de la NUMWORKS ( de “0” à “)” ) se cachent des motifs (5 différents avec 2 couleurs possibles). A vous de trouver les paires !
Le programme ne fonctionne que sur votre machine, pas avec le simulateur.
# toutes les touches du bas du clavier # codes 30 à 52 sauf les valeurs 35,41 et 47 clav=[v for v in range(30,53) if v not in [35,41,47]] # association aléatoire avec les figures # Au lieu de mélanger les figures+couleurs, on mélange les touches jeu=sorted(list(clav),key=lambda x:random()) trouve=[] score=0 tt.reset() # efface écran sleep(.5) while len(trouve) < 10: # choix figure gauche à partir touche clavier t1=jeu.index(key(clav)) tt.reset() # On recherche la valeur et couleur de cette touche v1,c1 = t1 // 4, t1 % 2 lettre(40,20,az[v1],2,c1) # Affichage figure t2=jeu.index(key(clav)) # Idem avec figure de droite score+=1 v2,c2 = t2 // 4, t2 % 2 lettre(170,20,az[v2],2,c2) # Si 2 touches différentes mais même motif+couleur et pas déjà trouvé if t1 != t2 and (v1,c1) == (v2,c2) and (v1,c1) not in trouve: trouve.append((v1,c1)) # Ajout de la paire trouvée for i,(v,c) in enumerate(trouve): # Affichage des cartes trouvées lettre(10+30*i,180,az[v],.5,c) tt.reset() # Affichage du score s=max(1,20-score) for i in range(10): lettre(20 + 55 * (i % 5), 60 + 60 * (i // 5), az[2],1,i<s)
import turtle from random import randint, random from time import sleep from ion import * tt=turtle az=['@Vk?SeaIkOuT]jWl@Ti?FhJpSo@Vm?al\\yTq@W_?R^GVMQSL[U]V@h^?j`vfqklpch`e@fM?eFmFlJ@nP?vOoEkL@jR?kShUhS', '@]u?\\o^W`R@cS?dVeZaY^YaX\\WWVWRZQQJYE^H`DjEkJnPhScO', '@SV?SSZL_MeNmXk^id[gWcR^SXSW@lX?lXuXuX@l`?l`sfsf@ce?ceetet@Wd?WdWqWq@Ta?QaFfDh@QW?QWFWFW@SR?SRNHOF@\\L?\\L]F[E@eO?eOkIkI@Y\\?`dj^eX@\\R?\\R_V_V@WU?XUYUYU@^Q?`QaQ`P', '@]K?KJIhZgdgh[jYkShJ_K@SN?SNUEXDYD[H[J@_J?_JcEeFfEgKgM@W^?W^^^^^^^\\cZdXcW^W^@TT?TUUUVT@bU?bUdUdT@Tg?RoVs[sesgide@Vs?VtUwUw@[t?[u[w[w@`s?`tauav@cr?dsdudu@fi?ginjnk', '@]n?^kWZWUWPYE`EgFj\\ibhhcqar`sXuUtRtNrOpPlZp]o@`O?bObPaQ@gN?jNlNmNmNjRhSlSoTpTmWlXiY'] def key(t): while True: for (i, k) in enumerate(t): if keydown(k): while keydown(k): continue return k def move(x,y):tt.goto(x-160,110-y) def coord(a,b,c,d,t): return a*(1-t)**3+3*b*t*(1-t)**2+3*c*t*t*(1-t)+d*t**3 def bezier(x,y,l,cc): tt.pendown() t=0 for i in range(11): u=coord(l[0],l[2],l[4],l[6],t) v=coord(l[1],l[3],l[5],l[7],t) move(x+cc*u,y+cc*v) t+=.1 def f(l):return [ord(c) - 65 for c in l] def lettre(x,y,svg,cc,c): tt.pensize(int(2*cc)) tt.hideturtle() tt.speed(0) tt.color((255,0,0) if c else (0,0,255)) i = 0 while i<len(svg): if svg[i]=="@": l=[svg[i+1],svg[i+2]] tt.penup() move(x+cc*f(l)[0],y+cc*f(l)[1]) i+=3 elif svg[i]=="?":i+=1 else: for j in range(6):l.append(svg[i+j]) bezier(x,y,f(l),cc) l=[svg[i+4],svg[i+5]] i+=6 clav=[v for v in range(30,53) if v not in [35,41,47]] jeu=sorted(list(clav),key=lambda x:random()) trouve=[] score=0 tt.reset() sleep(.5) while len(trouve) < 10: t1=jeu.index(key(clav)) tt.reset() v1,c1 = t1 // 4, t1 % 2 lettre(40,20,az[v1],2,c1) t2=jeu.index(key(clav)) score+=1 v2,c2 = t2 // 4, t2 % 2 lettre(170,20,az[v2],2,c2) if t1 != t2 and (v1,c1) == (v2,c2) and (v1,c1) not in trouve: trouve.append((v1,c1)) for i,(v,c) in enumerate(trouve): lettre(10+30*i,180,az[v],.5,c) tt.reset() s=max(1,20-score) for i in range(10): lettre(20 + 55 * (i % 5), 60 + 60 * (i // 5), az[2],1,i<s)