jeudemains2024.py

Created by florian-allard

Created on August 03, 2024

8.94 KB

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

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.