Adaptation du jeu “6 qui prend” avec la possibilité de jouer à plusieurs.
from random import randint from kandinsky import * from time import sleep from ion import * images={"grande":('&$6$&#', '%%&$.$&%%#', "$%'%+&'%$#", "$%'&*&'%$#", '$%(&$%%&(&#', "#&(.''#", "#'&7#", '#=$#', "$9'#", '&4*#', '(1+#', "'3*#", "'3*#", "'3*#", '(1+#', ')/,#', '*--#', '*--#', ')/,#', '(1+#', "'3*#", "'3*#", '(1+#', ')/,#', '++.#', '++.#', ',)/#'),\ "moyenne":('$$.$$', '#%%$($%%#', '#%%%&%%%#', '#2#', '#2#', '&,&', '&,&', "'*'", '&,&', '&,&', '&,&', '&,&', '(((', '((('), "0":("%'%#", "$$'$$#", '#$%%%$#', '#$$$%$$$#', '#$$$%$$$#', '#$$$%$$$#', '#$$$%$$$#', '#$$$%$$$#', '#$$$%$$$#', '#$%%%$#', "$$'$$#", "%'%#"),"1":('&&%#', '%$%$%#', '$$&$%#', '#$%$$$%#', "#'$$%#", '&$$$%#', '&$$$%#', '&$$$%#', '&$$$%#', '$&$&#', '$$($#', '$*#'),"2":("%'%#", "$$'$$#", '#$%%%$#', '#$$$%$$$#', '#&%$$$#', "'$%$#", '&$%$$#', '%$%$%#', '$$%$&#', '#$%(#', '#$)$#', '#+###'),"3":('$)$#', '#$)$#', '#)$$#', '($$$#', '%&%$#', "$$'$$#", "$'%$#", '($$$#', '$%%$$$#', '#$%%%$#', "$$'$$#", "%'%#"),"4":("'&$#", '&$%$$#', '%$&$$#', '$$%$$$$#', '#$%%$$$#', '#$$$$$$$$#', '#$$%%%#', '#$)$#', '#($%#', "'$$$$#", "'$$$$#", "'&$#"),"5":('$*#', '#$)$#', '#$$)#', '#$$$(#', "#$$'%#", '#$($$#', '#(%$#', '($$$#', '#&%$$$#', '#$%%%$#', "$$'$$#", "%'%#"),"6":('%($#', '$$($#', "#$%'$#", '#$$$(#', "#$$'%#", '#$($$#', '#$$&%$#', '#$$$%$$$#', '#$$$%$$$#', '#$%%%$#', "$$'$$#", "%'%#"),"7":('#+###', '#$)$#', '#(%$#', "'$$$$#", '&$%$$#', '&$$$%#', '%$%$%#', '%$$$&#', '$$%$&#', "$$$$'#", "$$$$'#", "$&'#"),"8":("%'%#", "$$'%#", '#$%%%$#', '#$$$%$$$#', '#$%%%$#', "$$'$$#", '#$%%%$#', '#$$$%$$$#', '#$$$%$$$#', '#$%%%$#', "#%'$$#", "%'%#"),"9":("%'%#", "$$'$$#", '#$%%%$#', '#$$$%$$$#', '#$$$%$$$#', '#$%%%$#', '$$($#', "%'$$#", '($$$#', '#(%$#', '#$($$#', '#)%#'),\ "0_":('#&###', '#$$$#', '#$$$#', '#$$$#', '#&###'),"1_":('$$$#', '#%$#', '$$$#', '$$$#', '#&###'),"2_":('#&###', '%$#', '#&###', '#$%#', '#&###'),"3_":('#&###', '%$#', '#&###', '%$#', '#&###'),"4_":('#$$$#', '#$$$#', '#&###', '%$#', '%$#'),"5_":('#&###', '#$%#', '#&###', '%$#', '#&###'),"6_":('#&###', '#$%#', '#&###', '#$$$#', '#&###'),"7_":('#&###', '%$#', '$$$#', '#$%#', '#$%#'),"8_":('#&###', '#$$$#', '#&###', '#$$$#', '#&###'),"9_":('#&###', '#$$$#', '#&###', '%$#', '#&###'),\ "0i":('+#', "%'%#", '$%%%$#', "$$'$$#", "$$'$$#", "$$'$$#", "$$'$$#", "$$'$$#", "$$'$$#", '$%%%$#', "%'%#", '+#'),"1i":('+#', '&%&#', '%&&#', '$%$$&#', "'$&#", "'$&#", "'$&#", "'$&#", "'$&#", "'$&#", '%($#', '+#'),"2i":('+#', "%'%#", '$%%%$#', "$$'$$#", ')$$#', '(%$#', "'%%#", '&%&#', "%%'#", '$%(#', '$)$#', '+#'),"3i":('+#', '$)$#', ')$$#', ')$$#', '(%$#', "%'%#", '(%$#', ')$$#', ')$$#', '$%%%$#', "%'%#", '+#'),"4i":('+#', "'%%#", '&&%#', '%%$$%#', '$%%$%#', '$$&$%#', '$$%%%#', '$)$#', '($%#', '($%#', '($%#', '+#'),"5i":('+#', '$)$#', '$$)#', '$$)#', '$$)#', '$(%#', '(%$#', ')$$#', ')$$#', '$%%%$#', "%'%#", '+#'),"6i":('+#', '%($#', '$%(#', '$$)#', '$$)#', '$(%#', '$$&%$#', "$$'$$#", "$$'$$#", '$%%%$#', "%'%#", '+#'),"7i":('+#', '$)$#', '(%$#', '($%#', "'%%#", "'$&#", '&%&#', "&$'#", "%%'#", '%$(#', '%$(#', '+#'),"8i":('+#', "%'%#", '$%%%$#', "$$'$$#", '$%%%$#', "%'%#", '$%%%$#', "$$'$$#", "$$'$$#", '$%%%$#', "%'%#", '+#'),"9i":('+#', "%'%#", '$%%%$#', "$$'$$#", "$$'$$#", '$%%%$#', '%($#', ')$$#', ')$$#', '(%$#', '$(%#', '+#')} def cadre_carte(X,Y,clr,hauteur=49): for k in (0,1): fill_rect(X+1,Y+k*(1+hauteur),37,1,clr) fill_rect(X+38*k,Y+1,1,hauteur,clr) def couleurs(carte): # couleur_nombre,couleur_tete,couleur_fond,couleur_tetes,couleur_nombres if carte==55: return ("y","r","purple","r","orange") elif carte%11==0: return ((50,255,100),"b","r","g","r") elif carte%10==0: return ("y","g",(50,255,100),(200,200,0),"g") elif carte%10==5: return ("cyan","b","cyan",(0,200,200),"b") else: return ((230,210,255),"purple","w",(160,130,235),"purple") def dessin(nombre,taille,posX,posY,clr,decalage_chiffre=0,hauteur=49): # taille parmi "", "i", "_" for chiffre in range(len(str(nombre))): motif=images[str(nombre)[chiffre]+taille] #dec=-4*(carte>99)+4*(carte<10) for ligne in range(min(hauteur-25,len(motif))): elt=motif[ligne] rang=posX+decalage_chiffre*chiffre for pos in range(0,len(elt)-1,2): rang+=ord(elt[pos])-35 fill_rect(rang,posY+ligne,ord(elt[pos+1])-35,1,clr) rang+=ord(elt[pos+1])-35 def dessinTete(taille,posX,posY,clrs,hauteur=49): motif=images[taille] #hauteur=(12+len(motif))*(taille=="moyenne")+H_reduite*(taille=="grande") for ligne in range(min(hauteur-12,len(motif))): elt=motif[ligne] rang=posX for pos in range(0,len(elt)-1,2): for p in (0,1): fill_rect(rang,posY+ligne,ord(elt[pos+p])-35,1,clrs[p]) rang+=ord(elt[pos+p])-35 def minitete(x,y,clr,renversee=False): fill_rect(x,y,1,3,clr) fill_rect(x+1,y+1-2*renversee,2,3,clr) fill_rect(x+3,y,1,3,clr) def position_minitetes(carte): if carte==55: return ((10,2),(15,2),(20,2),(25,2),(13,7),(18,7),(23,7)) elif carte%11==0: return ((13,2),(18,2),(23,2),(16,7),(21,7)) elif carte%10==0: return ((15,2),(20,2),(18,7)) elif carte%10==5: return ((15,2),(20,2)) else: return ((17,2),) # ne pas effacer la virgule solitaire def IMG(carte,x,y,hauteur=49): # dessin d'une carte couleur_nombre,couleur_tete,couleur_fond,couleur_tetes,couleur_nombres=couleurs(carte) fill_rect(x+1,y+1,37,hauteur,"w") # on efface avant de dessiner la carte # cadre cadre_carte(x,y,"purple",hauteur) # petites têtes for (X,Y) in position_minitetes(carte): minitete(x+X,y+(carte%11!=0 and carte%10!=0)+Y,couleur_tetes) if hauteur==49: minitete(x+35-X,y-(carte%11!=0 and carte%10!=0)+48-Y,couleur_tetes,True) #renversee # petits numéros for chiffre in range(len(str(carte))): motif=images[str(carte)[chiffre]+"_"] dec=-4*(carte>99)+4*(carte<10) for ligne in range(len(motif)): elt=motif[ligne] rang=4*chiffre for pos in range(0,len(elt)-1,2): rang+=ord(elt[pos])-35 for m in (0,1): fill_rect(x+2+m*(28+dec)+rang,y+3+ligne,ord(elt[pos+1])-35,1,couleur_nombres) if hauteur==49: fill_rect(x+79+28-m*(28+dec)-ord(elt[pos+1])-35-rang,y+43+4-ligne,ord(elt[pos+1])-35,1,couleur_nombres) rang+=ord(elt[pos+1])-35 # grande tête dessinTete("grande",x+6,y+12,(couleur_fond,couleur_tete),hauteur) # grand numéro if hauteur>25: for k in (0,1): dessin(carte,"i"*k,x+10-4*(carte>99)+4*(carte<10),y+25,("purple",couleur_nombre)[k],8,hauteur) def menu(Var): global NbTot,NbTotHum,Serie_complete,AffCartes chg=-1 while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: if Var=="NbTot": NbTot=(NbTot+chg-2)%9+2 draw_string(" "+str(NbTot)+" ",145-5*(NbTot==10),50,"b") resultat=NbTot elif Var=="NbTotHum": NbTotHum=(NbTotHum+chg)%(NbTot+1) draw_string(" "+str(NbTotHum)+" ",145-5*(NbTotHum==10),100,"b") resultat=NbTotHum elif Var=="Serie_complete": Serie_complete=not Serie_complete draw_string(" "+(str(4+10*NbTot)+" ","104")[Serie_complete],175-5*Serie_complete,150,"b") resultat=Serie_complete elif Var=="AffCartes": AffCartes=not AffCartes draw_string(("non","oui")[AffCartes],145,200-50*(NbTot==10),"b") resultat=AffCartes sleep(0.2) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 return resultat def XX(jr): return 10+260*(jr > (NbTot-1)//2) def YY(jr): return 15+(H_reduite+12)*int(abs((NbTot+1)//2-jr-0.5)) def plus(X,Y,S): # croix rouge du + for m in (0,1): fill_rect(X+8-m+7+4*(S>9)+4*(S>99),Y+4+m,1+2*m,3-2*m,"r") def ramasse(): Cartes_recuperees[Ordre[i]]+=Piles[Choix_Pile] # on récupère la pile fill_rect(65+50*Choix_Pile,10,40,31+20*len(Piles[Choix_Pile]),"w") # on efface la pile #sleep(0.5) score=0 for carte in Piles[Choix_Pile]: score += 1+1*(carte%10==5)+2*(carte%10==0)+4*(carte%11==0)+1*(carte==55) if score>0: # on affiche le score en rouge en petit plus(X,Y,scores[Ordre[i]]) dessin(score,"_",X+17+2+4*(scores[Ordre[i]]>9)+4*(scores[Ordre[i]]>99),Y+3,"r",4) minitete(X+17+7+4*(scores[Ordre[i]]>9)+4*(scores[Ordre[i]]>99)+4*(score>9)+4*(score>99),Y+4,"r") scores[Ordre[i]]+=score Piles[Choix_Pile]=[Carte] # et à la place on y place la carte jouée def afficherMain(joueur): for j in range(len(Mains[joueur])): IMG(Mains[joueur][j],5+min(45,270//max(1,len(Mains[joueur])-1))*j,165) JCadre(joueur,"g") def JCadre(joueur,clr,seuil=8): draw_string("J"+str(joueur+1),X+9-5*(joueur==9),Y+H_reduite//2-7,clr) if NbTot>seuil: cadre_carte(X,Y,"purple",H_reduite) # cadre de hauteur réduite Titres=("Les cartes","Le plateau","Le déroulement","Les points","Les modes","La vitesse") Regles=(("Leur numéro, écrit en","grand, est rappelé","dans leurs coins.","","Leur valeur est le nombre de","têtes de taureau affichées","tout en haut de la carte : ","1, 2, 3, 5 ou 7 têtes."),\ ("Les cartes sont placées par","ordre croissant sur 4 piles."," "*30,"Le score de la partie (vert),","de la manche (bleu) et du","tour (rouge) est sur les","côtés pour chaque joueur.","","En bas : la main du joueur."),\ ("Chaque manche dure 10 tours.","À chaque tour, chaque joueur","joue une de ses 10 cartes.","","Les cartes jouées sont placées","par ordre croissant sur les","4 piles du jeu sur une carte","de numéro inférieur mais le","plus proche possible."),\ ("Un joueur ramasse la pile de","son choix si sa carte a un","numéro trop petit pour être","placé, ou la pile concernée", "si sa carte en est la 6ème","carte. 6 qui prend ! :D","","Le but est de ramasser le","minimum de têtes de taureau !","À 66 têtes, c'est fini !"),\ ("Au lancement, on choisit le","nombre total de joueurs dont","le nombre de joueurs humains.","","Puis, on joue avec exactement","10×(Nombre total de joueurs)+4","cartes dont les numéros sont","consécutifs en partant de 1,","ou choisis entre 1 et 104."),\ ("Avec 0 joueur humain, on ","montre ou non la main des ","joueurs IA qui jouent. ","","Un appui maintenu sur la","touche shift accélère le jeu.","","Un appui maintenu sur la","touche p met le jeu en pause.")) NbTot=4 # écran d'accueil #fill_rect(0,0,320,222,"w") draw_string("6 qui prend (cher) !",60,90,"g") draw_string("Appuyer sur OK",90,120,"purple") # affichage des cartes for k in range(6): IMG((15,7,100,77,55,42)[k],10+130*(k%3),10+150*(k//3)) while not (keydown(KEY_EXE) or keydown(KEY_OK)):1 while keydown(KEY_EXE) or keydown(KEY_OK):1 fill_rect(0,0,320,222,"w") page=1 chg=-1 draw_string("<"+" "*22+">",40,10,"b") while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: draw_string(Titres[page],160-5*len(Titres[page]),10,"w") # on efface le titre for ligne in range(len(Regles[page])): # on efface la page draw_string(Regles[page][ligne],15,40+18*ligne,"w") page=(page+chg)%6 draw_string(Titres[page],160-5*len(Titres[page]),10,"g") # on affiche le nouveau titre for ligne in range(len(Regles[page])): # on affiche la nouvelle page draw_string(Regles[page][ligne],15,40+18*ligne,"purple") if page==0: IMG(42,245,40) for k in range(5): carte=(1,5,10,11,55)[k] for (X,Y) in position_minitetes(carte): minitete(30*k+20*(k==4)+X,185+(carte%11!=0 and carte%10!=0)+Y,couleurs(carte)[3]) if page==1: for k in range(3): dessin((42,7,2)[k],"_",140+17*k+2,135+3,"gbr"[k],4) minitete(140+17*k+7+4*(k==0),135+4,"gbr"[k]) plus(157,135,2) #if page==3: draw_string("66",260,202,"wr"[page==3]) dessinTete("moyenne",283,204,("w","wr"[page==3])) sleep(0.3) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 while 1: fill_rect(0,0,320,222,"w") draw_string("6 qui prend (cher)",70,5,"g") draw_string("nombre total de joueurs",45,30,"purple") NbTot=5 draw_string("< >",130,50,"r") NbTot=menu("NbTot") draw_string("dont nombre de joueurs humains",10,80,"purple") NbTotHum=2 draw_string("< >",130,100,"r") NbTotHum=menu("NbTotHum") Serie_complete=True if NbTot < 10: draw_string("choix de la série de cartes",25,130,"purple") draw_string("< de 1 à >",90,150,"r") Serie_complete=menu("Serie_complete") AffCartes=True if NbTotHum==0: draw_string("montre la main des joueurs",30,180-50*(NbTot==10),"purple") draw_string("< >",125,200-50*(NbTot==10),"r") AffCartes=menu("AffCartes") H_reduite=min(49,(200-70*AffCartes)//((NbTot+1)//2)-10) # Début d'une partie scores_tot=[0 for k in range(NbTot)] scores=[0 for k in range(NbTot)] while max(scores_tot)<66: fill_rect(0,0,320,222,"w") Jeu=[k for k in range(1,104*Serie_complete+(4+10*NbTot)*(1-Serie_complete)+1)] Mains=[[] for k in range(NbTot)] for joueur in range(NbTot): for k in range(10): Mains[joueur].append(Jeu.pop(randint(0,len(Jeu)-1))) Mains[joueur]=sorted(Mains[joueur]) Piles=[[] for k in range(4)] for k in range(4): Piles[k].append(Jeu.pop(randint(0,len(Jeu)-1))) IMG(Piles[k][-1],65+50*k,10) for k in range(NbTot): X=-2+XX(k) Y=-10+YY(k) dessin(scores_tot[k],"_",X+2-4*(scores_tot[k]>9),Y+3,"g",4) minitete(X+7,Y+4,"g") for i in range(NbTot): X=XX(i) Y=YY(i)#15+min(60,(135//((NbTot+1)//2)))*int(abs((NbTot+1)//2-i-0.5)) fill_rect(X+1,Y+1,37,H_reduite,"w") JCadre(i,"b",0) # le joueur sera le joueur numéro 0 # il faudra répéter 10 fois les instructions d'un tour de jeu Cartes_recuperees=[[] for k in range(NbTot)] for tour in range(10): Cartes_jouees=[0 for k in range(NbTot)] for j in range(NbTot): # on affiche le nombre de têtes pour chaque joueur X=10+XX(j) Y=-10+YY(j) fill_rect(X,Y+2,39,7,"w") # on efface le score bleu et la tête bleue de la partie en cours scores[j]=0 for carte in Cartes_recuperees[j]: scores[j] += 1+1*(carte%10==5)+2*(carte%10==0)+4*(carte%11==0)+1*(carte==55) dessin(scores[j],"_",X+2,Y+3,"b",4) # on affiche le nouveau score bleu de la partie en cours minitete(X+7+4*(scores[j]>9)+4*(scores[j]>99),Y+4,"b") for joueur in range(NbTot): X=XX(joueur) Y=YY(joueur) #if NbTotHum==0 and AffCartes==True: # s'il n'y a aucun joueur humain et qu'on demande à afficher les cartes #afficherMain(joueur) # on affiche les cartes de la main et en vert le numéro du joueur #sleep(1*(1-keydown(KEY_SHIFT))) #while keydown(KEY_LEFTPARENTHESIS):1 #fill_rect(0,165,320,52,"w") # on efface les cartes if joueur<NbTotHum: if NbTotHum>1: draw_string("appuyer sur OK pour montrer",25,150,"purple") draw_string("les cartes de J"+str(joueur+1),80,170,"purple") while not (keydown(KEY_EXE) or keydown(KEY_OK)):1 while keydown(KEY_EXE) or keydown(KEY_OK):1 draw_string("appuyer sur OK pour montrer",25,150,"w") draw_string("les cartes de J"+str(joueur+1),80,170,"w") afficherMain(joueur) # on affiche les cartes de la main et en vert le numéro du joueur #sleep(1) #choix de la carte à jouer choix=0 chg=1 pos=min(45,270//max(1,len(Mains[joueur])-1)) while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: #cadre(choix,"w") fill_rect(5+pos*choix,155,39,10,"w") IMG(Mains[joueur][choix],5+pos*choix,165) # on descend la précédente carte sélectionnée choix=(choix+chg)%(len(Mains[joueur])) IMG(Mains[joueur][choix],5+pos*choix,155) # on monte la nouvelle carte sélectionnée fill_rect(5+pos*choix,206,39,10,"w") sleep(0.3) #cadre(choix,"r") chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 fill_rect(5+pos*choix,155,39,51,"w") #on efface la carte jouée sleep(0.5*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 Cartes_jouees[joueur]=Mains[joueur].pop(choix)#randint(0,len(Mains[joueur])-1)) # à retirer fill_rect(0,165,320,52,"w") # on efface les cartes de la main if NbTotHum==1: # on réaffiche les cartes restantes afficherMain(joueur) #choix de la carte à jouer else: choix=randint(0,len(Mains[joueur])-1) if NbTotHum==0 and AffCartes==True: afficherMain(joueur) sleep(1*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 pos=min(45,270//max(1,len(Mains[joueur])-1)) IMG(Mains[joueur][choix],5+pos*choix,155) # on monte la nouvelle carte sélectionnée fill_rect(5+pos*choix,206,39,10,"w") # on efface le bas de la carte non montée sleep(1*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 fill_rect(5+pos*choix,155,39,10,"w") # on efface le haut de la carte montée fill_rect(0,165,320,52,"w") # on efface les cartes Cartes_jouees[joueur]=Mains[joueur].pop(choix) # à modifier pour au moins éviter de jouer une carte qui suit immédiatement la dernière carte d'une pile de 5 cartes JCadre(joueur,"b") # on réaffiche en bleu le numéro du joueur sleep(1*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 for i in range(NbTot): # on affiche les cartes jouées X=XX(i) Y=YY(i) IMG(Cartes_jouees[i],X,Y,H_reduite) sleep(1*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 # on traite les cartes jouées dans l'ordre croissant Ordre=[Cartes_jouees.index(k) for k in sorted(Cartes_jouees)] for i in range(NbTot): X=10+XX(Ordre[i]) Y=-10+YY(Ordre[i]) Carte=Cartes_jouees[Ordre[i]] # on traite la carte à placer sur une pile if Carte < min([Piles[k][-1] for k in range(4)]): # la carte est trop petite et il va falloir choisir une pile à récupérer if Ordre[i]<NbTotHum: #choix de la pile à récupérer draw_string("choisir la pile à récupérer",25,145,"b") Choix_Pile=1 chg=-1 while not (keydown(KEY_EXE) or keydown(KEY_OK)): if chg: draw_string("^",65+15+50*Choix_Pile,124,"w") Choix_Pile=(Choix_Pile+chg)%4 draw_string("^",65+15+50*Choix_Pile,124,"r") sleep(0.3) chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT) while keydown(KEY_EXE) or keydown(KEY_OK):1 draw_string("choisir la pile à récupérer",25,145,"w") draw_string("^",65+15+50*Choix_Pile,124,"w") else: Tetes=[sum(1+1*(Piles[N][c]%10==5)+2*(Piles[N][c]%10==0)+4*(Piles[N][c]%11==0)+1*(Piles[N][c]==55) for c in range(len(Piles[N]))) for N in range(4)] # penalités des 4 piles Choix_Pile=Tetes.index(min(Tetes)) # on détermine la pile qui a le moins de têtes ramasse() else: differences=[Carte-Piles[k][-1]+200*(Carte<Piles[k][-1]) for k in range(4)] # le +200 permet d'exclure les piles qui contiennent des cartes trop grandes Choix_Pile=differences.index(min(differences)) if len(Piles[Choix_Pile]) == 5: # si la pile choisie contient 5 cartes ramasse() else: Piles[Choix_Pile].append(Carte) # si la pile contient moins de 5 cartes, alors on y ajoute la carte jouée sleep(0.5*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 X=XX(Ordre[i]) Y=YY(Ordre[i]) fill_rect(X+1,Y+1,37,H_reduite,"w") # on efface la carte jouée JCadre(Ordre[i],"bw"[tour==9]) IMG(Piles[Choix_Pile][-1],65+50*Choix_Pile,-5+15*len(Piles[Choix_Pile])) # on affiche la nouvelle carte posée sur une pile sleep(1*(1-keydown(KEY_SHIFT))) while keydown(KEY_LEFTPARENTHESIS):1 # calcul des scores for joueur in range(NbTot): scores_tot[joueur]+=scores[joueur] # affichage des scores for joueur in range(NbTot): X=XX(joueur) Y=YY(joueur) clr=(("b","r")[scores_tot[joueur]==max(scores_tot)],"g")[scores_tot[joueur]==min(scores_tot)] if NbTot<7 or not AffCartes: draw_string("J"+str(joueur+1),X+9-5*(joueur==9),Y+(H_reduite-30)//3,clr) D=H_reduite//2-1-7*(NbTot>6)*AffCartes draw_string(str(scores_tot[joueur]),X+6-5*(scores_tot[joueur]>9)-10*(scores_tot[joueur]>99),Y+D,clr) cadre_carte(X,Y,"purple",H_reduite) dessinTete("moyenne",X+16+6,Y+2+D,("w",clr)) if max(scores_tot)>=66: draw_string("Fin de la partie,",80,130,"b") draw_string("J"+str(scores_tot.index(min(scores_tot))+1)+" a gagné.",105,150,"b") draw_string("OK pour relancer",80,170,"purple") draw_string("une partie",110,190,"purple") else: draw_string("OK pour relancer",80,140,"b") draw_string("une manche",110,160,"b") while not (keydown(KEY_EXE) or keydown(KEY_OK)):1 while keydown(KEY_EXE) or keydown(KEY_OK):1