from random import randint from kandinsky import * from ion import * from time import sleep Palette={'APN':("w",(204,204,204),(51,102,102),(153,153,255)), 'Bat':("w",(153,153,153),"k",(51,51,51)), 'Champi':("w",(204,153,153),(255,153,102),(102,102,102)), 'Cube3D':("w",(153,153,204),(51,102,255),"k"), 'Fleur':("w",(102,102,102),(204,153,153),(204,102,102)), 'Gameboy':("w","k",(153,153,153),(102,153,255)), 'Herisson':("w",(153,153,153),(51,51,51),"k"), 'Horloge':("w",(82,84,82),(148,149,148),"k"), 'Manette':("w","b",(0,153,153)), 'Oeuf':("w","k",(156,0,255),(0,254,255)), 'Sacoche':("w",(153,153,153),(0,51,0),(102,102,102)), 'Telescope':("w",(153,153,204),(102,102,153),(153,153,255)), 'Tulipe':("w",(204,153,153),(204,102,102),(102,102,102)), 'Bat2':("w",(153,153,153),"k","r"), 'Bus':("w",(153,153,153),"k",(255,153,0)), 'Coeur':("w",(246,185,197),(230,133,139),(230,105,115)), 'Feuille':("w",(204,204,153),(51,102,51),(102,153,102)), 'Fusee':("w",(153,153,204),(102,102,102),(153,153,255)), 'Happy':("w",(102,102,51),(153,153,51),(255,204,0)), 'Hibou':("w",(51,51,51),(153,153,153),"k"), 'Loupe':("w",(153,153,153),(102,102,102),"k"), 'Parapluie':("w",(204,153,153),(153,102,102),(204,102,51)), 'Sad':("w",(129,130,91),(109,55,52),(247,235,0)), 'Truelle':("w","k",(153,51,0),(153,153,153))} Image={'APN': '###############################################$MML#######%H8=#####83)##%3###$MC,##$C###$DC<##$G###=MMK###MMMGL883###(88KG87##8####;HML8Bb`888;MC=M`#BMMMKHML:4b6X88;G8722ZW_##;G##?_#@?##;G##_W#2/##;G##_W#20##;G##_W#2/##;G##?_#@?##;G##22Z__##;H88:6b6X88;MMMM`#BMMMKH888Bb`888;G####8####;L888888888K=MMMMMMMMMG############################################', 'Bat': "######################################################################7#7#####)K#\\$O#M3##><#]MO$JG##O13\\8_)S[#$C&PO#\\^#,#&S#=I%=G#2#&R######&^#&QG#####=^###[#####O####-3###)C####*K###N3#####.##&C#####?)P$]43####;&a9b&S####;#$L#&S####;0#K)&S####'2#_)$3#####2##)#######2##)#########_$#########_##########_##########_######################################", 'Champi': "###########################################################=MG#######)H(=3######L#2TK#####%C#`S-#####-##BS%C####,BS*3$C####K`W###K####GW_#2S;####CbW#@_+####C*3#@_+####K###2SK####-H##(=C####$MMMML#######'#3########?#W#######7_#_7######MW#AK#####$MW#=H3####)LS#;M3###)MNS$KMM3##%L&3)G%M3###G&#%3#,#########################################################", 'Cube3D': '####$L#########=9G#######)H$=3#####$L3#(L#####=:W#B9G###)H#2:S$=3#$LB3#_#*XL#)7#`2:T_#93)`#&W#B#$a3)6W`2:T_B)3)323#_#*S)3)3/`2:T_S)3)3/&W#B#S)3)3/&2:V#S)3)`/&#_&#Ta3)6_&#_&#b)3)326#_&*S)3)3/b#_&_S)3)3/&W_B#S)3)`/&2bV#Ta3)6_&#_&#b)3)326#_&*S)3)3/b#_&_S)3)3/&W_B#S)3)7/&2bV#S93$L?&#_&#XL##)P&#_&$]3###=:#_&9G####$N3_*L######)H`=3#######=aG########$L#####', 'Fleur': '####$9#########$83########$E7########$C+########$C%C#######,#%3#######(##3#######7.#3####%9%;1%3####H8<3O$3###$;#H3[(8;-7(##(3_HM887I#+$>bW##CG9#1#a#Q###G,;.E[M.b_#7#H%bT8F]M#;#$C.DE5S#%3#%;&D%5]#,C##9.D<6X89###,8S9.L8;###,9a#R%3####9#2bb#;###%3#aP&C;###$C.[(%S;###$CQ#H%S;###$C#%8%S7###$C#H<##G###$3+K$C#(###%3G#%;#,C###9;##HMHC###H3##$8=####(########', 'Gameboy': "#$8888888###,MMMMMMLC##,######$C##,2bbbbbTC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,/#####TC##,2bbbbbTC##,######$C##,######$C##,#2S###$C##,#/S##b$C##,&_b##V$C##,&#&##b$C##,&_b###$C##,#/S&_#$C##,#2S&/#$C##,###&_#$C##,######$C##,######$C##,##3'$#$C##,#$37(#$C##,#$#3'#$C##,######(###,MMMMMM7###$8888883##", 'Herisson': "###########################################################$M8K#######%bab3#####)bbbbD#####Bbbbb^3###(RbbbbbC###RbbbbbbW##%bbbbbbbW##*bbbbbbbW##)bbbbbbbS##BbbbbbJbC#$bbbbbb58G#%bbbbbbC,=3%bbbbb`#(%C%bbbbbW##)3.bbbbbC##<#.bbbba##$G#(bbb]7#$)##$b\\K##')<##$a3G##;&`##$a$bMMK%a###9%b3#,%a###)NbC#)Na#########################################################", 'Horloge': "##########################7RW#######R[-B[#####&W###B#####2##7#&[####W$37(#A###&3##K##*###2&C###.&S##O%[###Q#[##W#C#K#+#?##S3##7##'/#%SS##7##/0#&3###7###*#&C###7###.#&D;##_##H.#&D;#$_##H.#&C##.3###.#&3##Q####*#$S3#K###'0##S3#####'/##W#C###[#?##O%[###Q#[##+&C###.&S######K##*####W$37(#A####R%#7#&[####&W###B######RYMB[#######BbW##########################", 'Manette': '##############################################################################(88888883##888888887#$3#######(#(3#######(3(#######K$37#K#####K#77#K#######77-MC###K#K77-MC###K#K77#K#######77#K#M%K#K#77#######K#77#########77###887###77##(8883##77##8##$7##77#$7###8##7(#$3###(#$3(3(3###(3(3$88####$88##87#####87#############################################', 'Oeuf': '################################################$8#########9M7#######$=MH#######(MMH3######9MLB7######=L:b7#####$88bX8#####$Bb`9L#####(bb8ML3####*`8=MH3####(8MMM:3####)MMMLB7####9MMM:b7####=MM8bX7####9L8B`9G####88bb8MG####:bbX=MG####:bX9MM7####(89MML3####(MMMM83####$MMMH@3####$=M8BX######88Bb7######(BbX3#######887#####################################', 'Sacoche': '################################################(83#######$MML#######&S#2#######&S#2####$MMVMMN1ML#%X83887(8A#%3#######)#%3#######)#%3#######)#%3#######)#&S#######2#$NbbbbbbbL##2aQRbaabW#$#$JS#%9#$#%3$MS#%M#)#%3#8##$8#)#%3#######)#%3#######)#%3#######)#%3#######)#%3#######)#%3#######)#&MMMMMMMMN##888888887#############################################', 'Telescope': '##################$7#########)M3########,%R#######$L$JS#####$ML$C_####$MG)#G_###$MG#)#;?###%G##%3;?##$=###%C,_##-M3##$C-S23L%C###G)#bYK$D`#(K-#W`;#RbXM=L#_?,$_#a3$3#_0M>Vb2####029JV:*####22#&:&:####*_#&Vb2#####3#$S_0########`$_#######$Rb\\#######%59)#######))953######,-9DC######;=9GG######GI9;;#####$EE9-,#####%959)9#####$M$L%L######7#7#7##############', 'Tulipe': "#####<#########$M3########)4G######&`<#<BS####&b_#2bS####&#B#`#S####&#&VS#S####&##b#######&##@##S####&##/##S####&3#/#$S####&S#/#&S####$S#/#&3#####_#/#2######'#/#_#######W/&S#######bbb#####$7#$b3#(###%MG#/#)M###%4=3/$L4###%3$G/)3$###$C#</<#%####G#)@G#)####;#%QC#,####,#$M3#;####)3#M#$G####$K#<#-3#####=7<(L######$MMM3#######$<3#########/##########/#####", 'Bat2': '####################################(3########9ML#######)MMG#######=MMC######$MMM3######)MMM3######=MMM3$######)MM3(###3##$MMG=H3$G###MMLQM#$L###=MMM]#%M###=MMML#)M3##=MMML4MMC##%MMMMMMMG###MMMMMMMG###=MMMMMMG###=MMMMMMK###=MMMMMMK###MMMMMMMK###9MMMMH=K###$ML#(#$G###$HG####7###$#########################################################################', 'Bus': '########################################################################################$MMMMMMML##%#%#%#%3$C#%#%#%#$3#7#%#%#%#$3#+#%#%#%#$3#+#%#%#%3%3#+#%MMMMMM3#+#%bbbbbbL8;#%bbbbbbX8;#%bbbbbbbb[#%`:`88B`:=#%Y=`88:\\<I#%[%Bbbb;)<#%K%MMMMG%K##-9####,<###$K####%G##########################################################################################', 'Coeur': '###############################################################################$RG#9L#####.b`$RMC####Rbb:baG###$bbbNbaK###$bbbbbbP###$bbbbbbP###$bbbbbbL###$bbbbbbL####Rbbbbb[####BbbbbbW####.bbbbbC####*bbbbb3####%bbbb`######Rbbb[######>bbbC######)bba#######$Rb[########.bC########$\\##########3############################################################', 'Feuille': '################################################$O#########1\\#########Qa########&QMS#######2bPO#######>^XL#######QbZa3#####&JaaA3#####*`QN^C#####2^^RRG#####-Aaaa_#####-ZIN^[#####2PbRPK#####2^AQZO#####)Aa^^W#####$RLQNS######=ZJ]3######&US_########%C##########O##########[##########[##########-##########1##########%C#####################################', 'Fusee': '#######)MM3######)M88K#####$M<##;#####)G)##;#####<#%3#;####$G#$G#;####)3##<#;##$b\\#(#)3;##2XK$b_$LK##_$G&S2#)G#&S%32#&#$C#2#)#2#&3%C#_#<#2#&3)3&`#K#*32#-#$baC#&b`#<###)G##BS$G###-<####)3##$L)3###<###=M4G##%G###L$G<##=S###=#<)3)HS###MC)4GM$S##$GK$G=G&S##)3-#<M#&3##)#%C-J#2###,##K-&#_###,##-<&6S###;##-K&b####;#$LG&_####K$=C#$S####LMH########MG#########', 'Happy': '####################################$888#######88887#####$8=MH8#####(9bba83####8Rbbb\\7###$9bbbba8###(>bbbbbH3##(B]NbMRX3##8RH9a8>\\7##8bH9a8>`7##9b]NbMRa7##9bbbbbba7##9bbbbbba7##9bbbbbba7##9bbbbbba7##9bbbbbba7##8b9bba:`7##8R8Rb\\:\\7##(BH8L8>X3##(>`888bH3##$9bL8Na8####8Rbbb\\7####(9bba83####$8=MH8######88887######$888#####################################', 'Hibou': '#$C#####,###&S#####2###&W#H8;#B###&B:`8b:Z###&EA##%Y.###&C#####.###&JC###.>###&D`7#8`.###&CBBNZW.###.E[$`#Q&C##.$5;_I(&C##.&FW7B.&C##.&4[_P*&C##.$S%a#0&C##.#@J:<W&C##.#*b&b3&C##b##&b##&_##b[##_##R_##]BC###.YO##[$W###@#O##[#P##$[#O##7#.C#.C#7##?#$6&(##W##O#%S#1##[##1#%[#Q#%S##(##[7O#$3##.C#7#7#.C##$S#?#W#0####W#O#[#?####RCQ%[.[####$`@LX`######Hbb`;###', 'Loupe': '##############$7########$RbG#######Bbbb3#####%bL9b[#####.`##*a#####BC##$b3####b####BC###$`####*W###%[####&[###&[####%_###*W<###%_###*WQ###$`###*WR###%_###&[B3##%[###%_2\\##*[###$`*bW#.W####b4R[#BC####BW)G$b3####.`##>b3####%b]=bbW#####>bba:`#####$RaG$b3######3##BW#########*`#########$b3#########BW#########*W#########$3##################################', 'Parapluie': '################;#########(L3#######*bbb3#####$`##$`#####23###*S####W#####?###&3#####*###0######$S##?#######W##W#######?#$S#######0#&3#######*#&BW*`$b3BZ#*WB`*b4bWB3*#&S#_#2#&3*#$S#?#*#$3$##3#K#$##3#####K##########K##########K##########K##########K##########K##########K##########K##########K##########K##########K-#########<<#########-K###############', 'Sad': '###########################7########$=MH#######MMMMK#####(M:b9L3####=Jbbb=G###$MbbbbaL###$NbbbbbL###-Rbbbbb]C##-BbbbbbYC##=bbbbbbaG##<bXbb`B`G##Lb]Rb]R`K##Nb]Rb]RbK#$NbXbb`BbL#$NbbbbbbbL##NbbbbbbbK##Lbbbbbb`K##<bbYMBb`G##=bbMMNbaG##-BaL`MbYC##-R`BbXb=C##$NbbbbbL###$MbbbbYL####=Jbbb=G####(M:b9L3#####MMMMK######$=MH#########7###########################', 'Truelle': '####$8#########(L3########)M3########YM?########YM?########YM?########YM?########YM?########YM?########YM?########(83########0`S########$$#########$$#########$$#########$$#########$$#######X88$88?####Z#0$S&?####(#$$#$3####$S$$#0#####&3$8#*######7#_#7######*##&3######0##$S######$3#(########?#W########X8?########($3########$$#########&:##########7#####'} Images=sorted(Image.keys()) def IMG(carte,x,y): for j in range(32): for i in range(0,32//3+1): clr=ord(Image[carte][(32//3+1)*j+i])-35 clrs=((clr//(4**2))%4,(clr//4)%4,clr%4) for k in range(3): if 3*i+k<32: set_pixel(x+3*i+k,y+j,Palette[carte][clrs[k]]) def cadre(x,y,clr): for k in (0,1): fill_rect(x-1,y-1+33*k,34,1,clr) fill_rect(x-1+33*k,y-1,1,34,clr) record=999999 #début du jeu IMG("Tulipe",10,10) IMG("Fleur",278,10) IMG("Telescope",10,180) IMG("Fusee",278,180) draw_string("Jeu de mémoire",90,20,"purple") draw_string("Choix du mode",95,60,"b") draw_string("lettres images",60,85,"b") mode=1 chg=1 while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: for k in (0,1): draw_string("[]"[k],40+100*k+140*mode-10*k*mode,85,"w") mode=1-mode for k in (0,1): draw_string("[]"[k],40+100*k+140*mode-10*k*mode,85,"r") sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 draw_string("Choix de la difficulté",50,130,"b") draw_string("facile moyen",65,155,"b") diff=1 chg=1 while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: for k in (0,1): draw_string("[]"[k],40+100*k+140*diff-10*k*diff,155,"w") diff=1-diff for k in (0,1): draw_string("[]"[k],40+100*k+140*diff-10*k*diff,155,"r") sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 N=12+12*diff while 1: fill_rect(0,0,320,240,"w") K=[] for n in range(N):#65,65+25): for i in range(2): K.append(n)#chr(n)) L=[] for j in range(len(K)): L.append(K.pop(randint(0,len(K)-1))) #print(L) #for i in range(len(L)): # draw_string(L[i],10+30*(i%10),5+40*(i//10),"b") #print(sum(L)) for i in range(len(L)): draw_string(".",30+35*(i%8),6+33*(i//8)+10*(diff==0),"b") chg=-1 pos=1 nb_reveles=0 reveles=[] positions=[] nb_essais=0 while L.count(".")!=len(L): if chg: #draw_string("[",10+35*(pos%8),5+35*(pos//8),"w") #draw_string("]",40+35*(pos%8),5+35*(pos//8),"w") cadre(20+35*(pos%8),2+33*(pos//8)+10*(diff==0),"w") pos=(pos+chg)%len(L) #draw_string("[",10+35*(pos%8),5+35*(pos//8),"r") #draw_string("]",40+35*(pos%8),5+35*(pos//8),"r") cadre(20+35*(pos%8),2+33*(pos//8)+10*(diff==0),"purple") sleep(0.2) if (keydown(KEY_EXE) or keydown(KEY_OK)) and nb_reveles<2 and L[pos]!="." and (pos not in positions): while keydown(KEY_EXE) or keydown(KEY_OK):1 if mode==1: IMG(Images[L[pos]],20+35*(pos%8),2+33*(pos//8)+10*(diff==0)) else: draw_string(chr(L[pos]+65),30+35*(pos%8),6+33*(pos//8)+10*(diff==0),"b") nb_reveles+=1 reveles.append(L[pos]) positions.append(pos) sleep(0.4) if nb_reveles==2: nb_essais+=1 if reveles[0]==reveles[1]: L[positions[0]]="." L[positions[1]]="." else: for i in positions: fill_rect(20+35*(i%8),2+33*(i//8)+10*(diff==0),32,32,"w") draw_string(".",30+35*(i%8),6+33*(i//8)+10*(diff==0),"b") reveles=[] nb_reveles=0 positions=[] chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)+8*(-keydown(KEY_UP)+keydown(KEY_DOWN)) draw_string("Nombre d'essais : "+str(nb_essais),60,200,"purple") draw_string(str(nb_essais),240,200,(("purple","r")[nb_essais>record],"g")[nb_essais<record]) fill_rect(30,110,260,85,"w") draw_string("Bravo !",130,120,"purple","cyan") if nb_essais<record: draw_string("Record battu !",100,140,"purple","cyan") record=nb_essais draw_string("OK ou EXE pour rejouer",55,160,"b") sleep(2) while not (keydown(KEY_OK) or keydown(KEY_EXE)):1 while keydown(KEY_OK) or keydown(KEY_EXE):1