memory.py

Created by schraf

Created on September 22, 2022

2.12 KB

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.

Quelques explications

# 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)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.