Beruflich Dokumente
Kultur Dokumente
TAROT AFRICAIN
Projet de C, IF3
Mots clefs :jeu de carte, tarot, structure, langage C, passage par rfrence
1/27
Je remerc e pour le prsent rapport !sraf "a#er et !le$andre %a&or e a ns 'ue l('u pe ense gnante d( nformat 'ue pour leur a de, sout ent , et conse l en mat )re de programmat on*
Remerciements
2/27
TAROT AFRICAIN
+emerc ements ,omma re
p2 p3 pp. p. p. p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p7 p3 p3 p3 p3 p3 p4
3/27
I] Introduction
%e prsent rapport est rd g dans le cadre du cours de programmat on en C 6IF3/ pour prsenter le projet 'ue j(a programm* %e sujet tant l &re, j(a c0o s , a7ec l(accord de mon professeur, de 8P de programmer l('u 7alent d(un jeu de carte pour PC* Ce jeu de carte se joue 9 'uatre, o&l gato rement* :n ut l se les 21 atouts d(un jeu de tarot et l(e$cuse* %e pr nc pe du jeu est de pronost 'uer le nom&re de pl 'ue l(on pourra remporter 9 la 7ue de ses cartes, et de ral ser ensu te ce par pendant le jeu* :n d& te le crd t de po nt du joueur de l(erreur sur le par 'u( l a fa t* %e jeu s(arr;te lors'u(un joueur atte nt <ro po nt* C0acun des joueurs re=o 7ent du d str &uteur, 9 sa prem )re d str &ut on c n' cartes , 'u( ls regardent pour par er* %e joueur s tu apr)s le d str &uteur parle en prem er, et de m;me le d str &uteur en dern er* %ors'ue le d str &uteur fa t son par l n(est pas l &re de par er le nom&re de pl s 'u( l sou0a te* >n effet, pour a7o r un perdant 9 c0a'ue d str &ut on de carte, la somme des par s do t ;tre d ffrente du nom&re de cartes dans la ma n des joueurs* ,ou7ent le d str &uteur ne peut pas c0o s r le par 'u l(arrange* %ors du jeu, c0acun des joueurs pose success 7ement une carte de son jeu de son c0o $ sur la ta&le sans aucune contra nte* %e pl est remport par le joueur 'u pose la plus grosse carte* C(est 9 lu de rejouer en prem er pour le pl su 7ant* ?ne fo s 'ue toutes les cartes ont t joues on soustra t les po nts, et s( l n(5 a pas de perdant, le d str &uteur red str &ue les cartes, ma s une de mo ns 'u(au tour su 7ant* %ors'u( l do t d str &uer <ro carte, l d str &ue les cartes au$ joueurs de sorte 'ue c0acun pu sse 7o r les cartes des autres ma s pas la s enne* %es par s su 7ent les m;mes modal ts* C(est seulement au tour d(apr)s 'ue le d str &uteur c0ange, j(appelle manc0e les s $ d str &ut ons d(un d str &uteur et tour une d str &ut on, un tour comportant un nom&re 7ar a&le de pl s*
-/27
%(algor t0me su 7ant est un algor t0me s mpl f du programme pr nc pal, 'u cac0e les rpt t ons dues au$ 'uatre joueurs, et au$ protect ons des sa s es* Be plus l mas'ue les d ff cults comme la gest on d( dent f cat on du joueur pendant les d ffrentes p0ases du jeu, ou les d ffrences d(aff c0age lors'u(on fa t le 2e tours 6cartes des autres/*
./27
Prparat on PI:CC> et BI,8+I"?8I:E B>, C!+8>, MI,>, : !FFICC!D> H ,!I,I> 6$- joueurs/
Prparat on de la ta&le de jeu et encore des n t al sat ons J>? : M!E?>% ou !?8:M!8II?> 6$- joueurs/ +ecompter les P%I, !FFICC>+ %> G!EI?>?+ B? P%I +este des cartes J +ecompter les P:IE8, Manc0e perdant J perdant Perdant J
ou
!ucun
!FFICC!D> B? P>+B!E8
2/27
7/27
Pierre-Emmanuel Prillon 10200712 2*3*1-/ ,-ap!" ut le au tr "ulle, permute deu$ 7ar a&les*
2*3*1./ .ri_croissant!" Cette rout ne e$cute un tr "ulle sur les lments d(un ta&leau pass en param)tre* 2*3*12/ .rou e_carte!" permet de retrou7er l( nd ce de la carte passe en param)tre dans la ma n du joueur* %a fonct on retourne @1 s elle ne trou7e pas* 2*3*17/ /aleur_interdite!" Cette fonct on permet de dterm ner la 7aleur 'ue le d str &uteur n(a pas le dro t de par er au 7u des par s prcdent*
3/27
%e programme se plante lors'ue sur une n7 te c n TT on rentre des caract)res alors 'u( l attend des ent ers* Par un grand m5st)re le la &oucle de protect on ntercepte l(erreur ma s lors'ue le programme sem&le de7o r repasser par c n TT le programme ne s(arr;te pas pour demander une nou7elle 7aleur et &oucle ndf n ment* %a mt0ode getc0ar6/ dans creation _joueur me compta t s5stmat 'uement deu$ caract)res lors'ue je tapa s Uo( et Uentre(* Pet t dsagrment so gn par un ##lus$!stdin" >t tant d(autresV
4/27
V] Conclusion
!u n 7eau du programme , on est en prsence d(un programme 'u fonct onne & en, et on peut ma ntenant se penc0er sur le pro&l)me de rendre l(aff c0age ntressant et agra&le* :n pourra auss dans l(opt 'ue d(aml orer le programme mplmenter un module pour enreg strer les param)tres de jeu$ pour pou7o r cont nuer plus tard ce jeu 'u est relat 7ement long* B(un po nt de 7ue programmat on , ce projet est le deu$ )me 'ue je ral se dans son mportance et comple$ t en langage C* J(a pu ut l ser mass 7ement des mt0odes de passages par rfrence et des structures 'ue j(a du comprendre et anal5ser*
11/27
ANNEXE
11/27
/Y P erre@>mmanuel P>+I%%:E nZ11211712 l cence M!8C, IEF: semestre 3 anne septem&re@dcem&re 211Y/ /Y cette source est rd gue dans le cadre des tra7eau$ d[ nformat 'ue 6IF-/ 9 l[un 7ers te l5on 1 6la doua/ anne 2113@211cette source est la propr t nal na&le de P erre@>mmanuel P>+I%%:E, contact: per llonpe\0otma l*com l[ut l sat on non commerc ale de cette source est l &re, le nom de l[auteur de7ant s mplement ;tre ment onn la reponsa& l t de l[auteur ne saura t ;tre engage en cas d[ut l sat on 'uelcon'ue de cette source, Cependant tous commenta res sur le fonct onnement de cette source, sont la & en7enue* >EJ:] I8 ^^^ Y/ /Y YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYY reprsentat 7 t des 7ar a&les YYY YY YY Y Y PA9A)E.9E, 9E:A.IF, A;< '=;E;9, structure spiel un jeu liste 4 joueurs !nombre de joueur" mais plus tard structure spierler cartes +u4il possede dans sa main !int $and0i1" le nombre de pli +u4il lui reste 5 *a*ner le nombre de point +ui lui reste le nom du joueur t8pe de joueur 1 pour $umain 0 pour ordinateur PA9A)E.9E, 9E:A.IF, A; 'E; distributeur reprsente la personne +ui redistribue le jeu jeton desi*ne le joueur acti# 5 c$a+ue instant du jeu nb_carte non redondant a ec %2lors de la premiere distribution initialisation 5 % puis dcrment n_tour in#ormation redondante a ec nb_carte2initialis 5 0 pour c$a+ue distributeur n_tour>> 5 c$a+ue distribution n_coup nb de pli restant 5 jouer initialis 5 nb_carte tombe jus+u4a 0 pioc$e perdant tableau des cartes 5 distribuer numro associ au joueur perdant
12/27
Pierre-Emmanuel Prillon 10200712 compteur maitre majorant table0indice1 joues0i1 indi+ue le ran* du parieur3joueur
indi+ue l4indice du joueur a8ant pos la plus *rosse carte sur la table indi+ue la aleure de la carte la plus *rosse retient les cartes joue indic par le no du joueur retient les cartes poses au cour du jeu?
@3 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ AIA:I=.BEC;E, @@@ 33@@ @@ 33@ Y _ nclude `stdaf$*0` _ nclude ` ostream*0` _ nclude `t me*0` _ nclude `stdl &*0` 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ &E%:A9A.I=D, @@@ 33@@ @@ 33@ @ 33les constantes et les ariables *lobales nt const JN-O 33nombre de joueurs nt const MN.O 33nombre de case dans un tableau pour .ri%roissant2nb ma7 de carte dans une main nt const EN22O 33nb de carte dans le jeu2 1 5 21 plus e7cuse !(ro ou 22" nt const CQM!aN.O 33nb de cartes ma7imale donn nt const PN1-O 33nb de points 33des #onctions et des routines nt !uQsu 7ant 6 nt jeton/O 7o d !ff c0eQcartes6struct sp el jeu, nt jeton, nt n&Qcarte, &ool cac0e/O 7o d !ff c0eQnomQjoueur6struct sp el jeu, nt jeton/O 7o d !ff c0eQpar 6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/O 7o d !ff c0eQta&le6struct sp el jeu, nt ta&leKJL, nt d str &uteur/O 7o d Creat onQjoueur6struct sp el Hjeu, nt /O 7o d CreeQp oc0e6 nt p oc0eKEL/O 7o d B str &uer6 nt p oc0eKEL,struct sp el Hjeu, nt n&Qcarte/O nt Fa reQcompte6struct sp el Hjeu/O nt JouerQmanuel6struct sp el Hjeu, nt ma tre, nt majorant, nt jeton, nt d str &uteur, nt ta&leKL, nt nQcoup/O nt JouerQ<eroQcarte 6struct sp el Hjeu, nt compteur, nt jeton/O 7o d MelangeQp oc0e6 nt p oc0eKEL/O nt M seQautomat 'ue6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/O nt ,a s eQpar 6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/O 7o d ,Xap6 nt Ha, nt H&/O
13/27
Pierre-Emmanuel Prillon 10200712 7o d 8r Qcro ssant6 nt ta&KL/O nt 8rou7eQcarte6struct sp el jeu, nt jeton, nt nQcoup, nt carteQ7oulue/O nt GaleurQ nterd te6struct sp el jeu, nt d str &uteur, nt jeton, nt n&Qcarte/O 33 structures struct sp eler R nt cartesKCQM!aLOc0ar nomK.1LO nt pl ,po ntO&ool t5peOSO struct sp el Rstruct sp eler joueurKJLOSO
33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@@ @@@@ 33@@@@ main @@@@ 33@@@@ @@@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7o d ma n6/ R srand6 6uns gned/t me6 E?%% / /O 33init *nrateur alatoire - time du t8pe lon* et non unsi*ned nt p oc0eKEL,ta&leKJLO nt ,j,compteur,d str &uteur,jeton,n&Qcarte3@2n_tour@3,nQcoup,ma tre,majorant,perdantN1O struct sp el jeuO cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PP`bnc c`O cout PP`bnc 8!+:8 !F+II?!IE c`O cout PP`bnc c`O cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PPendlO cout PP`bnbtCe jeu de cartes se joue a7ec `PPJPP` joueurs, a7ec 22 cartes de 1 a 21 et`O cout PP`bn l[>$cuse* Gous regarde< 7os cartes, et 7ous fa tes un par sur le nom&re de `O cout PP`bn pl s 'ue 7ous remportere< en jouant*bn`O cout PP`bn Bans la p0ase de jeu, c0a'ue joueur peut jouer une de ses cartes sans`O cout PP`bn cond t on sur la 7aleur* %e pl est attr &ue a la personne 'u pose la plus`O cout PP`bn grosse carte* %e joueur apres le d str &uteur commence, ensu te c[est celu `O cout PP`bn 'u a remporte le pl *bn`O cout PP`bn %e jeu s[arrete lors'u[ un joueur a perdu tout ses po nts, a force de`O cout PP`bn se tromper dans ses par s*`PPendlO cout PP`bnF@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F@F`O cout PPendlPPendlO
for 6 N1O PJO FF/ 33 attention on eu7 bien ' joueur de 1 5 ' inclu R Creat onQjoueur6jeu, /O cout PP`nom retenu:`O!ff c0eQnomQjoueur6jeu, /O cout PPendlO S d str &uteurNrand6/d JO 33le premier distributeur est c$oisi au $asard
1-/27
doR 33manc$e 33on c$oisi un distrib c4est la *rande boucle de la manc$e +ui se #erme tant +u4il restera des points 33prparation du distributeur d str &uteurN!uQsu 7ant6d str &uteur/O 33 en $omma*e 5 'ac+ue Arel n&QcarteNCQM!aF1O 33 on rentre sur un nb_carte-3@n_tour60E@3 doR 33tour 33combien de cartesF n&Qcarte@@O //la main est diminu d4une carte 5 la proc$aine distrib nQcoupNn&QcarteO 335 la proc$aine distrib il 8 aura nb_carte dans la main jetonN!uQsu 7ant6d str &uteur/O 33le premier joueur est??? //nQtourFFO 33compte le nb de distribution 33distribution des cartes 33prparation de la pioc$e CreeQp oc0e6p oc0e/O MelangeQp oc0e6p oc0e/O 33la distribution B str &uer6p oc0e,jeu,n&Qcarte/O cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PP`bnc c`O cout PP`bnc %e d str &uteur est le joueur `PP6d str &uteurF1/O cout PP` c`O cout PP`bnc c`O cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PPendlPPendlO 33PA9I, for 6compteurN1O //on 7a compter de 1 compteurPJO //jus'u[9 JN- e$clu compteurFF,jetonN!uQsu 7ant6jeton/ / 33 et 5 c$a+ue boucle on c$an*e de joueur R 8r Qcro ssant6jeu*joueurKjetonL*cartes/O 33on trie les cartes du joueur f 6jeu*joueurKjetonL*t5pe/ 33selon le t8pe de joueur R !ff c0eQpar 6jeu,jeton,d str &uteur,nQcoup/O 33puis on les a##ic$e jeu*joueurKjetonL*pl N,a s eQpar 6jeu,jeton,d str &uteur,nQcoup/O 33demande pari S elseR jeu*joueurKjetonL*pl NM seQautomat 'ue6jeu,jeton,d str &uteur,n&Qcarte/O S S //%> J>? cout PP`bnYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY`O cout PP`bnYYYY YYYY`O cout PP`bnYYY Be&ut du tour a `PPn&QcarteO cout PP` cartes* YYY`O
1./27
cout PPendlO doR 33plis 33prparation de la table2 mal$eureusement non int*rable dans le #or sui ant for6compteurN1OcompteurPJOcompteurFF/ ta&leKcompteurLN@1O 33-1 6 pas encore jou ma treN@1OmajorantN@1O 33et ra( for 6compteurN1OcompteurPJOcompteurFF,jetonN!uQsu 7ant6jeton// 33appel du joueur R 8r Qcro ssant6jeu*joueurKjetonL*cartes/O f 6n&QcarteP1/ autres R nQcoupN1O jNJouerQ<eroQcarte 6jeu,compteur,jeton/O 33la seule carte se trou e en 0 S else R 33 tour a ec ses propres cartes 33 dans tous les cas #o trier G 33 tour a ec les cartes des
jNJouerQmanuel6jeu,ma tre,majorant,jeton,d str &uteur,ta&le,nQcoup/O S Njeu*joueurKjetonL*cartesKjLO ta&leKjetonLN O 33on recopie la carte sur la table jeu*joueurKjetonL*cartesKjLN44O 33on e##ace la carte du jeu du joueur f 6 Tmajorant/ 33on ractualise R ma treNjetonO majorantNta&leKma treLO S S 33passa*e au joueur sui ant //tous les joueurs ont pos une carte jetonNma treO 33donner la main au maitre jeu*joueurKma treL*pl @@O 33le nb de pli restant est diminu nQcoup@@O 33le nb de coup restant aussi est diminu cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PP`bnc c`O cout PP`bnbtbtTTT pl remporte par `O!ff c0eQnomQjoueur6jeu,jeton/Ocout PP` PPP`O cout PP`bnc c`O cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PPendlPPendlO SX0 le6nQcoup^N1/O //tant 'ue le nQcoup n[est pas tom& 9 1 cout PP`bnY Y`O cout PP`bnYY YY`O
12/27
Pierre-Emmanuel Prillon 10200712 cout PP`bnYYY cout PP` cartes* cout PP`bnYYYY YYYY`O F n du tour a `PPn&QcarteO YYY`O
cout PP`bnYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY`O perdantNFa reQcompte6jeu/O//dtecte un perdant SX0 le6 6n&QcarteT1/HH6perdantNN1/ /O//on reste a7ec le m;me d str &uteur 6red str &/ SX0 le6 perdantNN1/O // on c0ange de d str &uteur cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PP`bnc c`O cout PP`bn %> P>+B!E8 >,8 %> J:?>?+ `PP6perdantF1/O cout PP`bn `O!ff c0eQnomQjoueur6jeu,perdant/O cout PP`bnc c`O cout PP`bnF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F`O cout PPendlPPendlO //!ttendreQact on6/O S//ende fer Cauptprogramme
//YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY B>FIEI8I:E, YYY //YY YY //Y Y //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY !ff c0eQCartes YYY //YYY aff c0e les cartes du joueur nd ce jeton YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d !ff c0eQcartes6struct sp el jeu, nt jeton, nt nQcoup,&ool cac0e/ R cout PP`bnbn7os cartes : `O for 6 nt jN1OjPnQcoupOjFF/ R f 6jeu*joueurKjetonL*cartesKjL^N1/ R cout PPjeu*joueurKjetonL*cartesKjLO SelseR cout PP`>$cuse`O f 6cac0e/ cout PP`KNT1L`O S cout PP` `O S cout PPendlO S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY !ff c0eQnomQjoueur YYY //YYY 9 l[aff c0e et 'u cr)7e l[cran,ma s on 7eut des noms YYY
17/27
//YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d !ff c0eQnomQjoueur6struct sp el jeu, nt jeton/ R for6 nt jN1Ojeu*joueurKjetonL*nomKjL^NE?%%OjFF/ coutPPjeu*joueurKjetonL*nomKjLO S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY !ff c0eQta&le YYY //YYY aff c0e le contenu d[une structure sp eler YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d !ff c0eQta&le6struct sp el jeu, nt ta&leKJL, nt d str &uteur/ R nt N!uQsu 7ant6d str &uteur/O for6 nt jN1OjPJOjFF, N!uQsu 7ant6 // R coutPP`bn`PP6 F1/PP`/ `O!ff c0eQnomQjoueur6jeu, /O f 6ta&leK LNN@1/ R cout PP`bnn[a pas encore joue`O SelseR cout PP`bna pose un `PPta&leK LO S cout PP`bn l lu reste `PPjeu*joueurK L*pl O cout PP` pl 6s/ a prendre et `PPjeu*joueurK L*po ntPP` po nts*`O S// ende fer F:+ J S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY !ff c0eQpar YYY //YYY aff c0e les carte du joueur et les par s des autres s ^N@1 YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d !ff c0eQpar 6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/ R nt jO cout PP`YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY`PPendlO cout PP6jetonF1/PP`/ nom du joueur:`O !ff c0eQnomQjoueur6jeu,jeton/O f 6n&Qcarte ^N1/ R !ff c0eQcartes6jeu,jeton,n&Qcarte,false/O //on passe 9 l[aff c0age des prtent ons for 6jN!uQsu 7ant6d str &uteur/Oj^NjetonOjN!uQsu 7ant6j// R cout PP`bt`PP6jF1/PP`/ `O !ff c0eQnomQjoueur6jeu,j/O f 6jeu*joueurKjL*pl NN@1/ R cout PP` n[a pas parle`PPendlO
13/27
cout PP` 7eut prendre `PPjeu*joueurKjL*pl PP` pl 6s/*`PPendlO S S// ende fer for Selse3@si nb_carte660@3R cout PP`Cartes des !?8+>,:`O for 6jN1OjPJOjFF,jetonN!uQsu 7ant6j// R cout PP`joueur `PP6jetonF1/PP`: `O !ff c0eQnomQjoueur6jeu,j/O cout PP` a le `PPjeu*joueurKjetonL*cartesK1LO f 6jeu*joueurKjetonL*pl NN@1/ R cout PP` et n[a pas parl`PPendlO S else R cout PP` et a d t `PPjeu*joueurKjetonL*pl PPendlO S S 33ende #Hr #or j S S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ Au_sui ant @@@ 33@@@ cette #onction permet de passer au joueur sui ant @@@ 33@@@ En Bomma*e 5 'ac+ue Arel @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ nt !uQsu 7ant6 nt jeton/ R jetonFFO f 6jetonTNJ/ jetonN1O return jetonO S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ creation_joueur @@@ 33@@@ remplie et cre les joueurs33pourrait Itre remplac par une sau e*arde du jeu @@@ 33@@@ attentions les joueurs sont a##ic$ de 1 5 4 mais sont numrot de 0 5 3 !'" @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7o d Creat onQjoueur6struct sp el Hjeu, nt / R 33inituialisations nt test,jO c0ar &of,coeurK4LN`C:>?+ `,carreauK4LN`C!++>!?`,p 'ueK4LN`PII?> `,trefleK4LN`8+>F%> `,$gamerK4LN`a@D!M>+`O 33a##ectations des aleurs jeu*joueurK L*pl N@1O
14/27
Pierre-Emmanuel Prillon 10200712 jeu*joueurK L*po ntNPO testN@1O X0 le 6testNN@1/ R fflus06std n/O cout PP`Par 'u do t etre controle le joueur `PP6 F1/PP` J`PPendlO cout PP`K8ape< : pour :rd nateur, C pour Cuma n, s7pL` PPendlO &ofNgetc0ar6/O 33*etc$!" pour+uoi pas
sX tc06&of/ R case [C[: case [0[: jeu*joueurK L*t5peNtrueO 33ici une a##ectation =rdi3Bumain testN1O 33passa*e d4un tmoin cout PP`Geu lle< entrer 7otre nomK,!I,I> E:E P+:8>D>>L:`O c n TT jeu*joueurK L*nomO cout PP`bn merc `PPendlO &rea#O case [:[://s on tapa un : maj ou m n case [o[: jeu*joueurK L*t5peNfalseO testN1O sX tc06 / //on pourra t ecr re =a en 2 l gnes a7ec des ta&leau de structures R case 1: //on rempl le nom du joueur a7ec le nom par dfaut for6jN1OcarreauKjL^NE?%%OjFF/jeu*joueurK L*nomKjLNcarreauKjLO &rea#O case 1: for6jN1OcoeurKjL^NE?%%OjFF/jeu*joueurK L*nomKjLNcoeurKjLO &rea#O case 2: for6jN1Op 'ueKjL^NE?%%OjFF/jeu*joueurK L*nomKjLNp 'ueKjLO &rea#O case 3: for6jN1OtrefleKjL^NE?%%OjFF/jeu*joueurK L*nomKjLNtrefleKjLO &rea#O default: //cas mpro&a&le ma s &on s e$tent on 9 . joueurs for6jN1O$gamerKjL^NE?%%OjFF/jeu*joueurK L*nomKjLN$gamerKjLO SO// end sX tc06 / jeu*joueurK L*nomKjLNE?%%O 33#o le remettre u +u4on ne l4a pas encore copi &rea#O default: testN@1O 33normalement % inutileGGG S//ende 7on sX tc0 S //ende 7on X0 le 6testNN@1 JJ/
21/27
33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ %ree_pioc$e @@@ 33@@@ rempli un tableau de D cartes de 0 5 D @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7o d CreeQp oc0e6 nt p oc0eKEL/ R for6 nt N1O PEO FF/ p oc0eK LN O S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ &istribuer @@@ 33@@@ distribue nb_carte au ' joueurs utilise %_)A< @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7o d B str &uer6 nt p oc0eKEL,struct sp el Hjeu, nt n&Qcarte/ R f 6n&QcarteNN1/ n&QcarteN1O for R for 6 nt jN1OjPJOjFF/ 33 5 c$a+ue joueur R f 6 Pn&Qcarte/ Rjeu*joueurKjL*cartesK LNp oc0eKjYMF LOS else Rjeu*joueurKjL*cartesK LN44OS S 33ende on #or i S 33 ende on #or j S 33ende on distribuer 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ 'ouer_manuel @@@ 33@@@ *ere toutes la p$ase E3, pour 1 joueur @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ nt JouerQmanuel6struct sp el Hjeu, nt ma tre, nt majorant, nt jeton, nt d str &uteur, nt ta&leKL, nt nQcoup/ R nt ,j,e$cuseO 33prsentation des cartes dej5 jou !a##ic$a*e de la table" doR 33 tant +ue la saisie est in alide cout PPendlO cout PP`bnNNNNNNNNNNNNNNNNNNNNNNNNNTTT `O !ff c0eQnomQjoueur6jeu,jeton/O cout PPendlO !ff c0eQta&le6jeu,ta&le,d str &uteur/O //aff c0age de la ma n du joueur f 6ma tre^N@1/ 6 nt N1O PCQM!aO FF/ 33 on distribue une carte
21/27
Pierre-Emmanuel Prillon 10200712 R cout PP`bnbnMa tre `O !ff c0eQnomQjoueur6jeu,ma tre/O cout PP` a7ec un `PPmajorantO
S !ff c0eQcartes6jeu,jeton,nQcoup,true/O 33cout JJKLn/os pointsM KJJjeu?joueur0jeton1?pointE cout PPendlO !ff c0eQnomQjoueur6jeu,jeton/O cout PP`, 7ous de7e< encore remporter `PPjeu*joueurKjetonL*pl PP` pl 6s/*`O 33table0j16dsi*nation de carte 5 jouer coutPP`bnbt>ntre< la 7aleur de la carte 'ue 7ous sou0a te< jouer JN`O c n TT O jN8rou7eQcarte6jeu,jeton,nQcoup, /YcarteQ7oulueY//O f 6jNN@1/ //0um je cro s 'ue =a ne marc0e pas R cout PP`bnbnPPP Ce n[est pas une entree correcte TTTbnbn`O //Kact on au cla7 er pour cont nuerL //!ttendreQact on6/O S f 66jNN1/HH6 NN1// R cout PP`bnGous joue< 7otre escuse,`O cout PP`bn7ous pou7e< lu donner la 7aleur de 7otre c0o $ entre 1 et 22`O cout PP`bnIuelle 7aleur c0o s sse< 7ous J K,!I,I> E:E P+:8>D>>L: `O c n TTe$cuseO jeu*joueurKjetonL*cartesK1LNe$cuseO S SX0 le6jNN@1/O// tant 'ue la sa s e est n7al de return jO S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY JouerQ<eroQcarte YYY //YYY dtourne la &oucle des - joueurs pour aff c0age des cartes YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY nt JouerQ<eroQcarte 6struct sp el Hjeu, nt compteur, nt jeton/ R f 6compteurNN1/ R cout PP`bn8our a7ec les cartes des autres*** attent on ^`O cout PP`bnles cartes: `O S f 6jeu*joueurKjetonL*cartesK1LNN1/ // gest on automat 'ue de l[e$cuse*** R jeu*joueurKjetonL*cartesK1LN22Yjeu*joueurKjetonL*pl O S cout PPjeu*joueurKjetonL*cartesK1LPP` `O return 1O S
22/27
//YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY melangeQp oc0e YYY //YYY mlange un ta&leau de E cartes YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d MelangeQp oc0e6 nt p oc0eKEL/ R nt l steKELO //l ste au$ l a re nt &ofO //locale srand6 6uns gned/t me6 E?%% / /O// n t gnrateur alato re @ t me du t5pe long et non uns gned for 6 nt NEO T1O @@/ R f 6 ^N1/// on sa t jama s a7ec les d 7 s on par <ro R &ofNrand6/ d O //on c0o s un nd ce au 0asard dans le ta&leau l steKE@ LNp oc0eK&ofLO //on cop e dans la l ste au$ p oc0eK&ofLNp oc0eK @1LO//on replace dans p oc0e par la 7aleur la plus 9 dro te de la l ste //9 la proc0a ne trat on on racourc era la l ste* SelseRcout PP`conner e`Oc n TT&ofOS S//ende fur fer for6 N1O PEO FF/ p oc0eK LNl steK LO//on recop e la l ste au$ dans la p oc0e ^^^ S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY M seQautomat 'ue YYY //YYY m se automat 'ue comme son nom l[ nd 'ue YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY nt M seQautomat 'ue6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/ R nt ,jN1O float #N1O f 6n&QcarteNN1/ n&QcarteN1O//Go l9 =a d str due 'uand meme pour n&carteNN1 O@/ for 6 N1O Pn&QcarteO FF/ R #FN6float/jeu*joueurKjetonL*cartesK LO f 6 jeu*joueurKjetonL*cartesK LT611Fn&Qcarte/ / jFFO S f 66jeu*joueurKjetonL*cartesK1LNN1/HH6jNN1// jN1O//s on a l[e$cuse*** //s on est d str &uteur attent on 9 la 7aleur nterd te f 6 6jetonNNd str &uteur/HH6jNNGaleurQ nterd te6jeu,d str &uteur,jeton,n&Qcarte// / R f 6jNN1/ //s on est au m n pas le c0o $ R jFFO S else//6j^N1/
23/27
projet IF3 dcembre 2004 33si on est au ma7 pas le c$oi7 33r+ si nb_carte660 on se retrou e dans le cas
R j@@O S else //6j^Nn&Qcarte/ R #N6#//66float/n&Qcarte/O f 6#T12/ 33si la mo8enne est suprieure 5 12 R jFFO 33on au*mente S else R j@@O 33sinon on diminue S S 33ende #Hr !jG6nb_carte" S 33ende #Hr !jG60" S 3@ cout JJK@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KJJendlE cout JJ!jeton>1"JJK" nom du joueurMKE A##ic$e_nom_joueur!jeu2jeton"E cout JJKLnLtmise proposeeM KJJjJJendlE @3 return jO S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ ,aisie_pari @@@ 33@@@ dtecte la prsence d4un perdant au moins @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ nt Fa reQcompte6struct sp el Hjeu/ R nt perdantN1O for6 nt compteurN1OcompteurPJOcompteurFF/ R jeu*joueurKcompteurL*po ntNjeu*joueurKcompteurL*po nt@a&s6jeu*joueurKcompteurL*pl /O f 6jeu*joueurKcompteurL*po ntP1/ perdantNcompteurO S 33dans le cas ou il 8 a deu7 perdants2 ce +ui n4est pas impossibleM A;N minime return perdantO S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ ,aisie_pari @@@ 33@@@ saisie prote*e du pari du joueur et en o8ant celui des autres @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ nt ,a s eQpar 6struct sp el jeu, nt jeton, nt d str &uteur, nt n&Qcarte/ R
2-/27
nt j, O f 6n&QcarteNN1/ n&QcarteN1O//marc0e pour 1 carte doR cout PP`bnCom& en de pl s pense< 7ous gagnerJ`PPendlO cout PP`bnPour etre 7al de le par do t etre compr s entre 1 et `PP n&Qcarte PP`*`O f 6jetonNNd str &uteur/ R cout PP`bnGous etes le d str &uteur, 7ous ne de7e< pas d re `O NGaleurQ nterd te6jeu,d str &uteur,jeton,n&Qcarte/O cout PP PPendlO cout PP`, non l n[5 aura pas de perdant***`O S cout PP` !lorsNJ`O //fflus06std n/O c n TTjO jN6 nt/jO 33un planta*e semblerai til SX0 le6 6jP1/ cc 6n&QcartePj/ cc 6 6jetonNNd str &uteur/HH6jNN / / /O return jO S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY ,Xap YYY //YYY c0ange deu$ 7aleurs donne en parametre YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d ,Xap6 nt Ha, nt H&/ R nt tmp N aO a N &O & N tmpO S //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY //YYY 8r Qcro ssant YYY //YYY tr e un ta&eau de . entre YYY //YYY ut l se la fct 7o d sXap,et M YYY //YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 7o d 8r Qcro ssant6 nt ta&KML/ R nt ,jO for 6 N6M@1/O T1O @@/ R for 6jN1OjP OjFF/ R f 6ta&KjLTta&KjF1L/ ,Xap6ta&KjL,ta&KjF1L/O S 33#or j S 33 #or i S 33end .ri%roissant 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ .rou e_carte @@@ 33@@@ #onction retrou ant la carte joue par le joueur @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2./27
nt 8rou7eQcarte6struct sp el jeu, nt jeton, nt nQcoup, nt carteQ7oulue/ R nt &N@1O for6 nt N1O6 PnQcoup/HH6jeu*joueurKjetonL*cartesK L^N44/O FF/ R //cout PP`bnrteQ7oulueN`PPcarteQ7ouluePP` cartesK LN`PPjeu*joueurKjetonL*cartesK LO f 6jeu*joueurKjetonL*cartesK LNNcarteQ7oulue/ &N O S return &O S 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ /aleur_interdite @@@ 33@@@ 9etourne la aleur +ue le distributeur ne peut dire @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ nt GaleurQ nterd te6struct sp el jeu, nt d str &uteur, nt jeton, nt n&Qcarte/ R f 6n&QcarteNN1/ n&QcarteN1O//7o l9 ca marc0era nt sommeN1,jO for 6jN!uQsu 7ant6d str &uteur/,sommeN1Oj^NjetonOjN!uQsu 7ant6j// sommeNjeu*joueurKjL*pl FsommeO return 6n&Qcarte@somme/O S
3@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ &EA;NANE @@@ 33@@ @@ 33@ @ 33 oid Attendre_action!"E 33int Au_precedant!int jeton"E 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ Au_precedant @@@ 33@@@ cette #onction permet de re enir au joueur precedant @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int Au_precedant!int jeton" O jeton--E i# !jetonJ0" jeton6!'-1"E return jetonE P 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ A##ic$e_structure1 @@@ 33@@@ a##ic$e le contenu d4une structure spieler @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ oid A##ic$e_structure1 !struct spiel jeu2int i"
22/27
O cout JJendlE cout JJK_______________________________________________________KJJendlE cout JJKindice KJJiJJK KE A##ic$e_nom_joueur!jeu2i"E cout JJendlE #or!int j60EjJ%_)A<Ej>>" O cout JJK KJJjJJK6QKJJjeu?joueur0i1?cartes0j1E PE cout JJKLn pli KJJjeu?joueur0i1?pliE cout JJKLn point KJJjeu?joueur0i1?pointE cout JJKLn t8pe KJJjeu?joueur0i1?t8peE cout JJendlE cout JJ_______________________________________________________KJJendlE cout JJendlE P 33 33 33 33 oid A##ic$e_structure1!struct spiel jeu2int i"E oid A##ic$e_structure1!struct spiel jeu2int i"E oid A##ic$e_pioc$e!int pioc$e0D1"E oid %opie_tableau!int dest012int ori*012int ma7"E
33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ A##ic$e_pioc$e @@@ 33@@@ a##ic$e le contenu d4une structure spieler @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ oid A##ic$e_pioc$e!int pioc$e0D1" O #or!int i60EiJDEi>>"cout JJK p0KJJiJJK16KJJpioc$e0i1EP 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ %opie_tableau @@@ 33@@@ trie un tabeau de R entre @@@ 33@@@ utilise la #ct oid s-ap2et ) @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ oid %opie_tableau!int dest012int ori*012int ma7" O #or!int i60EiJma7Ei>>" dest0i16ori*0i1EP 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@ Attendre_action @@@ 33@@@ %omme son auteur cette routine ne #ait rien @@@ 33@@@ oil5 supprim car Sb$it n4est pas une mt$ode standart @@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ oid Attendre_action!" O ##lus$!stdin"E -$ile !GSb$it!""E P 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 33@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @3
27/27