Règles : le joueur qui joue choisit une de ses deux mains puis choisit la main adverse à attaquer. Ensuite, la main qui attaque “refile” son nombre de doigts à la main attaquée qui a donc un plus grand nombre de doigts après l’attaque. Si le nombre de doigts atteint exactement 5, alors la main se referme et n’est plus jouable (ni pour attaquer, ni pour être attaquée). Si le nombre de doigts dépasse strictement 5, alors on soustrait 5 et le nombre restant donne le nombre de doigts restants. Si on a une main refermée et un nombre pair de doigts sur l’autre main, alors on peut jouer la main refermée ce qui entraîne un partage du nombre de doigts de l’autre main en la moitié sur chaque main. Le but du jeu est de faire se refermer les deux mains de l’adversaire (autrement dit : faire atteindre 5 doigts à chacune des mains adverses).
from kandinsky import * from ion import * from time import sleep Image={"0":('Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', 'Y#', '>)8#', '=,6#', '6(%,6#', "4/&'$(/#", '4.(-.#', "3'&((.-#", "3&('(''&%''#", "3&('(&)-%#", '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)%*%)&(&$#', '3&:&(&$#', '3&;$)&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '1(B&$#', '/*B&$#', '.+B&$#', '.&&%B&$#', '.%H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', "-'G&$#", '.&G&$#', '.&G&$#', '.&G&$#', '/&F%%#', '/&E&%#', '0&D&%#', "0'B&&#", '1&B&&#', "2&@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#'),"1":('Y#', 'Y#', 'Y#', 'Y#', '6(A#', '4,?#', '4,?#', "3'&'>#", "3&('=#", "3&('=#", '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)&=#', '3&)+8#', '3&)-6#', '3&)-6#', "3&)'&'$(/#", '3&)&(-.#', '3&)&(.-#', "3&)&(''&%''#", '3&)&(&)-%#', '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)%*%)&(&$#', '3&:&(&$#', '3&;$)&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '1(B&$#', '/*B&$#', '.+B&$#', '.&&%B&$#', '.%H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', "-'G&$#", '.&G&$#', '.&G&$#', '.&G&$#', '/&F%%#', '/&E&%#', '0&D&%#', "0'B&&#", '1&B&&#', "2&@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#'),"2":('?(8#', '=,6#', '=,6#', "<'&'5#", "7'$&(&5#", '5-(&5#', '4.(&5#', '3(%((&5#', "3&('(&5#", "3&('(&5#", '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(&5#', '3&)&(,/#', '3&)&(-.#', '3&)&(.-#', "3&)&(''&%''#", '3&)&(&)-%#', '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)%*%)&(&$#', '3&:&(&$#', '3&;$)&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '1(B&$#', '/*B&$#', '.+B&$#', '.&&%B&$#', '.%H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', "-'G&$#", '.&G&$#', '.&G&$#', '.&G&$#', '/&F%%#', '/&E&%#', '0&D&%#', "0'B&&#", '1&B&&#', "2&@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#'),"3":('?(8#', '=,6#', '=,6#', "<'&-/#", "7'$&(-.#", '5-(.-#', "4.(''&-#", '3(%((&)&,#', "3&('(&)&,#", "3&('(&)&,#", '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', '3&)&(&)&,#', "3&)&(&)+'#", '3&)&(&)-%#', '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)%*%)&(&$#', '3&:&(&$#', '3&;$)&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '1(B&$#', '/*B&$#', '.+B&$#', '.&&%B&$#', '.%H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', "-'G&$#", '.&G&$#', '.&G&$#', '.&G&$#', '/&F%%#', '/&E&%#', '0&D&%#', "0'B&&#", '1&B&&#', "2&@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#'),"4":('?(8#', '=,6#', '=,6#', "<'&-/#", "7'$&(-.#", '5-(.-#', "4.(''&-#", '3(%((&)&,#', "3&('(&)&,#", "3&('(&)&,#", "3&)&(&)+'#", '3&)&(&)-%#', '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)%*%)&(&$#', '3&:&(&$#', '3&;$)&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '3&B&$#', '1(B&$#', '/*B&$#', '.+B&$#', '.&&%B&$#', '.%H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', '-&H&$#', "-'G&$#", '.&G&$#', '.&G&$#', '.&G&$#', '/&F%%#', '/&E&%#', '0&D&%#', "0'B&&#", '1&B&&#', "2&@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#'),"5":('?(8#', '=,6#', '=,6#', "<'&-/#", "7'$&(-.#", '5-(.-#', "4.(''&-#", '3(%((&)&,#', "3&('(&)&,#", "3&('(&)&,#", "3&)&(&)+'#", '3&)&(&)-%#', '3&)&(&)-%#', "3&)&(&)'&'$#", '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)&(&)&(&$#', '3&)%*%)&(&$#', '()(&:&(&$#', "',&&;$)&$#", '&.%&B&$#', "&&''%&B&$#", "&&('$&B&$#", "%')*B&$#", '&&*)B&$#', '&&*)B&$#', "&'*(B&$#", "'&+'B&$#", "''+&B&$#", '(&,$C&$#', "('L&$#", ')&L&$#', ")'K&$#", '*&K&$#', "*'J&$#", "+'I&$#", ',&I&$#', ",'H&$#", '-&H&$#', "-'G&$#", ".'F%%#", '/&E&%#', "/'D&%#", "0'B&&#", "0'B&&#", "1'@&'#", "2'>''#", "3'<'(#", "4':')#", '5(6(*#', '6*1)+#', '8:-#', ':6/#', '>/2#')} def IMG(N,x,y,couleur_motif="b",invV=False,invH=False): motif=Image[str(N)] for ligne in range(len(motif)): elt=motif[ligne*(-1)**invV-invV] rang=0 for pos in range(0,len(elt),2): X=x+(-1)**invH*rang-invH*(ord(elt[pos])-35) #fill_rect(x+rang,y+ligne,ord(elt[pos])-35,1,blanc) fill_rect(X,y+ligne,ord(elt[pos])-35,1,"w") rang+=ord(elt[pos])-35 X=x+(-1)**invH*rang-invH*(ord(elt[pos+1])-35) #draw_line(X,y+ligne,X+ord(elt[pos+1])-36,y+ligne,couleur_motif) fill_rect(X,y+ligne,ord(elt[pos+1])-35,1,couleur_motif) rang+=ord(elt[pos+1])-35 #X=x+(-1)**invH*rang-invH*(ord(elt[pos])-35) #fill_rect(x+rang,y+ligne,ord(elt[pos])-35,1,blanc) #fill_rect(x+(-1)**invH*rang-invH*(ord(elt[-2])-35),y+ligne,54-rang,1,"w") #effacer le cadre def cadre(x,y,clr): for k in (0,1): fill_rect(x,y-2+74*k,58,1,clr) fill_rect(x+58*k,y-2,1,74,clr) NbDoigts=[[1,1],[1,1]] joueur=1 for jr in (0,1): draw_string("J"+str(jr),20,60+80*jr,"b") while not [0,0] in NbDoigts: #tant qu'aucun des joueurs n'a perdu #dessin main gauche et main droite for jr in (0,1): for main in (0,1): #draw_string(str(NbDoigts[jr][main]),100+120*main,50+80*jr,"purple") IMG(NbDoigts[jr][main],122+95*main,55+80*jr,"purple",1-jr,1-main) # joueur joue draw_string("Le joueur "+str(joueur)+" joue",80,20,"b") choix_main=1 chg=-1 fin_tour=False fin_tour2=False while not fin_tour: while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: #for k in (0,1): # draw_string("[]"[k],90+120*choix_main+20*k,50+80*joueur,"w") cadre(60+160*choix_main,52+81*joueur,"w") choix_main=1-choix_main #for k in (0,1): # draw_string("[]"[k],90+120*choix_main+20*k,50+80*joueur,"r") cadre(60+160*choix_main,52+81*joueur,"r") sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) if NbDoigts[joueur][choix_main]>0: fin_tour=True else: if NbDoigts[joueur][1-choix_main]%2==0: NbDoigts[joueur][1-choix_main]//=2 NbDoigts[joueur][choix_main]=NbDoigts[joueur][1-choix_main] draw_string("split !",140,72+81*joueur,"r") sleep(0.5) draw_string("split !",140,72+81*joueur,"w") IMG(NbDoigts[joueur][choix_main],122+95*choix_main,55+80*joueur,"purple",1-joueur,1-choix_main) IMG(NbDoigts[joueur][1-choix_main],122+95*(1-choix_main),55+80*joueur,"purple",1-joueur,choix_main) fin_tour=True fin_tour2=True while keydown(KEY_EXE) or keydown(KEY_OK):1 choix_main2=1 chg=-1 #fin_tour2=False while not fin_tour2: while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: #for k in (0,1): # draw_string("[]"[k],90+120*choix_main2+20*k,130-80*joueur,"w") cadre(60+160*choix_main2,133-81*joueur,"w") choix_main2=1-choix_main2 #for k in (0,1): # draw_string("[]"[k],90+120*choix_main2+20*k,130-80*joueur,"r") cadre(60+160*choix_main2,133-81*joueur,"r") sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) if NbDoigts[1-joueur][choix_main2]>0: NbDoigts[1-joueur][choix_main2]=(NbDoigts[1-joueur][choix_main2]+NbDoigts[joueur][choix_main]) if NbDoigts[1-joueur][choix_main2]>=5: cadre(60+160*choix_main2,133-81*joueur,"w") IMG(5,122+95*choix_main2,55+80*(1-joueur),"purple",joueur,1-choix_main2) sleep(0.5) NbDoigts[1-joueur][choix_main2]=NbDoigts[1-joueur][choix_main2]-5 IMG(NbDoigts[1-joueur][choix_main2],122+95*choix_main2,55+80*(1-joueur),"purple",joueur,1-choix_main2) # joueur joue fin_tour2=True while keydown(KEY_EXE) or keydown(KEY_OK):1 cadre(60+160*choix_main2,133-81*joueur,"w") cadre(60+160*choix_main,52+81*joueur,"w") #for k in (0,1): # on efface les crochets de sélection # draw_string("[]"[k],90+120*choix_main2+20*k,130-80*joueur,"w") # draw_string("[]"[k],90+120*choix_main+20*k,50+80*joueur,"w") joueur=1-joueur # partie finie #for jr in (0,1): #for main in (0,1): #draw_string(str(NbDoigts[jr][main]),130+80*main,50+80*jr,"purple") draw_string("J"+str(1-joueur)+" a gagné !",110,120,"g")