test.py

Created by florian-allard

Created on August 23, 2024

29.6 KB


from random import *#randint#,seed
from kandinsky import *
from time import *#sleep
from ion import *#keydown,KEY_RIGHT,KEY_LEFT,KEY_OK,KEY_SHIFT

#seed(7)
#orange=(250,200,120)

def valide():
  return keydown(KEY_EXE) or keydown(KEY_OK)

def IMG(carte,x,y,quecadre=0):
  C= carte[-1] in "mso"
  if not quecadre:
    for j in range(57-28*C):
      for i in range(22-11*C):
        clr=ord(Image[carte][22*j//(1+C)+i])-35
        #clrs=(clr//(8**4),(clr//(8**3))%8,(clr//(8**2))%8,(clr//8)%8,clr%8)
        for k in (0,1):
          if 2*i+k<43:
            CLR=Palette[carte][(clr//(8**(1-k)))%8]
            set_pixel(x+2*i+k,y+j,CLR)
            if C:
              set_pixel(x+42-2*i-k,y+j,CLR)
              set_pixel(x+2*i+k,y+57-j,CLR)
              set_pixel(x+42-2*i-k,y+57-j,CLR)

  clrH,clrB,clrHf,clrBf=couleurs(carte)

  for k in (0,1):
    X1=x-1+44*k
    X2=x-2+46*k
    fill_rect(x-1,y-2+60*k,45,1,(clrH,clrB)[k]) # haut et bas
    fill_rect(X1,y-2,1,23+14*k,clrH) # haut gauche et haut droite
    fill_rect(X1,y+58-37+14*k,1,37-14*k,clrB)
    fill_rect(x-2*k,y-1-2*k,43+4*k,1,clrHf) # haut et haut haut
    fill_rect(x-2*k,y+57+2*k,43+4*k,1,clrBf) # bas et bas bas
    fill_rect(X2,y-3,1,24+14*k,clrHf) # haut gauche et haut droite
    fill_rect(X2,y+59-38+14*k,1,38-14*k,clrBf) # bas gauche et bas droite

  if carte=="Pio":
    for i in range(7):
      fill_rect(x-2,y+58+i,47,1,(clrB,clrBf)[i%2]) # hachures


def couleurs(carte):
  if carte[0]=="T":
    clrB,clrH=("rgb"["fve".index(carte[k])] for k in (1,2))
  else:
    clrB=(("yellow","gray")[carte=="Obs"],"brown")[carte=="Pio"]
    if carte[0] in "FVE":
      clrB="rgb"["FVE".index(carte[0])]
    clrH=clrB

#couleurs foncées de la carte
  clrBf,clrHf=((150*(k=="r"),150*(k=="g"),150*(k=="b")) for k in (clrB,clrH))
  if clrB in ("yellow","gray","brown"):
    clrBf=(100-50*(clrB=="brown"),100-50*(clrB=="brown"),100*(clrB=="gray"))
    clrHf=clrBf

  return clrH,clrB,clrHf,clrBf


def actu(n,clr=(250,200,120)):
  X=10+105*(n==2)+210*(n==3)
  Y=10+70*(n==0)
  if n==0:
    fill_rect(0,125,320,97,"w")
    L=len(Mains[0]) # affichage de la main du joueur
    for i in range(L):
      IMG(Mains[0][i],12+min(50,251//max(1,L-1))*i,150)
  draw_string("J{}    ={:<2d}".format(n+1,len(Mains[n])),X,Y,"k",clr)
  draw_string("\u25ae",X+50,Y,"gray","brown")
  draw_string("Score{:>+4d}".format(scores[n]),X,Y+16,"k",clr)


def condition(p,mode):
  if mode==1:
    return NAtq>0 and Jeu[-1][1:]=="tq" and Mains[jr][p][1:]=="tq"
  elif mode==2:
    return not NAtq and (clr_atd in Mains[jr][p][0:2].lower())
  else:
    return not NAtq and (Mains[jr][p][0] in "LO") # Lum ou Obs

def traitement(p):
  global sens, NAtq, tr_fini, rejouer, clr_choisie
  actu(jr,"g")
  Jeu.append(Mains[jr].pop(p))
  tr_fini=1
  NAtq += Jeu[-1][1:]=="tq"
  sens *= (-1)**(Jeu[-1]=="Vsp") #Change
  fill_rect(244,50,36,36,"orange")
  for k in (1,0): # flèche du sens
    fill_rect(254+16*k,60,2,16,"purple")
    draw_string("\u2192"*k,263,60-8*sens,"purple","orange")
    fill_rect(255,75-16*k,16,2,"purple")
  rejouer= Jeu[-1]=="Fsp" #Double
  if Jeu[-1] in ("Esp","Lum","Obs"):
    if jr!=0:
      (Ne,Nf,Nv)=(sum((elt in Mains[jr][k][0:2].lower()) for k in range(len(Mains[jr]))) for elt in "efv")
      clr_choisie="efv"[(Ne,Nf,Nv).index(max(Ne,Nf,Nv))]
    else:
      draw_string("choisir l'élément",130,127,"purple")
      pos=1
      chg=-1
      while valide():1
      while not valide():
        if chg:
          pos=(pos+chg)%3
          fill_rect(229,88,80,36,"brown")
          for i in range(3):
            D=(i==pos)
            fill_rect(238+22*i-4*D,97-4*D,18+8*D,18+8*D,"rbg"[i])
          sleep(0.2)
        chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)
      fill_rect(229,88,80,36,"w")
      clr_choisie="fev"[pos]
  IMG(Jeu[-1],114,65) # carte en jeu
  if Jeu[-1] in ("Esp","Lum","Obs") and clr_choisie!="":
    fill_rect(139,62,20,20,"rgb"["fve".index(clr_choisie)])#Aff_carte()

def cp_ok(jr):
  for i in range(len(Mains[jr])):
    for m in (1,2,3):
      if condition(i,m): # si on a une carte jouable
        return 1
  return 0

def pioche(jr):
  global Perdant,tr_fini,deja_pioche,NAtq
  actu(jr,"r")
  deja_pioche=1
  for n in range(max(1,2*NAtq)): # si NAtq==0, ça fait 1 tour
    if len(Mains[jr])==15:
      Perdant=jr
      tr_fini=1
      break
    Mains[jr]=sorted(Mains[jr]+[Jeu.pop(randint(0,len(Jeu)-2))])
    for carte in ("Fsi","Pio"):
      sleep(0.5)
      IMG(carte,172,60,1)
  if NAtq:
    tr_fini=1
  NAtq=0
  actu(jr,"r")



Palette={'Vsi':((125,198,192),(175,229,239),(111,169,162),(151,201,200),(149,159,160),(123,125,124),(181,200,198),(255,255,255)),'Vtq':((136,193,187),(125,132,136),(172,181,176),(255,255,255),(126,129,99),(131,124,81),(88,90,85),(81,93,131)),'Vsp':((132,190,182),(194,220,220),(165,177,175),(115,121,123),(112,115,76),(168,171,123),(224,231,177),(255,255,255)),'Esi':((37,58,69),(60,84,105),(78,114,133),(142,168,177),(106,145,165),(100,155,198),(129,185,215),(179,215,230)),'Etq':((63,84,106),(90,125,146),(119,120,115),(156,171,176),(71,74,72),(124,172,201),(195,196,155),(114,96,52)),'Esp':((211,170,81),(98,138,160),(38,140,237),(54,86,104),(105,109,114),(152,192,213),(213,88,81),(157,58,175)),'Fsi':((147,89,48),(101,58,31),(208,131,86),(243,188,107),(250,155,84),(248,239,132),(255,255,185),(255,255,255)),'Ftq':((161,82,44),(243,140,77),(243,229,125),(90,54,30),(117,107,79),(155,161,153),(255,255,255),(90,99,116)),'Fsp':((153,91,66),(102,61,36),(139,108,74),(236,151,81),(196,167,71),(196,135,100),(250,223,119),(255,255,255)),'Tev':((146,136,103),(175,174,132),(171,165,160),(90,91,94),(141,201,131),(95,206,89),(228,239,230),(132,130,131)),'Tvf':((100,78,44),(87,77,56),(165,169,112),(144,134,93),(118,99,72),(172,131,102),(56,37,26),(197,200,156)),'Tfe':((81,70,195),(124,121,207),(91,92,178),(153,160,218),(180,219,230),(89,131,154),(255,255,255),(133,182,204)),'Lum':((133,191,102),(132,146,74),(99,105,44),(177,182,126),(175,183,152),(127,129,97),(227,232,201),(247,219,109)),'Obs':((119,96,117),(75,54,36),(106,94,58),(56,2,58),(92,38,101),(120,65,121),(80,36,67),(158,150,150)),'Pio':((188,189,131),(95,98,43),(78,94,91),(80,69,123),(148,154,151),(142,76,22),(197,205,199),(106,54,54))}
Image={'Vsi': '###$##3#3+##+3#3#$#####53#+$#$##33#,#$#+#53#%3%3+#$,+5553,=HC+5#5####3+%$,;&(6HPPPO;3###%%3#+#;>568HPPPGPP35%#5%$#%$-3HGYHOGGGPP$%%3M##&-$/GIbWGGGYHOF&#%K535&=5GZbWIYYYWGG$%353%3&=GIbaGYbYZYYV66>;5#3#.HIbWGZbYbaYXF.>>+#33%7IYGIbaYbbYWPPGF3;#33HPGGZbYYbbYGGGPHM>=638POGYYGZbaWGGWGGGV>.3#HPGGGIbbYYYYYIYGO156>;@PHOYZWIYYYYYYGGHPP><+PPGIYGYbaYYYYGYGHPPT,+PPPGGYYYZYYWYYWGHGF5,+7PPPOGIYYYYZaWPGGGA5>;8PPHPGGIYZbaGPGGGP5>6;?OGPPOYbaYZYGGGGGOVV6+,>/PGGYGGWGGGGYYHOYVA+5>YHPPPOGHOIZbaGPHIWHC>1Y@PPOGIYZbbYWHPPIWH3<1YGHPPGYYbbbYGGGOWGI;>UYPWGOIYbbbYYYWIYGHY;>6>POGYZbaYYYaYYYWGP6S><TYWGOGYYbbaYZYWIWIV+=AAYYIHPGIYYbZaZaGPIV;>A>YXOGGIYYYbbbaWPQW>S=AAYYPOGGIYbbbYWHPJ_N;.<TXYHOGIZbbbaYIYYGHN+>6>@OWGIYbaYWHQYaWWPNS>UYYWGIYbbYYYYYYYYGOV;<1YYYYPGYYYbYYbbbYOY,;>1Y5WYWPOYZbbbbaYG9Y.;5>YU@IYGGYYbYYGWJEYV=3,A1UIGYZbbbbaYYYZGYY<+.6>AYYIIZbaYWZYYaIVV6+>6=IYOYYGZaYYRYYXI5>6;>=6>AWIbYYbbbZYYG>A5>;,-61YYWIbbbbbbaYIYV5,+,,.1AAaOYZaGGWYYIA1,,+,>=A,ZaZGYbbaaYWQ1=><+>#56aQ_IaWYYbaYHDa56>;#6.>>OZWYbbYYGWYYA>.3#3%>=6WIZbbbbaYG,.E>=633#;66.OZbbbbWWFT.66+#33#.&><XIYbYWITV,V>>+#3%3&;6</GZYWG<VV,>6>;5#535&=6,VYZWT>>,.5>%35#M##&-$.)WZYV>,>,%.&#%35%$#%4-7YbaD565,5#$%%3%%3#+#;;IVW<56;>#.#5%####3+%$,;&(&#<,%#+3###%3%3+#$,+5553,,;#+5#5##53#+$#$+#63#,#$#+#53####$##3#3+##+3#3#$####', 'Vtq': "#$5>>>>=5>>>=54,,,54,3%6>>>>56>>>=55,,,,,,,+>>>>>6>>>=54,4,,4,,,,+>>>=6>>>5555>55454-553>>55>>>55>>=5554-=>=4+>4-6>556>5/GG5,-5>=4,3555>5555GGGGG556>=4,-;->=4GGHPGGYYG-6>=-4463>7,GGPQ0Ra\\2H6>=,%5,5+5/HGIZY2Yb0LW6=,,%55,+,/Qb1YY,YL,LWE,-5-54,+,/J,4aY4ZYT,WE5>54-54+-/I0DYb5TaY2_F>>54,54S4/I,2Y\\5,,YYWE>54,T4,#459\\1R,64,,Q\\E=55,-5-#76GbX,,.4,,0YE>=5>>=5+5EGYX,,64,,,QG56>>>54C#$GaL,,5=55T0O6>>=5,6+##GYL-55=54,1P>>=554,###GY,,56>>5,,X6=>=5,S###7Q,-5>>>5557L6>=-7+###7Q,-5>>>>=50YP/,-4####'Q,5>>>>=4,XI0WWD####=8L55>>>>5,,XI1QGD-33##'L555>>>5,TWD2RaGGD##55P,,-=>55,0WG2YZaWG3>>=HTT5565,,0YL1X,,aG3>>=GL15,64,,QaGZa,P1D#>54GXD,,-4,,QYG,aTL_D#,,,GYT,,-4,0YbG,1T,WD+,-67JYT,,4,X\\2W,,Y1G-3##%/1YY,,4bQa,W,,YbG6;#337J,aZb4YL2\\WD,1aG>;#=37I,,YY,`Z,,WE40_M>;#%5/I2\\1Z,abYG/E10WE53##5,I2\\bYTYIGGGD,,OF=+#%%,IaaYXPPQGG55,,OD63##$TGYGGGPG56>>=41O,63##$1GG/IX,55>>5554P,53##%$D4WJ`,,5>654,7P,53###%54WZY,,-=55,TXL55+###%%%GZaT,-=,41,XE54+###%#5DT1T,-4,,,1W65,3####>$I2,Y,-,,,0ZG5,-3####%'I2\\Yb-,,,OYG,-63#####7I,,`a-T,QZ_I->>;#####/GYb`Z,bXZZWE>>>3#####,/GIaZ2aQ\\2WF>>=3####,5,/GGYZY\\,2W6>>53####,,4,/GPYZ\\22G6>=5++###,,5-54HPIY,1E>=4,+####1,5555>7IGIaG=4,$#####),5555>>=GGGD,,+######$T,555>>>=GGO,#&>;###+#1T,555554,,6>>>>3#####$,,,,,1D,6>>>=6>;#####$-4,,,555>5555>>;", 'Vsp': '#########+#%6>GPPGG>;#####+$#$#%?PQYYPPPOGF####;+##%P8TbYYXPPOGGG;####+&@QbbbaXPPPOOGGG;####&HZbbaPPGGGGGGGGG;###GQbbaXQYXOG??GGG>?;;&HZbbYQbbXM5O>2OFFF>;?HbbbYYbb-5,55F$7G>>>#QbbbPbb\\54,5>>>%45??;#bbaPRb-4,55556>,\\6>>##bYOQa84552b-5=:\\55>###XOHPM554b\\5552b6=63+##OGO=554b\\,2-2b-6>;#+##?G>=65,,\\b]:b,-6=,####GF=>>52,2-:b2b->4+##$+56<6>55555,2b-5>%%3,,+,+=64>=6=,4\\,,5555>#,+###%56>=552bb],bb5>######4,]6>=4b\\,2bb->3###+##%4\\5=2b-4bb\\55=33#+,%,+5-54,552b-5-6=,-$+##,#%6=55>554bb55#4+###-5#:.=55>5,bb->:+%5+#$,,4,-4->5:b,,55=,4,,##+45,44->5552\\55=]43-####5,b5->55b\\4\\64-3##+#$,,,b,-54b\\,b]=,,,,#+#%$,,4,]=4-:bb5=,,,43##$#,-5b\\65:bb-65%,-$#+#%$,-:->=4bb54555,,43#+$,,555>52\\52-==4],,#+###554->=55b]55=>]5##+#+4644565:b\\4,64>2=6,#$,,5=54bbbbbb->->,464##-5#>54,552b\\64564<5=###,3%5>55,2b]5-56-456#,%,+5,>52bb\\,4,546455++##%4\\6=5,,,2b]5\\5-5>+###5,\\655,bbbb5:-=55>#####%]6=4bbb\\54b6556;#,+#-,566=b\\-52b]=b]>$+,,+-%=6:65b\\bb\\52b-=,+,##%,=65\\552\\-52b]6;$+####\\>5=5-55-5bb\\->##+##+##>5552bbbbbbU>#$,[#####&=552bbbbbUF;$2bS#####-F55bbbba8F4,bbY[##+##,>>MYZY8O5bbaabb[#####$&?GGGGEQZYZbbbb[######.HPXXQYYYYbbbbbS;###+$-?PYYYYbbbbbbbYC##$##$+6HPYYYbbbbbY8F;####+###?HQYYbbbYOG>######+#$,+6?GPPPGF########;+#$,+##>=####+########+$#$+####,+$#+#######$#####+##+####$####', 'Esi': '$####$###-655D#-,5##,+#####$##$,,,/557+,+##+$#####$-<,,$5GG7+#####-+###+->D,,,5GGF+#####F3$,55F?,-=5,-4F4,,,+#?47?GG?5,7E5,-,7=,7E+#57?GGG=-7HG5555I`GGE,#57555G5-GYGGE5GRPPG5,#GE755G5-FIYYYAW>?G7O4+G5555GE7AYbYYb^?FE7PG355G57GGFRbaYZb^GG?5HO3-57G5GQZZaYPQR?GHG56?;55GYGHbbbaYXOQYHQQ?GF;565QaQbbbbZYYXQYYZE5GC7?GJaYbbbbaZaXYYIbE7GCJWGZZaZbbbbbaZaYYZVGFC6V>bbaYZYbbbbbbbYaFGFC7VIbaYXZbbbbbbbbaaIGEC7PQaYYPQbbZbbbabYaGWG3EHQaYXPZbbbbbbYaZaGY>3FAQaXYPZbbbbbbbZbaAa>;EFObaYYaZbbbbbbaYW>G5C5G>BYZZYZbbbbbbYYOF?GC7EAAPYbZbbbbbYa`HIGXWC5G?IQYbaZbbbbXYOG?GGOCGGGYbbXaYbZaYYZYN?GI?;?ZWBabXYYIYaYYZaVAbY?;?B?IQaOFYYXQQXQaYZaGEC5>EG?HOGZaWQYOPaGJ`G537>FG?PYYXaGYbYZ^Gb_G5CG>GG?IYYXQYYZ^YbWV?GGCE755G>?GHPbbbGGAY?7GE3555->G?OEHZZ^G7GG>55535557GGFO7G>G?GFGGGEGG355FE5GGGHF>?GGYGGE6G5+55GEE5F?GY>GGGWGE555537D5E5E6>FA>GGF?GE5GGGCE-,57E7>>>GGGGGGG7GGFCE5,,-GG?G>FGGF57G5545364,4%GG55F>GG>G7=54,-37E55,7=557GGF>>E5-55537555,7G45575?FE-4,5E73--,-E57555557E4,-54-5+$,,/?4555575E4,55E5,,+$,,555-E57E5E,,554>5,+,,$,,5-55E54,,-54,55,+,,-,,,,,-454,,-5,,5,,+-5=,+,,,-454,-4,,,4+##464+,,,5-4,,,,-,$,,###,,,,,,,55,,,,,-4,,+###,,,,,,,,4,,,,,-54,+,+#,,,,,,,,,,,,,,,,,,,+####$,,,,,#,,,,,,,,,########,,$,,,,,+,+##$########$,$,,,,$,,##############+,,,###$###########,###$,##+##########', 'Etq': "#+#,#%,,,,.,+,,,####CC$,##$-6<-,6,,,,,+#$###,,+$,,.>>->.@,,.+#$,++$4,,,,->>><PP,0.<$,,,+.4-40,->,N@,,0L.,,,###6,.@P,<.,,55WP,0>,,,+#,,>PPP,4:bYUYPPP@PN,,+,,,0,7Jb557G90PNL0L,,+,,%5Ybb:['$+9@P>P,,,,+.:YU7C[3b#A\\I6>@NL,,,+,1WC+#C<G\\2\\I6>PP@,,,#0MWA>*#>CJ,-I8@PL>,.<3PM394:+>$'G+E8PPL.>>>;PMW.+_#A547#%TPPPN,,,+PLW&/[5A<.<_%TPPN>,,,+NLUC*6=9=54:C]PPN>>>.+PL9#J=59U5.5b5@NP>N,.;,>9C]=5AV>>%2]>>PPN<,+,09G]6>AYAU53bPNP@PN,+L01J55AYYY=54J@@PPP>>+>PQ_56AYYY>>>A\\>>@N<>;0PQ_56YYYYYY>:Jb.PP@,+,PM_->YYYYY=5*7:bD.P,K0PB]>YYYYYV56E3/_a]40K,PMV>>AYYYV=%E5?['9Z5+,PLb%56YYVV4:Ea?_#'EZ+P>>:FEA>Y>5<:']+J.='UK@>P5]/=5A=5,_'UC*4b/TKPNPIJ]459=-=[#54*D]%TKP@P9Cb546?.:G'967D<I8KPPN93GF=-U4J%;I5=_/90K<>P13#G-5=#]%4F5-_'50K,PP1W-2\\#<#\\3&I557'UP;0PP-W>4J#5JC6<IV=:EUP;0L@MW;&/_-G+'G66;:]6P+PN@LW3LC:E_7]97E=5]8,+PP@LW%'G*bb_56YV54]8>;L0PLUG9U5b9YYYYY<+b.>;P<0PaY5Gb.>AYYYAY=b,PKN,0P%0-3*55>YYV55AW,PKPL0PPN97'556Y>V5E*\\.P+N,,@P>9C'F56V5>7.b4>>+N,,,>LUF?\\=6U5657I$,,+,,,.>KW8,G-95-42_5-,,+,,,>>-W;%/+656=]'_>5$+,<,<,1_.=*#6D+bC%[>5#+,P>.,J=C#*[=#JGC%4=-#+,.>></9Y7#[3J\\$;I4=+##,6,,<,,555_7b&5;I4<###$,,,.,,,/EbJ$%;39$4###-$,,.<,.N,Jb7C.7U$4-G#,$,$,>,,,,,-b]7CU5E7GC+###.<,,,-,N,EYYS/GGGC####-,.4,-,,,,'5[#'GGC####,,-+5,,#$,+'#'CGGC####3$4,,,+#$,#$##7CG#GC####$,,,#,$,###%GGG#", 'Esp': "#$54>>?GGFG>>>>>F>>>>;#'58>>?GF?F>>>>>G>>>>;##-5.>F?>>G>>>>>>>>>>;S#%5.>>?F>>>>>>>>>>>>;[#$54>>>F>>>?F>>G>>>>;a##54.>>>>>>>?GG,.>>>;b##-5.>>>>>>>>GF,.>>>;bS#$54>D>FG>>>G,.>?G/Cb[#'58.<G.?F<,><,,/F>+bb##-5,<D,,,D,>>,,//,+bbS#%54,,,,GD,,,,,,,,+bb[#'58,<,,,,0L,,L,,,Cbba##-5L,,,,0,P,0L0,,+ZbbS#%5P,,,,,,PL,PP,0KYbba##58,,L,,0PLPPL0PKYbbb##E5P,,,,0PPPPL0PKYZbbS#$58P,L0PPPPPPPPKYYbba##55PPPPPPPPPPPPKYYbbb##E5PPPPPPPPPPPPKIYZbb[#'58PPMPPPPPPPPK/YYbba##M5PPPPPPPPPPPK,YYZbbS#$58PPPPPPPPPPK,IYYbba##-5PPPPPPPPPPKD/YYZbbS#$58PPPPPPPPPK.<IYZbb[##-5PPPPPPPPPK<<KYYbbb##$58PPPPPPPPK,,/YYZbb[##-5PPPPPPPPK,,,IYYbbb##(58PPPPPPPK,,,/YYZbb[##M5PPPPPPPK,,,,IYYbbb##(5PPPPPPPKD,,,0YYZbb[##PPPPPPPPK,,,,0QYYbbb##(PPPPPPPKG.,0PPYYZbba#(PPPPPPPK,D,,PPQYYbbbS#PPPPPPPK,,,GPPP)YZbba#(PPPPPPK,,/,,PPKYYbbb_(PPPPPPK,0L,,0PPCYZbbbHPPPPPPK0P0,,,0PP)Ybbb_PPPPPPKPPL,,D0PPKYZbbbHPPPPPKPPL,,/0PPPIYZbb]PPPPPKPPPL,,,0PPPYYbb]PPPPPKPLPP,,L,PPPKYZb]8PPPPKPPPPP,,,0PPP)Ybb8PPPPK,P0PPPL,PPPPOYZb8PPPPK,00PPPP,0PPPPKYZ`PPPPK,0PPPPPLP,PPPPCY_PPPPK,,PPPPPPP,PPPPP#WPPPPK,,P0P0PPPPPPPPPK#HPPPK,,,,,PPLPPPPPPPPODLPPK,0,,0PP,0PPPPPPPPPPPPK,,,,0PP0PPPPP,,PPPH,0K,,,,0PPPPL,,P,0PLL,,,+,,,,,,0PL,,,,0L,,,,,,+/,,/,,D,,,,,,0,,,,,,,+G,,,,,D,,,,,,,,,,,,,,+>,?G>>,DG,,/,,,,,,,,,+>>?G>>>G.<,,,,,,,,,,>C", 'Fsi': "#+%###,$+#$,%3%?G?GE#+#+$+$##+#,,+55%GF?G3$+$-$,#$+,,,$,5E5>@?G3,+#%#+%$,#%E5#%5F>PGG3$+$$++3#$+%773%GF>XG3#$+,$##3+$,%7GG5GF@OE3#$+,##&;#$+#%F?GGF@O5#$,#,+,&3+##+5GPGG>PG3#,,#$+#@3+##$'GA?F@VG3#,-35+#N##$#,#GAV>QOE##,&#+##K+##,#+FAX>Y?E##+##+,#$,##,+%F@Y@XE3###$+,+##$#$,+#F@XQVE###,,+##,+3,#+$#FYXYVF$#,,+#%#$####,+#FYXXVF$#,###%###,+$,#%@YQVNF$+##$+3$+##+$,#6@YZV>@3#$,,+3$+,,#$,%7@YZV>VF5$,+#$,$+##$+57PYYYQVGE#,+##,$##$+557PYYYYN?C#$+####$,,6=>>QYYXP>?3,###,,#$,+5@NPQYYXN=53$,,+,#$#,%>@?@YYYPNC%$,+$+###3,%>P@PYYYPN##$,####$%$#>@PPQYYX?M#$$+,###,+$+>@PYYYYNFK#,,,,+;###$+>@QYYYYNP4+#,##+;$##$.=@QZaXYYS,+#+#+$+##3$0=@QYYXPK,,,,#$++##63$(N@QYYY>4#$$+##+#+#F#$8PPPYYY=$#+#######%=##@PPPYXYM6#$+3$$,3#6K#+@PXQYXQXM##++3+#D+@C#-@QYZPPPX$###+#-73#>##%PQYZPYPM#4###$%>$+$##>PQXZPZP=3,###,6;,+##&>PZXbPPV53####,A4###,.@QaPbP>V5###+C+P$+#$,@PRaYaPPM##$##C#6,,##$@PZaZaPP;,,,#%3,+,##54@YbabaQX>;,#$'###,##5%PYbbbaYV@$+##=#+####3&QabbbYXPN,,,%3##$####>QabbaZYQM,,#&K+C,++#+@Qbbb`bPN;,$#%3####,+1PYbbbZ`P=#,#++#$,#$++0PZbbbZXN><,-####+###+0PbbbbbXN6,$-%$######+0YbbbbbX;N-3###3#+##,#(ZbbbbbX@<%#####$#$+,#@ZbbbbbXN,-##3#%$###$+@ZbbbbbP<-#%,+,5,##$$+@ZbbbbaP,%45,+#####,$#(QbbbbXM##$##35$##+###&PZbbaP;3+,,%55##3,#+##@PYAXN#3#-+3######,%##.@N@N3+%5#&3+#+######", 'Ftq': "$#$54+#>#$,#>>>;,54#,+$+,55,&>##+&>>><-54#,#$+,544&>###>>>>;-54#$#,+-5-+>>$#>>>>>;,-,#$#,#-5-&>>'&>>>>>>$,,#####-55#&>>>?GG>>>$-4+,#;;-55,&?GGPGX;>;,-5+$+&;-5MGG7GGbbH>>$5-54#+&>'GGGGNBbbbH>>-5,54##>?POJJBR>bO2`;>%4+,+##>@JbbbBR_B_*HC>;+#,&>#>?RPP^bPbFbb`C>>##,>>;>?R]J_bPbbBb_C&>#$3>>;>?O`bGbQRb^b_K&>;-4&>;>#O`_JPQR`RBbK&><54+>;>+Ob_`RQRbb^bG&>%55+>;;#GbGPbQX``bGG#>$54&>;;&Hb@PRQXPPb_J#&;-+>>;#;Hb@`PQXQXbbG$&>#>&>;;>HFR`QQYYPRb_$#>>>>>;>#@GRPQYYYPPPPF#>>#&>;>$(JR`PYYYYYPOGGF>;+>;;#'JbPYYYYXR`_FGGF;,&;;+>HQYYYYYPR`GJ_BHGD#;<,#PPPPYYYXR`?HRJbHOF;;4+G```YYXXR_GHRBbbGO;$4.C``QPQP`RObHb^`RbO;-5+G@bPbQZ`bJ_GJ^R+_N#-53H_JbRaRbPJbGb^JH_K#-54HJ?`b`R`_JbG`RBR`C#-54@J_`P`XRGbRHbRBbH##,-+@Jb?bbZbJbRHb`JbG+#$,+?R`^BbRbBR``Jb_bO#;<,#?RPbGbR^J`R`PRNbK+;<,,'RR`_B`_b__HHR_?D+;<4,/RRbb^`?GGHGHP`GD+;;55.O_bb_??GGHQXbRGE+;;-5&OGHOGFHQYYYYRbGU,#$-5&HPOb?`PQYYXQYRG54#,54&FF'J^bbPYQXPbPK54+554>>#Hb_b``XPXRb_<54+-54&>$HbbHbPXbP_`?<55+-95&>,O`RBR`Z`PbNH%Y5+595+&'ObbJ`QRbb_BG5Y5+-95,&'RR`_bQR`PG_G5U4#<55,<Hb`R^bPbbGb_G-53;E55+;GObb_BRb_bb_C-54;5555>'_GGbJR_BbR`C554#5555>$8JGJ?b?`bRH<595+5554>=5YOG?FbbRRH<55U35955&=9YU6F?Gb`bR<55535955>%9YU5>8FGG_N$55535954+=9YY5E5XGHHN$55435YU5+=9YY355YYOJFE55-35YU5&%YYY755YYY6>=5U539YY3.=YYY75YYYY4&;9U539YU3/=9YU559YYY3>D9YY3", 'Fsp': "######,%+##$#,&>;+#####++#######+,##>>###+#+$+$+#+>>#,,,+#####,#$+###+#&>>;#$##+###;+##+#$+##;$><+$###>;+;#,#+$$##$+$&;+##&>>;,?#$$+L###$#$&V;###AV#$)##$+`+,#>;&>V;%##>#C+?<+,#R,##>#&AV;P#+;,O,&X#,#.L#&>;#A>&;#>>$'#+Y##++##.>;+>>)V&>>#&#+P##++,##>;#++AW>Y>#G$,+$++#+######.>YAYV&S####+###,+;+>>#>IYYY>$+;,+####$-K#&>>>>AVAC###$#&#&###++#>>>>>>###++###+&$+###$&V?V########,,+&$+$#(;>VIaC$,&;;$#,,#;+$+#>>>>YRS#$&;;#,,,#;+$##>>V>YY;####;#$#+####$.#>YVZY>>>##$,####,##$+##YYZYAV>##$,##$+###,(&#IYaY?Y>@#P$;####;###&&IbYV'V<Y%##>#;#;$##M>>ZaYY?U$A;+K&$##>++#%NYZbYYY>#AFK###+#P((%'3YbYVAY>(YV;%####$###78YaCW>YV&YX####$###+%G)ZY#X&YV<IX,8$>###%+'WYbW>S>YV<AS%##&;#$;#7YYbWYAAY>=N8KM(&>#$#%IYZbYX>YYY>$0K3$+>#%&7ZYbbYK6AYYV=#-M33A;(KIZbaYC%M&YaYG?(M33>S#7YbbaX%8L&VYYAYV4-5&S,7ZbbaC5-P8YYYYY;,53$#P7ZbbaM8MM6YYYYY;,3K3#%GZbbYM8MM8YYYYVF%43-##9ZbaXM55M49YYYWY%,5+##OYYWPMM-8MQYYYYI$5,##OPIWP8MP48MQYYYYA5M,PKPPMM58M55MP9YYaYA%MPPKP555P8P5P479YYbYIE55(K85,-@5P8P588YYbYZS,-8358M5585P8585XYbaYE5P5355P4-P858L84MIbbaD8M53-5M-5P88O5MM8YbbaU-M5+55P58PMPO4PL7ZbbaU8M534-5M58P588HHOZZbbX55,34-4858PM58PP8ZbbbY45,3,588M8M8M5855YbbbW854+,L8547E548PP49ZbbW844+%458M8MM48MP4/YbbY%45#58M8M#8PP8485PYYYX5P5#%-5-P(8OP=555OQYYC-5-KP5-8N8PPMN855PPOPP5-8K(858>M558NE8H558PP588#", 'Tev': "$44,+##%%>HIPK>$&#/C##$-4,,##$->HXPJ>+>#%K##;,-,,#%$+>PHP&B2B3$D##>,,,,#55-^OPE6<&;#G+#+&<,,,-#5+`OO#>[^['L#%3&;4-+,5%+`HR3>;b3/C#,+/&$,,,55-PPb4b[]37+%4+HF<,4$557OO]5b:]37+/D+#DB45,54PHR]5b2559OL/[;G&],-7PIPb^-]^55$G+0;>72;5,POXObb4Db555,3_C#YG^]0QYPJ]b0P]55]42>C,,72]8QHP:]_YH]555,^=C$*?L:7QP-:]QQO555-bBO#[,/_G]QH5:_HQR555:^GD3B]2]7EGHM5HPIL555bbW4+B^<:]-0HK\\OMIO:55bbD,3B^B*b58OP0X-QH55:b]HE3>>^=558QHQP5GXE5:b%4GC^>bb]:\\PXWL58XM]5]55_Cbbb^b55PIXE57QO55b5:'[:bb^b55/OX-54QP-5::b`C55:b]5558P555PXM5:bbbC55555]555E5550WL5:]b5+]:555]]:555558QP5:]55+bbb555:5554O54OXM5:bb[^b]:5555557PM58WL55bb[>bbb:]5:554QPG-GP-5bb[bbb5:b5:557QGPPHHM:]b3,-]5555:558YPLPHHM55535555555555HXE57GG555535]:555:554QG55555555-+535]55]558WM55555:]b53,5555]555QH55555555b:[-55b]5550IL555555bb5:[5:b^]550QXM55555:^bb##5bb:]5HOYP5555555bbbb3^B55-:PQYO55555555bbB[b]4:D57HOXR54PE555bb>[]30'Z55:GPP5GWM5555bb[43D`2%:55HOPGIL5545':[4%GG`L:55:HPGQP5594W-[51FGGW]55:5+5/XE51GI-+_W>X-/555b]b58XR5Y*'D+?F[G:\\L55_P#,4QP5L55D3>J\\+^bG55`GHPPQH-C530+=J,,^]7-5_WOYYYHO%#-9+=$,2B\\5,5_GPOGPPO4-HG+7$,&>45W:bIM0PMbF\\O,##S,+>B57T6bGO5:5:><G###,,&>\\5,M6B\\O5-3:>ID###,+^>$%+'>B_PC4%-;HE+##,+>B-%+$>B6GO$-%;WB+##,&><+$55>B.@O--#;G>43#+>>%+$5:>>&_P,-#&G><3##>>,#4#*>B&=P,+%'K>;,#&>;,#-#6>B.\\,5+#$F>>$3", 'Tvf': "$,,6'F7$'3>E4,=,'HD,,+$,T5%:</-_FK,G-<'O$T,#$,12]:?GGE;'<>-</<T+T+?',2_$'FD$D2]7F4/D,,,+-1,-4$+=4/,?6=/4$/,,D+WIG/[/G55///]-/61,/DI+T<G/6/E7=DG/]:'5,GG'C+,4+.7/B6/7FF7E@5,GCG,C/4H=</7V7?=D+T8^',57,CW7N]'F9YEC?$$T7]FG57,+V4J4G@C1TS#G1Y05O'6?/+.4J\\T='1T$GHG)VD5,`G'+&6?:G5')Y+/GGOYDG$_G,+E7,U]5'DYY/C#HCYW$\\/GCE7D,:_C#YY/G##YY)Z\\FF;=8?5:;C##YTGCYYY)Z7>>CB4.]D+##G),,1YYS)2?T?+:<-C#######YYYYS)=G,G+]F;'GG$###IYY#YSY5,G,C_-GOCH#)+')YY#)SY6/D,;^='G###Y#GYYYS#YT4F7H;5G$####)+CYYYSG)T4E6D+>?#####$+#YYYYH)YFJ6<+=6S######)YYT,$T)UB>6C5GY#++D,+1YY#)YY1WbD?+_/A+,'C++YYTD)YYYW]G$C4B\\T#G$+1YY'G)YY1Z6@DCb55$#$$,1TTFG)YTY=PFD+D/:_Y#D111W>D1YSY0O/DC+G=]Y'D1#Y'CYYYYYV>G,+<=6RA(D+#SG#+YYYYW>>>CGF6M^HD+1/C'$1YYYU<-b[/AND:O$YY1TGCYYTYU?E<;Ba/<6C+)YY''#YYYYUE5?C7F.,5TCYYYG##YYYYUb5?CI/>I2[)YSSC#)YYYYZ^GC+>?P<23YYC###YYYYYZ6?FK^&DG=9Y&GCG#YYYYY-GD/;?EG/B9TC##P)YYYYY@'D,C>?GG=Y###SC,$YYYV7F,?CF?7G5YYYYS#)YYYY2@O,>CF>6FbDCYYS$YYYYY=H>N=;NG::]5bAYTYYYYYYBNGF>;G,-=6/:]Y$YSYYYYb8#%G+,/D/DG?b54YYYYYUbNG7,+,$GD,=G].MYYYYY::+G4,+WDG/,>,]@E1YYW=5RGE=,+/DGD.?/6@D\\Y-:5NRG2?/+,T/D/F:7>6b5:_@O],/<TC1T,/,E5>?F5>,`P=_/I=T+T$/54E<.7F6,G=5b;?/?D+1,/:]G<.]5<G1.E5,+.$A;$1+==6;-4GDG1/D,,CG$4C$,+-C=5B4/1/,F>,+57U:C$S1UO/Eb;,,,/@?G'=%6T+,,YJ_,+GDC/,/>GF,H;;+C,/&]b,GG(?GGFGD/GG=,W+", 'Tfe': "#####$5%&;$C#5$############.,$+-'E4+533#+######%#.<,,5QX#,,#3%%+######+<.<,,aX3,,55+#>#####3-,,>60IZ]4,,5+6=#####556<.,PIX`4,>554+##K%34-.>>>bYZR>,>-,35###%54-.>>B_YYR^>>-,-5##%53-,.>>BQWJP^>><,,-###5,$.>>>bbbO`P^>>>>=5+#5-4,>>B`R`_HPN>>.b<3#%5,-6>>BPPPaZPb>>4>=3354,,,>>@PPPaWP`^>>><53#554>,?``PbaY`R^>F5,4#$3,4?>FPPPbaYJ`N>>,,,+,,,<1.@RPRb_YZPO>>>>.+,-$,Y.@PPR`aYWPO>><5>++-4=/GHbPPbaYJPQF<.5,+%6-6.V@_P`bIJJP_V>,,4+-5-..F@O`bbGbGb_W><<6+,4>=6>@_HP_J_GG_F<>>,;4=.-.>@abbGRbGG_F`><-33G,5?G`GRGGR_G_aY^>>=+,>>.>>PHPGJRIJG_GF>>>S4-..F>Pb`_JRGJb_GF><>;-44>>YP`bOHR_GbaW>>,4+,.>>?GRRJ_HRbGGOWF?>,;4,.>>?`RJ_`__JGbFF>.-+-,,>>>HPJaJ__ZbR>?>.<;5,.>>GJPb_baaZGbFYF>>+-.>>GGJbbGbWbJGOWYF?\\;-4,>?IJbb_JWJJ_aWB>>\\;6<>>F_Jbb_aWZJ__?F><>+.>>>G_GbbbIYW_GGGGF>>+4>>b?GGbbGYWWGG_GW^>=;54,AWGb_GIYYYGGaYH><-32^F@IGb_GGGGYGGGJL>>>+-R_YGGJ_GGGGIWJGGGGG\\+%38R_WGGJGGGGJb_JbG<4+$=40P_YGGIGGGJGGPG`5,+$-6G`PbJRbGGWJG_GGG^>+>BGGGGJGbPb_GJHG_GGGJ[1Z``baYYYIWaYWbbb_J^>+$YJPRYYG_YJ_YYbRGJ^>>+5AYJ_GGbIWPbIYGJ_Wb^<+44aWbPR_Gbbb_Y_GbIWb>+4,.GJ_YZbbbJbIGWG_YW\\34,<2JYZIYGbGJ_WYW_b^<3%4,0OWPIYYYIYJbaYJ>>M#545+_`PIYYXOYG`bGYJ,53%5,*HPPaYYP_IYGbbIYD%##%+?_J\\7YZJG_YWJ>bGYC####1WD#'Yb,*JaWJ5,.BG3##%Y]##$Z+8#/GYZ%#5#####)X#####%##%?IZ#%%####$V######5####_Y3######$#$+#$####+##%I;##$##", 'Lum': '#,5+##4$3%.#,54$+,C$56$4-5#,##$5.##$4$-+#$-.D%.5,L,GM4>-%#-5N(K-4>5,ID-.D/#-?53A?54?&D,A-IYV<4?GC,A5.YVL,-GC5A55APL,LOCMA551MP<<OGGY54.,P,.AYVY,484&P?IVPA$404..V<>PA#.,<7F<.F<YC(4<AF<>??YGHN8G><@PGYD0PN<?@PO>YbP0AN>F>??Yb_NXP>AFFAY2\\OHLG?YGYYP>IHG>>YYYY.<AD>>AYYYY40APN>NYYYY58F0GGGYYYY4>IHGGIYYYY,>>WWGYYYYY>>YYYYYYYYY', 'Obs': "#$4?KGWJ:'>:\\-GCWII:)>+$-7C'CD:)>A],9?)HY2'>>:,2?#IO,)>>;[-/Z'OSY>>A#-aJ_(E/>>>Z,[;[#QW>>>;]:G[#YQ>V>>%:/**'Q>?V>B59J*`Q>II>>5[H#)Q>)XN>U5Gb`G>*'I>S5_R[G>(*O)A5`C*G?[R[#YU[HKOGb_S()Z3GPGG#[SPXSb'COGQKbS(OR'H'G[Y*b'O;_GO?5aS[#GF(GI>bb)I*`G?FF>b]b1Cb_>F>>]]4,'G*&>>>#%b1KG?(F>>>AX(PPF>G>>>>AGGOGV>>>>>>>>>>>>>>>AYWY>Y>>>>", 'Pio':"$5565=55557$65756558=7%5WW9E=5M53E=;+UE>85=CD5TKUI6R==C%7J#EG:]=5I%59G=E8555IS6F=5=L556)E>GGU4-56B)J>=G685575Y*>555M557GSD=558-5GGG)$=65\\5IGE5Y$565MGG5?7)D5587GE55G)$65LG7=7E3Y#5<.EGEE=CY$587FGE=?C)$5MG6ECGGGY%:/E=GCWG)Y%07F5GGYGYY$M?67GG)Y#Y(575G7CYYYY0=G5GG'#YYY,=G57YC#YYY$7G=GY)SYYY$5GG#SYSYYY#C))Y)YYYYY#C))Y)YYYYY"}

Noms={'Vsi':"Vent", 'Vtq':"Attaque de Vent", 'Vsp':"Change", 'Esi':"Eau", 'Etq':"Attaque d'Eau", 'Esp':"Prisme", 'Fsi':"Feu", 'Ftq':"Attaque de Feu", 'Fsp':"Double", 'Tev':"Volt", 'Tvf':"Terre", 'Tfe':"Glace", 'Lum':"Lumière", 'Obs':"Obscurité"}

Images=sorted(tuple(Noms.keys()))

# règles en français
Regles=("Joue une carte avec le même\n élément que la carte en jeu.\n\n La couleur des bordures est\n différente pour chaque\n élément.",\
"Si la carte en jeu est Feu,\n combat Feu avec Feu.\n\n Tu peux aussi utiliser\n Double et Glace.",\
"Si la carte en jeu est Eau,\n combat Eau avec Eau.\n\n Tu peux aussi utiliser\n Prisme et Volt.",\
"Si la carte en jeu est Vent,\n combat Vent avec Vent.\n\n Tu peux aussi utiliser\n Change et Terre.",\
"Des cartes du même élément ne\n sont pas toujours nécessaires.\n\n Il y a aussi Lumière\n et Obscurité.",\
"Enchaîne les tours en jouant\n des cartes.\n\n Le premier qui utilise toutes\n ses cartes gagne.",\
"Si le joueur précédent joue\n une carte d'attaque, alors tu\n dois piocher 2 cartes en plus.\n\n Oh, mais attends !\n\n Utilise ta carte d'attaque si\n tu en as une, pour transmettre\n l'attaque au joueur suivant.",\
"Tu peux passer ton tour avec\n shift au lieu de jouer.\n\n Tu dois piocher une carte\n lorsque tu passes ton tour.",\
"Tu peux tenir au maximum 15\n cartes.\n\n Si tu passes ton tour\n avec 15 cartes en main,\n alors tu perds la manche.\n\n Fais attention !",\
"Pour les règles de chaque\n carte, choisis Cartes.\n\n\n On joue ?")

pos=-1
while pos != 2:
  fill_rect(0,0,320,222,"w")
  draw_string("WHIS",140,30,"purple")
  draw_string("Cartes    Règles    Jeu :)",30,80,"b")
  for i in range(5):
    IMG(Images[3*i],18+60*i,130)
    #fill_rect(50+100*i,50,20,20,"rbg"[i])
  chg=1
  while not valide():
    if chg:
      for j in (1,0):
        for k in (0,1):
          draw_string("[]"[k],15+80*k+100*pos,80,"rw"[j])
      #draw_string("]",100+100*pos-10*(pos==2),80,"w")
        pos=(pos+chg*j)%3
      #for k in (0,1):
      #  draw_string("[]"[k],15+80*k+100*pos,80,"r")
      #draw_string("]",100+100*pos,80,"r")
      sleep(0.2)
    chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)
  while valide():1
  fill_rect(0,0,320,222,"w")

  # pos = 0 : cartes    pos = 1 : règles    pos = 2 : jouer

  if pos==0:
    p=11
    chg=1
    while not valide():
      if chg:
        p=(p+chg)%14
        draw_string(Noms[Images[p]]+" "*20,20,60,couleurs(Images[p])[3])
        draw_string("Utilise cette carte\n        "+("si la carte en jeu \n        est "+("Eau. ","Feu. ","Vent.")[("f" in Images[p][:2].lower())+2*("v" in Images[p][:2].lower())],"avec n'importe quel\n        élément.")[Images[p][0] in "LO"]+"\n        "+(""," "*25+"\n"+" "*33)[Images[p][2]=="i"]+("","Change "+("Eau","Feu","Vent")[(Images[p][1]=="f")+2*(Images[p][1]=="v")]+" en "+("Eau. ","Feu. ","Vent.")[(Images[p][2]=="f")+2*(Images[p][2]=="v")]+"   \n"+" "*33)[Images[p][0]=="T"]+"Le joueur suivant     \n        doit piocher 2 cartes."*(Images[p][2]=="q")+"Change la carte en jeu\n        en l'élément choisi.  "*(Images[p] in ("Lum","Obs","Esp"))+"Donne un tour         \n        supplémentaire.        "*(Images[p]=="Fsp")+"L'ordre de jeu est    \n        inversé.              "*(Images[p]=="Vsp"),80,80,"purple")
        IMG(Images[p],20,85)
        sleep(0.2)
      chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)
    while valide():1

  if pos==1:
    p=-1
    chg=1
    while not valide():
      if chg:
        p=(p+chg)%10
        fill_rect(0,0,320,222,"w")
        if p in (1,2,3):
          Liste=("Fsi","Ftq","Fsp","Tfe","Esi","Etq","Esp","Tev","Vsi","Vtq","Vsp","Tvf")[4*p-4:4*p] #(("Fsi","Ftq","Fsp","Tfe"),("Esi","Etq","Esp","Tev"),("Vsi","Vtq","Vsp","Tvf"))[p-1]
          for i in range(4):
            IMG(Liste[i],30+70*i,30)
            Nom=Noms[Liste[i]].split(" ")[0]
            draw_string(Nom,51+70*i-5*len(Nom),95,"rbg"[p-1])
        if p==4:
          for k in (0,1):
            C=("Lum","Obs")[k]
            IMG(C,80+110*k,30)
            draw_string(Noms[C],67+100*k,95,couleurs(C)[3])
        if p==7:
          IMG("Pio",140,140)
        draw_string(Regles[p],10,40+80*(0<p<5),"purple")
        sleep(0.2)
      chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)
    while valide():1

scores=[0,0,0,0]
jr=randint(0,3)
#rejouer=0
for manche in range(5):

  # constitution du deck de cartes, nombres à ajuster

  Jeu=["Fsi","Vsi","Esi"]*4+["Fsp","Vsp","Esp"]*3+["Ftq","Vtq","Etq"]*2+["Tfe","Tvf","Tev"]*3+["Lum","Obs"]*3


  # mélange/brassage du deck

  for i in range(100):
    Jeu.append(Jeu.pop(randint(0,(len(Jeu)-1))))

  # composition des mains

  Mains=[[],[],[],[]]
  for i in range(4):
    for j in range(6):
      Mains[i].append(Jeu.pop(0))
    Mains[i].sort()


  # préparation du plateau

  sens=1
  #jr=(jr-sens*(1-rejouer))%4
  clr_choisie=""
  NAtq=0
  Perdant=-1

  # le joueur est le numéro 0 et sa main est Mains[0]
  fill_rect(0,0,320,222,"w")
  IMG("Pio",172,60) # icône de la pioche
  IMG(Jeu[-1],114,65)#Aff_carte()

  for n in range(4):
    actu(n)
  #Aff_plateau()

  while not (min(len(Mains[i]) for i in range(4))==0 and NAtq==0) and Perdant==-1: # tant qu'aucun joueur n'a gagné
    rejouer=0

    if Jeu[-1] in ("Esp","Lum","Obs"):
      clr_atd=clr_choisie
    elif Jeu[-1][0] in "EFV":
      clr_atd=Jeu[-1][0].lower()
    else: # carte de transition
      clr_atd=Jeu[-1][2]

    actu(jr,(210,100,255))#Aff_Plateau()
    sleep(0.5)

    tr_fini=0
    deja_pioche=0
    if not cp_ok(jr): # si on ne peut pas jouer, alors on pioche, ensuite si on peut joueur, on joue sinon le tour est fini
      #sleep(0.5)
      pioche(jr)


    if jr==0:      #il va falloir choisir la carte à jouer
      p=0
      chg=1

      while not tr_fini and cp_ok(jr):
        L=len(Mains[jr])
        D=min(50,251//max(1,L-1))
        if chg:
          for k in (1,0):
            fill_rect(10+D*p,200-63*k,47,10,"w")
            IMG(Mains[0][p],12+D*p,140+10*k)
            p=(p+chg*k)%L
          sleep(0.2)
        chg=keydown(KEY_RIGHT)-keydown(KEY_LEFT)
        if keydown(KEY_SHIFT):
          if not deja_pioche:
            pioche(jr)
            chg=1
          else:
            tr_fini=1
        if valide():
          for m in (1,2,3):
            if condition(p,m):# or condition(p,2) or condition(p,3):
              traitement(p)
      #fill_rect(0,125,320,97,"w") #on efface les cartes de Joueur 0
    elif cp_ok(jr) and not tr_fini: # C'est un autre joueur qui joue
      for m in (1,2,3):
        for i in range(len(Mains[jr])):
          if condition(i,m) and not tr_fini:
            traitement(i)
            break
    sleep(0.5)
    #Aff_Plateau()
    #sleep(1)
    actu(jr)
    jr=(jr+sens*(1-rejouer))%4
  #calcul des scores :
  fill_rect(0,0,320,222,"w")
  draw_string("Fin de la manche "+str(manche+1)+" sur 5\n\n             manche     total",40,40,"purple")
  sco_mch=tuple(sum(2+18*(carte[0] in "LO")+3*(carte[2]=="p")+8*(carte[2]=="q") for carte in Mains[j]) for j in range(4))
  #if Perdant==-1:
  #  scores[Mains.index([])]+=sum(sco_mch)#*(Perdant==-1)
  for j in range(4):
    #scores[jr]-=sco_mch[jr]*(Perdant==-1)
    Sco=(((1-4*(Perdant==j))*(sco_mch[Perdant]//3),-sco_mch[j])[Perdant==-1],sum(sco_mch))[Mains[j]==[] and Perdant==-1]
    scores[j]+=Sco
    draw_string("Joueur {} : {:>+4d} pts {:>+5d} pts".format(j+1,Sco,scores[j]),10,95+20*j,"b")
    jr=(Perdant,(jr,j)[Mains[j]==[]])[Perdant==-1]
  sleep(7)
  #sleep(2)

#draw_string("         Partie terminée \nScores : ",40,40,"purple")
#for k in range(4):
#  draw_string("jr "+str(k+1)+" : "+str(scores[k])+" points",60,100+20*k,(("purple","r")[scores[k]==min(scores)],"g")[scores[k]==max(scores)])


#for carte in Images:
#  IMG(carte,5+50*(Images.index(carte)%5),10+65*(Images.index(carte)//5))

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.