Pour jouer avec la calculatrice, taper mm(123) : elle choisit une combinaison de 4 pions dont les couleurs sont choisies parmi les 6 proposées. Taper une combinaison de 4 chiffres suivie de EXE, la calculatrice répond par une ou plusieurs fiches blanches (bonne couleur, mal placé) ou noires (bonne couleur, bien placé). Attention, vous n’avez droit qu’à 10 essais!
from random import * from kandinsky import * from math import * def segH(x1,x2,y): for i in range(x2-x1): set_pixel(x1+i,y,color(0,0,0)) def segV(x,y1,y2): for i in range(y2-y1): set_pixel(x,y1+i,color(0,0,0)) def carre(x,y,c,l): for i in range(l): for j in range(l): set_pixel(x+i,y+j,c) def cercle(x0,y0,r,c,e): for i in range(2*e): xd=x0-int((r-i*0.5)/sqrt(2)) xf=x0+int((r-i*0.5)/sqrt(2)) for x in range(xd,xf+1): x1=x y1=y0+int(sqrt((r-i*0.5)**2-(x-x0)**2)) set_pixel(x,y1,c) for j in range(3): x2=x0+y1-y0 y2=y0+x0-x1 set_pixel(x2,y2,c) x1,y1=x2,y2 def couleur(c): cl=[color(255,255,0),color(0,0,255),color(255,0,0),color(0,255,0), color(255,255,255),color(0,0,0)] return cl[c] def plateau(): carre(5,50,color(200,190,210),150) carre(165,50,color(200,190,210),150) for i in range(5): draw_string(str(i),10,175-i*30) draw_string(str(i+5),170,175-i*30) for i in range(6): segH(5,155,50+i*30) segH(165,315,50+i*30) for i in range(2): segV(5+i*160,50,200) segV(25+i*160,50,200) segV(125+i*160,50,200) segV(155+i*160,50,200) set_pixel(155+i*160,200,color(0,0,0))#dernier pt for i in range(270): for j in range(31): set_pixel(20+i,10+j,color(200,190,210)) for i in range(6): segH(20+45*i,65+45*i,10) segH(20+45*i,65+45*i,40) segV(20+45*i,10,40) segV(65+45*i,10,40) set_pixel(290,40,color(0,0,0)) draw_string(str(i+1),27+45*i,17) cercle(50+45*i,25,10,couleur(i),10) prepare(0) def prepare(c): for i in range(4): cercle(38+25*i+160*(c//5),185-30*(c%5),3,color(0,0,0),3) def dessine(ch,c): for i in range(4): cercle(38+25*i+160*(c//5),185-30*(c%5),10,couleur(int(ch[i])-1),10) def evalue(r,c): b=0 for i in range(4): if r[i]>0: cercle(135+10*(b%2)+160*((c-1)//5),180-30*((c-1)%5)+10*(b//2),3,couleur(3+r[i]),3) b+=1 def entrer(): c='' while (len(c)==4 and 0<int(c[0])<7 and 0<int(c[1])<7 and 0<int(c[2])<7 and 0<int(c[3])<7)==False: c=input() return c def mm(s): seed(s) plateau() combi,R="",4*[0] for i in range(4): combi+=str(randint(0,5)) stock=combi cp=0 while sum(R)!=8 and cp<10: R=4*[0]#resultat(0:mc,1:bcmp,2bcbp) choix=entrer() dessine(choix,cp) print(cp,choix,end=" - ") cp+=1 bc=0 #test bcbp for i in range(4): if choix[i]==combi[i]: R[bc]+=2 bc+=1 combi=combi[0:i]+"6"+combi[i+1:4] choix=choix[0:i]+"6"+choix[i+1:4] #test bcmp for i in range(4): for j in range(4): if choix[i]==combi[j] and choix[i]!="6": R[bc]+=1 bc+=1 combi=combi[0:j]+"6"+combi[j+1:4] choix=choix[0:i]+"6"+choix[i+1:4] evalue(R,cp) if cp<10 and sum(R)!=8: prepare(cp) for i in range(4): print(R[i],end="") print("") combi=stock if cp<10: draw_string("Bravo!",140,205) print("Solution trouvee en {} coups".format(cp)) else: draw_string("Echec!",140,205) print("Il fallait trouver {}".format(combi))