ࡱ;   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRSTUVXYZ[ ®`VTextStarWriter 5.0xD/2 SfxDocumentInfo Matts M /1Matts M /1tBMatts M /10( Info 0 Info 1 Info 2 Info 3 /1Zܒ' <TASK,0,132,0,100,1,1990;313670;150;0;309880;12100;317490;0;0SWG, A<  #$%&'()*./0123456789:;<=>?@ABCDGHK  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFQRSTUh0 'L@ SymbolTahoma helveticaXXX0'P@d d d U K XXX"X,X6$' @-  XX' @PX'@oX'(!@, %, XA'2*@dxddxdXX7S;"@XX8S<&@.XX9S=(@bXXR'D@Xf *W!P'Times New Roman$' '(, , L,  , , , \, , , , l, 0!, #, &, |), @,, /, 1, 4, P7, :, <, ?, 6')*22  RTF_Num 4 1 RTF_Num 4 1'Default Paragraph FontNormalDefault Paragraph Font' $'NormalNormal' $'Text BoxText Box;7S<8S=9S>> GraphicGraphic;7S<8S=9S>> OLEOLE;7S<8S=9S>> StandardStandard@NormalStandardNormal' $' heading 1NormalNormal'DR' heading 2NormalNormal'DR' Document MapNormal Document Map' Body TextNormal Body Text'HeaderStandardHeader@('FooterStandardFooter@('HeadingStandard Text body@''2A'DR'  Text bodyStandard Text body2A' Heading 3Heading Text body@''  Heading 4Heading Text body' ''  Heading 5Heading Text body'' Heading 6Heading Text body'' Heading 7Heading Text body'' Heading 8Heading Text body'' Heading 9Heading Text body'' Heading 10Heading Text body'' H(t$c Xa0sSW5HDR./1tB!l RTF_Num 4 1Default Paragraph FontNormal RTF_Num 2 RTF_Num 3 RTF_Num 4Outline0 #RvX  n#.-hn#.-n#.-8n#.-n#.-n#.-pn#.- n#.-@ n#.- n#.-RvX  n#.hn#.n#.8n#.n#.n#.pn#. n#.@ n#. n#.RX  n).Symbolh n).Symbol n).Symbol8 n).Symbol n).Symbol n).Symbolp n).Symbol  n).Symbol@  n).Symbol  n).Symbol ZOh+'0 h t 11@f@b<¿@ {¿@I¿Matts MMatts MSW5HDR./1tB!! Frameformat ZeichenformatTextformatvorlageStandardNormal heading 1 heading 2 Document Map Body TextHeaderFooter Heading Text body  Heading 3  Heading 4 Heading 5 Heading 6 Heading 7 Heading 8 Heading 9 Heading 10 RTF_Num 4 1Default Paragraph Font Text Box Graphic OLERoot 27StandardRTF-SectionPage(1)  Illustration Table TextDrawingY .Y .Y .Y  .q3 StandardStandarddNC# ##0,00# ##0,00SystemNC # ##0,00 CCC# ##0,00 CCCNC# ##0,-- F;[RED]-# ##0,-- F # ##0,-- F-# ##0,-- FREDNC$ JJ/MM/AAAAJJ/MM/AAAA def/SystemNC%JJ/MM/AAJJ/MM/AA def/SystemNC&NNNNJ MMMM AAAANNNNJ MMMM  AAAASystemNC'J MMM AAJ MMM AA def/SystemNC. [HH]:MM:SS,00 [HH ]:MM:SS ,00NC3JJ/MM/AAAA HH:MM:SS JJ/MM/AAAA HH :MM:SS  NCK J MMM AAAAJ MMM AAAA def/SystemNCL J MMMM AAAAJ MMMM  AAAA def/SystemNCM NN J MMM AANN J MMM AA def/SystemNCNNN J MMMM AAAANN J MMMM  AAAA def/SystemNCONNNNJ MMMM AAAANNNNJ MMMM  AAAA def/SystemNCP J. MMM. AAAAJ. MMM. AAAADIN 5008 (EN 28601)NCQ J. MMMM AAAAJ. MMMM  AAAADIN 5008 (EN 28601)NCRMM-JJMM-JJDIN 5008 (EN 28601)NCSAA-MM-JJAA-MM-JJDIN 5008 (EN 28601)NCT AAAA-MM-JJAAAA-MM-JJDIN 5008 (EN 28601)NCUWWWWNCBXqePBp 2$99 SAAP.AAPdddAPddSAAP.AAPdddAPddp 2$99 SAP.AAPdddAPddAiPr_ HeaderSMAPAPdddAPNT  Af Pr\ FooterSJAPdddAPddAPNT  SAAP.AAPdddAPddZSW5HDR./1tBC(517e(Build:4164)(SV517)]DAddress bookaddress!! Frameformat ZeichenformatTextformatvorlageStandardNormal heading 1 heading 2 Document Map Body TextHeaderFooter Heading Text body  Heading 3  Heading 4 Heading 5 Heading 6 Heading 7 Heading 8 Heading 9 Heading 10 RTF_Num 4 1Default Paragraph Font Text Box Graphic OLERoot 27StandardRTF-SectionPage(1)  Illustration Table TextDrawingdw< 9L1 4 5*jY .Y .Y .Y  .6NhwTSA PT T T T T Ts.Flchettes (cricket): Dossier de programmationSA  A @A8 .A8.d TSAd T T TLe jeu de cricket est un jeu de flchettes. Ce jeu se joue en fermant (i.e : taper trois fois de suite dans le mme secteur) diffrents secteurs de la cible de flchettes .Le vainqueur est celui qui a le moins de points la fin du jeu, c'est a dire quand tout le monde a ferm tous les secteurs. Chaque fois qu'un joueur tape dans un secteur ferm, il ajoute des points aux joueur s dont le secteur quivalent n'est pas ferm. TSA@d TSA@d TSA@d TSA@d TSA@d T9 1er NIVEAU:A8 @d A8:T  SA@d TSAd T@Description du rsultat:SAd A  T(SAd A  T2'Affichage du vainqueur du jeu cricket. TC'est la dtermination du rsultat qui ncessite la modlisation du jeu. A la suite de cette description on peut tout de suite sans raffiner davantage commencer exprimer une premire ide de l'algorithme .TSAd TU1er ide de l'algorithme:SAd A8 A8:TSAd TADterminer le nombre de joueurs et le niveau de difficult du jeuS<APdddhA @A @ RTF_Num 4A8d A8 Ad 3T/Simuler l'interface graphique du jeu de cricketSKAPdddhAd A @A @ RTF_Num 43TsDsigner le vainqueurSKAPdddhAd A @A @ RTF_Num 43TSAd T}_Ces trois tapes gnrales permettent dj un premier dcoupage du programme en trois parties :SAd TL'initialisation (du nombre de joueurs mais aussi srement d'autres paramtres dtailler plus tard dans l'algorithme).Le jeu en lui mme avec l'interface graphique. Le traitement de fin de jeu et l'affichage des scores. SAd TSAd T! SAd TSAd TSAd TSAd TSAd TSAd T4 2me niveau:SA@d A  T(SA@d A  TDans ce deuxime niveau nous allons nous attacher raffiner chacune des trois parties dfinies au 1er niveau .Il s'agit donc d'exprimer une ide d'algorithme plus dtaille que la prcdente. A8d A8df:TSAd T5Algorithme de niveau 2:SAd TSAd T?!Initialiser le nombre de joueurs SAd T.Tracer la cible SAd T9Tant que fin_de_jeu = faux SAd T8 Tous les joueurs jouent SAd T0 Fin_de_jeu <-? ?SAd T#FtantSAd T;Chercher le plus petit score SAd TB$Rechercher le joueur ayant ce score SAd T9Le dsigner comme vainqueurSAd TSAd TUne rflexion plus pousse sur la rgle de jeu nous permet de dduire que la fonction fin_de_jeu dpend des secteurs et il faut donc une fonction qui rcupre l'tat des secteurs de chaque joueur qui renverra soit qu'ils sont tous ferms ou non. De plus par hypothse le nombre de joueur ne peut excder 4 ce qui est une restriction du jeu qu'il faut intgrer dans le programme . Enfin chaque joueur n'a droit qu' trois tirs.SAd TJ,Raffinons donc ds prsent cet algorithme.SAd TSAd TSAd T4 3me niveau:SA@d A  T(SAd A  T"Lexique des variables: T TVKNbJoueur (entier) le nombre de joueurs de la partie DONNEE TI>Tir (entier) le nombre de tirs qu'a fait le joueur T<1Joueur (entier) le numro du joueur courantT(SAd A  T<Algorithme niveau 3:SAd A  T T NbJoueur<- lire T]  Si nbJoueur < 4 alors SAtimesA8A8d TS5 Initialiser le jeu pour nombre de nbJoueur joueurs SAd T) Tir <- 0 SAd T! SAd T/ Affiche_infos SAd T. Tracer_cible SAd TSAd T= Tantque fin_de_partie = fauxSAd T2 Tantque tir <3SAd T1 Joueur tire SAd T3 Tir <- tir + 1SAd T- Ftant SAd T= Tir <- 0A8d A8 d T= Si joueur +2 <= nbJoueur SAd T: Joueur <- joueur +1SAd T5 Sinon joueur <- 0SAd T' FsiSAd T-Affiche_ infos SAd T) Trace_cibleSAd T8 Si fin_de _partie = vrai SAd T3 Affiche_VainqueurSAd T# FsiSAd TSAd TSAd T4Lexique des fonctions:SAd TfFin_de_partie: fonction qui vrifie l'tat des secteurs de chacun des joueurs et renvoie vrai si SAd TgI tous les joueurs ont tous leurs secteurs ferms.SAd TSAd TaAffiche_infos: fonction qui affiche le joueur courant et ses points ainsi que tous les joueurs SAd TU7 de la partie et leurs points .SAd TSAd TkMTrace_cible: fonction qui affiche une cible de flchettes en mode graphique .SAd TSAd TbAffiche_vainqueur: fonction qui affiche le vainqueur avec ses points ainsi que tous les autres SAd Tz\ joueurs , avec leurs points , dans un ordre croissant . SAd TSAd TSAd T On peut maintenant s'intresser au fonctionnement de ces diffrentes fonctions. Ainsi les tableaux semblent tre les meilleures structures pour grer les scores et les secteurs, mais aussi et surtout la reprsentation des tirs et la rcupration des scores. SAd TSAd TSAd TSAd TSAd TSAd T4 4me niveau:SA@d A  T(SA@d A  T6 Lexique des variables: A8d T TYNNbJoueur (entier ) le nombre de joueurs de la partie DONNEE TK@Tir (entier ) le nombre de tirs qu'a fait le joueur T=2Joueur ( entier) le numro du joueur courantT SAd T T"lexique des constantes:T],XI ,YI coordonnes du centre de la cible A8d A8,d T  T T<Algorithme niveau 4:SAd A  T T NbJoueur<- lire T$ Si nbJoueur <= 4 alors Tt7 Initialiser le jeu pour nombre de nbJoueur joueurs A87d A847 Courier NewT SAd TSAd T( Tir <- 0 SAd T! SAd T/ Affiche_infos SAd T. Tracer_cible SAd TSAd T= Tantque fin_de_partie = fauxSAd T3 Tantque tir < 3SAd T3 BougeCurseurA8d T> determineSecteur SAd T3 afficheInfosSAd T2 tracerCibleSAd TO Tir <- tir + 1A8d A8 Courier NewT, Ftant SAd T" SAd T= Tir <- 0A8d A8 d T$ SAd T= Si joueur +2 <= nbJoueur SAd T; Joueur <- joueur +1SAd T5 Sinon joueur <- 0SAd T' FsiSAd TSAd T-Affiche_ infos SAd T* Tracer_cibleSAd T8 Si fin_de _partie = vrai SAd T3 Affiche_VainqueurSAd T# FsiSAd T2 SAd TSAd T>Lexique des fonctions:SAd A  T Tk4Fonction tracerCible(in tSect: tableau d'entier[26])A84d A8timesT# SAd TSAd T6Lexique des variables : SAd TH* i (entier) compteur SAd T?! teta (rel) angleSAd T5 rNombres (entier)SAd TR4 x,y (entier) position rel du pointSAd TU7 X,Y (entier) position thorique du pointSAd T; char (tableau)SAd T SAd T SAd T SAd T; tracerLigne(300,0,300,700) SAd T  SAd T; remplirCercle (XI, YI, 10) SAd T: tracerCercle (XI, YI, 18) SAd T; tracerCercle (XI, YI, 145) SAd T; tracerCercle (XI, YI, 160) SAd T; tracerCercle (XI, YI, 300) SAd T; tracerCercle (XI, YI, 285) SAd T  SAd T SAd T1 pour i de 0 19 SAd T# SAd TM/ x <- (300* (cos ((PI/20)+((i*PI)/10)))) SAd TK- y <- (300* (sin ((PI/20)+((i*PI)/10))))SAd TL. tracerLigne (750-x, 350-y, 750+x, 350+y)SAd T' fpourSAd TSAd T, teta<-PI/20 SAd T5 rNombres <- 300*(3/4)A8d TSAd TSAd T1 pour i de 0 19 SAd T" SAd TH* polCart(rNombres,teta+(PI/20),X,Y) SAd T9 nbTexte(tSect[i],txt)SAd T: ecrireSurFond(X,Y,txt)SAd T5 teta<-teta+PI/10 SAd T' fpourSAd TSAd TSAd Tla fonction tracer_cible ncessite une fonction utilisant des angles pour la tracer. d'ou la cration d'une fonction utilisant les coordonnes du point courant qui les transforme en son angle ainsi que le rayon du cercle qu'il dcrit avec le centre.SAd TQ3Cette fonction est cartPol et son inverse polCart .SAd T*SA Courier NewTK- SAd TSAd TgFonction Affiche_Infos:( nbJoueurs entier, tScore:tableau[4], joueur: entier, tFerme: tableau [][26])A8d A8d A8gd TSAd T9 i (entier) compteur SAd T9 l (entier) compteur SAd T6 lign (entier) compteurSAd TA# char (tableau de caracteres[10]) A8"d T  SAd TSAd T,viderFenetre()SAd T@" ecrireSurFond(20,30,"JOUEUR : ")SAd T5 nbTexte(joueur+1,txt)SAd T8 ecrireSurFond(70,30,txt)SAd TSAd T@" ecrireSurFond(20,60,"SCORE : ")SAd T; nbTexte(tScore[joueur],txt)SAd T8 ecrireSurFond(65,60,txt)SAd TSAd T! SAd T< pour i de 0 (nbJoueurs-1) SAd T1 si i != joueur SAd TS5 ecrireSurFond(20,50+(4+l)*20,"Score du joueur")SAd T4 nbTexte(i+1,txt)SAd TH* ecrireSurFond(120, 50+(4+l)*20, txt)SAd TH* ecrireSurFond(130, 50+(4+l)*20, ":")SAd T: nbTexte(tScore[i],txt)SAd TH* ecrireSurFond(140, 50+(4+l)*20, txt)SAd T$ SAd T" SAd T% fsiSAd T% fpourSAd T  A8d T4 pour lign de 0 a 5 SAd T" SAd TV8 ecrireSurFond(20, 400+lign + (20*lign), "secteur")SAd T8 nbTexte(lign+15,txt)SAd TP2 ecrireSurFond(80, 400+lign + (20*lign), txt)SAd TQ3 ecrireSurFond(100, 400+lign + (20*lign), ":")SAd T  SAd TSAd TK- pour i de 0 a tFerme[joueur][lign+15] A8-d T SAd T remplirRectangle(110+(i*32), 400 + lign + (20*lign) - 10, 120+(i*32), 400 + lign + ( 20*lign) + 5) SAd T! SAd T' fpourSAd T4 (lign <- lign +1)SAd T% fpourSAd T TQ3 ecrireSurFond(15,400+7+(20*7),"secteur centre:")SAd T  SAd TH* pour i de 0 (tFerme[joueur][25] - 1) SAd T" SAd TuW remplirRectangle(110+(i*32), 400 + 7 + (140) - 10, 120+(i*32), 400 + 7 + (140) + 5) SAd T" SAd T& fpourSAd T#fpourSAd TSAd TSAd T SAd TSAd T~Qfonction fin_de_partie:(tFerme: tableau [4][26], nbJoueurs: entier) : ret boolenA8Qd A8 TSAd T: test (boolen) SAd T> secteur (entier) compteurSAd T; jCourant (entier) compteurSAd T SAd TSAd T- test <- vrai SAd T  SAd TI+ pour jCourant de 0 a (nbJoueurs - 1) SAd T< pour secteur de 15 20 SAd TfH si (tFerme[jCourant][secteur] < 3) ou (tFerme[jCourant][25] < 3))SAd T SAd T1 test <- faux SAd T( fsi A8 d T" A8d T& fpourSAd T#fpourSAd TA# retour_de_fin_de_partie <- test SAd T! SAd TSAd TDans cette fonction il nous faut un tableau pour ranger le nombre de coup dans chaque secteur de chaque joueur ,ici il s'appelle tFermeTsUl' algorithme est plus dtaill nanmoins toutes les fonctions ne sont pas encore compltes , leur logique est pos il faut encore dfinir les tableaux ou autres fonctions necessaires aux fonctions ci au-dessus appele dans le programme. Nous allons pour ce faire dcouper toute les fonctions supplmentaires ncessaires en trois groupes: SAd T=les fonctions d'initialisation SAd T7les fonctions d'affichageSAd T7les fonctions de liaisonsSAd TSAd TSAd TSAd T8 5me niveau:A8  A8 @d T T!Lexique des variables T TC8NbJoueur (entier ) le nombre de joueurs de la partie TLATir (entier ) le nombre de tirs qu'a fait le joueur T>3Joueur (entier) le numro du joueur courantTE'x, y (entier) coordonnes SAd TZ<difficulte (entier) pour les diffrents niveaux du jeuSAd T5tailleMax (entier)A8d T?!tFerme (tableau d'entier)SAd TA#tScore (tableau d'entier) SAd TA#tSect (tableau d'entier)SAd TA#tPtSect (tableau d'entier) SAd TOfin (boolen)A8d A8d T T2 SAd TSAd TSAd TSAd T( x<- 350 SAd T' y <- 300SAd T' tir <- 0SAd T* joueur <- 0SAd T* fin <- fauxSAd TSAd T} initJeu(Joueurs, tFerme:tableau, tScore:tableau , tOrdreJoueur:tableau, tSect:tableau, tPtSect , t , x , y, difficult )SAd TSAd T5 si(difficulte <- 1)SAd T0 tailleMax <- 3SAd T% sinonSAd T" SAd T7 si(difficulte <- 2)SAd T- tailleMax <- 5SAd T) sinonSAd T2 si(difficulte <- 3)SAd T/ tailleMax <- 7SAd T. fsiSAd T% SAd TSAd TSAd TdF ouvrirFenetreTailleTitre(XMAX,YMAX, "Jeu de flechette , Le Cricket")SAd T  SAd TW9 afficheInfos(nbJoueurs, tScore, joueur, tPts, tFerme)SAd T  SAd T0tracerCible(tSect)SAd T  SAd T5 tantque (fin = false)SAd T" SAd T4 tantque(tir < 3)SAd T SAd TC% bougeCurseur( x, y, tailleMax) SAd TgI determineSecteur(x , y, joueur ,tFerme, tScore, tPtSect, nbJoueurs) SAd TY; afficheInfos(nbJoueurs, tScore, joueur, tPts, tFerme) SAd T6 tracerCible(tSect) SAd TI+ fin <- finDePartie(tFerme, nbJoueurs) SAd T1 tir <- tir + 1 SAd T- ftant SAd T! SAd T- tir <- 0 SAd T$ SAd T SAd TSAd T= si(joueur + 2 < =nbJoueurs)SAd T6 joueur <- joueur + 1SAd T) sinonSAd T- joueur <- 0 SAd T& fsiSAd TSAd TY; afficheInfos(nbJoueurs, tScore, joueur, tPts, tFerme) SAd T6 tracerCible(tSect) SAd T# A8d T* ftant SAd T$ SAd T0 si nbJoueurs = 1SAd T; ecrire "Le joueur 1 gagne !"SAd T SAd T& sinonSAd TJ, triScores(tOrdreJoueurs, tScore, nbJoueurs)SAd TN0 afficheScores(tOrdreJoueurs, tScore, nbJoueurs)SAd TSAd T# fsiSAd TSAd TSAd TSAd TSAd TSAd T>lexique des fonctions:SA@d A  T T3fonction d'affichage:SAd T T- SA Courier NewTSAd T Fonction afficheInfos (in nbJoueurs:entier, in tScore:tableau d'entier[4], in joueur:entier, in tPts tableau d'entier[7], in tFerme:tableau d'entier[4][26]):videSAd T! SAd T1 i (entier) SAd T3 l (entier) SAd T1 lign (entier) SAd T/ char (tableau)SAd TSAd T) l <- 0 SAd T1 viderFenetre() SAd TC% ecrireSurFond(20,30,"JOUEUR : ") SAd T8 nbTexte(joueur+1,txt) SAd T; ecrireSurFond(70,30,txt) SAd TSAd TC% ecrireSurFond(20,60,"SCORE : ") SAd T> nbTexte(tScore[joueur],txt) SAd T; ecrireSurFond(65,60,txt) SAd TSAd T! SAd TG) pour (i de 0 a (nbJoueurs - 1) ) SAd T3 is(i!=joueur) SAd TV8 ecrireSurFond(20,50+(4+l)*20,"Score du joueur") SAd T7 nbTexte(i+1,txt) SAd TK- ecrireSurFond(120, 50+(4+l)*20, txt) SAd TK- ecrireSurFond(130, 50+(4+l)*20, ":") SAd T= nbTexte(tScore[i],txt) SAd TK- ecrireSurFond(140, 50+(4+l)*20, txt) SAd T' SAd T% SAd T& fsiSAd T% fpourSAd TSAd T7 pour(lign de 0 5 )SAd T% SAd TY; ecrireSurFond(20, 400+lign + (20*lign), "secteur") SAd T; nbTexte(lign+15,txt) SAd TS5 ecrireSurFond(80, 400+lign + (20*lign), txt) SAd TT6 ecrireSurFond(100, 400+lign + (20*lign), ":") SAd T$ SAd T$ fpourSAd TSAd TM/ pour(i de 0 a tFerme[joueur][lign+15] )SAd Te remplirRectangle(110+(i*32), 400 + lign + (20*lign) - 10, 120+(i*32), 400 + lign + (20*lign) + 5) SAd T! SAd T* fpourSAd TSAd TS5 ecrireSurFond(15,400+7+(20*7),"secteur centre:") SAd TF( pour i de 0 a (tFerme[joueur][25] - 1)SAd TxZ remplirRectangle(110+(i*32), 400 + 7 + (140) - 10, 120+(i*32), 400 + 7 + (140) + 5) SAd T  SAd TSAd TSAd T{ fonction afficheScores(in tOrdreJoueur : entier tableau[4], in tScore : entier tableau[4], in nbJoueurs : entier) : videA8{d T< pour i de 0 (nbJoueurs - 1)SAd TeG ecrire "Le joueur",tOrdreJoueur[i] + 1, "avec un score de", tScore[i]SAd T$ fpourSAd TSAd T SAd T" SAd TSAd TSAd TSAd T TW9 Fonction tracer_Cible (in tSect: entier tableau): videA89d T& SAd T: i (entier)SAd T4 rNombres (entier) SAd TP2 x,y (entier) coordonnes des points SAd TO1 X,Y (entier) coordonnes thoriques SAd TM/ char (tableau de caracteres [10]) SAd T SAd T SAd TSAd T> tracer Ligne(300,0,300,700) SAd T  SAd T  SAd T< remplirCercle(XI, YI, 10) SAd T; tracerCercle(XI, YI, 18) SAd T< tracerCercle(XI, YI, 145) SAd T< tracerCercle(XI, YI, 160) SAd T< tracerCercle(XI, YI, 300) SAd T< tracerCercle(XI, YI, 285) SAd T  SAd T2pour (i de 0 19 )SAd T& A8d TU7 x <- (int)(300* (cos ((PI/20)+((i*PI)/10)))) SAd TS5 y <- (int)(300* (sin ((PI/20)+((i*PI)/10)))) SAd TO1 tracerLigne (750-x, 350-y, 750+x, 350+y) SAd T! SAd T( fpour SAd TSAd T6 rNombres<-300*3/4 SAd T- teta y = rand() % (YMAX - 30) + 50;SAd T  SAd TSAd T  SAd T SAd TSAd T  SAd T2 tantque(tir =faux)SAd T% SAd T6 testerFenetre() SAd TQ3 recupereSousImage(x-10, y-10, x+10, y+10) SAd T9 traceCurseur(x, y) SAd T  SAd T$ SAd T7 si(testerClavier())SAd T" SAd T?! afficheSousImage(x-10,y-10) SAd T= toucheCode(touche, etat) SAd T SAd T* fsi SAd T3 si(etat =KeyPress)SAd T& SAd T% SAd TM selonque (touche) estA8d A8d T# SAd T, XK_Left : SAd TH* si(x-13 = 300)SAd T2 x <- x- 4 SAd T% SAd T" SAd T+ XK_Right :SAd T1 si(x+13 < XMAX)SAd T1 x <- x + 4 SAd T% SAd T! SAd T* XK_Down :SAd T1 si(y+13 < YMAX)SAd T1 y <- y + 4 SAd T% SAd T$ SAd T) XK_Up : SAd T2 si ((y-13) >= 0)SAd T1 y <- y - 4 SAd T% SAd T" SAd T, XK_space : SAd T0 tir <- true SAd T9 remplirCercle(x,y,3) SAd T% SAd T8 fsiSAd T/ fselonSAd TSAd T&fsi SAd T& SAd T" SAd T) sinonSAd T' SAd T SAd T= afficheSousImage(x-10,y-10) SAd TSAd TSAd T; xAleatoire <- rand() % 2 + 1SAd T; yAleatoire <- rand() % 2 + 1SAd T" SAd TF( tailleSaut <- rand() % tailleMax + 2 SAd T SAd T  SAd TZ< si((xAleatoire = 1) et (x+tailleSaut = XMAX-10))SAd T! SAd T7 x <- x + tailleSaut SAd T$ sinonSAd TQ3 si ((xAleatoire = 2) et (x - tailleSaut >= 310))SAd T9 x <- x - tailleSaut SAd T# SAd T SAd T SAd TS5 si ((yAleatoire = 1) et (y + tailleSaut <= YMAX-10))SAd T6 y<- y + tailleSaut SAd T$ sinonSAd TP2 si ((yAleatoire = 2) et (y - tailleSaut >= 10))SAd T9 y <- y - tailleSaut SAd T SAd TSAd TK- recupereSousImage(x-10, y-10, x+10, y+10) SAd T3 traceCurseur(x,y) SAd T= afficheSousImage(x-10,y-10) SAd T- fsiSAd T' fsiSAd T!fsiSAd T) SAd TSAd TSAd TM fonctions d'initialisation:A8@d A8d TSAd Tfonction initJeu(in out nbJoueurs:entier, in tFerme:tableau [4][26],in tScore tableau[4] , in tSect:tableau[20], in tPtSect:tableau[26], in out x:entier, in out y:entier): videA8d A8d TSAd T8 i, j (entier) compteursSAd TSAd T( faire SAd T?! ecrire Combien de joueurs ? SAd T3 nbJoueurs <- lireSAd TM/ tantque((nbJoueurs < 1) ou (nbJoueurs > 4)) SAd TSAd TSAd T  SAd TSAd T8 x = rand() % X MAX + 310SAd T6 y = rand() % YMAX + 10SAd T  SAd TSAd T?! pour (i de 0 (nbJoueurs -1)SAd T! SAd T7 pour (j de 0 26) SAd T0 tFerme[i][j] <- 0A8d T* fpourA8 d T2 tScore[i] <- 0SAd T' fpourSAd TSAd T  SAd T, tSect[0]<-13SAd T+ tSect[1]<-4SAd T, tSect[2]<-18SAd T+ tSect[3]<-1SAd T, tSect[4]<-20SAd T+ tSect[5]<-5SAd T, tSect[6]<-12SAd T+ tSect[7]<-9SAd T, tSect[8]<-14SAd T, tSect[9]<-11SAd T, tSect[10]<-8SAd T- tSect[11]<-16SAd T, tSect[12]<-7SAd T- tSect[13]<-19SAd T, tSect[14]<-3SAd T- tSect[15]<-17SAd T, tSect[16]<-2SAd T- tSect[17]<-15SAd T- tSect[18]<-10SAd T, tSect[19]<-6SAd T  SAd T$fpour SAd T1 pour(i de 0 a 25)SAd T1 tPtSect[i] <- iSAd T% fpourSAd T$ SAd TSAd TSAd TSAd T4fonctions de liaisons:SAd TSAd TSAd TQ3fonction nbTexte (in nb:entier, char:tableau): videSAd T# SAd T, char chiffreSAd T/ si (nb >= 100) SAd T; chiffre <- nb / 100 + '0'SAd T5 texte[0] <- chiffreSAd T/ nb <-nb % 100SAd T: chiffre <- nb / 10 + '0'SAd T5 texte[1] <- chiffreSAd T/ nb <- nb % 10SAd T5 chiffre <- nb + '0'SAd T5 texte[2] <- chiffreSAd T2 texte[3] <- '\0'SAd T& sinon SAd T0 si (nb >= 10) SAd T< chiffre <- nb / 10 + '0'SAd T6 texte[0] <-chiffreSAd T1 nb <- nb % 10SAd T7 chiffre <- nb + '0'SAd T7 texte[1] <- chiffreSAd T4 texte[2] <- '\0'SAd T& si SAd T7 chiffre <- nb + '0'SAd T7 texte[0] <- chiffreSAd T3 texte[1] <-'\0'SAd T% fsiSAd T# fsiSAd T!fsiSAd TSAd TSAd TSAd TpRfonction polCart(in r:entier, in teta:rel, in out X:entier ,in outY:entier): videSAd TSAd TSAd T- Xe,Ye (rel)SAd T  SAd T8 Xe <- XI + r * cos(teta)SAd T8 Ye <- YI - r * sin(teta)SAd T- X <- rint(Xe)SAd T- Y <- rint(Ye)SAd T  SAd TSAd TSAd TSAd TSAd Twfonction cartPol(in x:entier, in y;entier, in out r:entier, in out teta:double, in out X:double, in out Y:double):vide SAd TSAd T= X <- (double) x - (double) XISAd T= Y <- (double) y - (double) YISAd T3 teta <- atan2(Y, X)SAd T< r <- sqrt((X * X) + (Y * Y))SAd TSAd TSAd TSAd TSAd T T Tfonction ptsAdvers (in out mult:entier, in secteur:entier, in tFerme:tableau[4][26], in tScore:tableau[4], in tPtSect[20]:tableau, in joueur:entier, in nbJoueurs:entier): videA8d A8d TSAd TSAd T+ enPlus <- 0SAd T! SAd T  SAd T  SAd T  SAd TM/ si((tFerme[joueur][secteur] + mult) - 3 <= 0)SAd T[= tFerme[joueur][secteur] <- tFerme[joueur][secteur] + multSAd T% sinonSAd T" SAd TT6 enPlus <- ((tFerme[joueur][secteur] + mult) - 3)SAd T@" tFerme[joueur][secteur] <- 3SAd T% fsiSAd T  SAd T/ si(enPlus != 0)SAd T?! pour (i de 0 a (nbJoueurs-1))SAd T> si(tFerme[i][secteur] < 3)SAd TS5 tScore[i] <- tScore[i] + (enPlus * tPtSect[secteur])SAd T( fsiSAd T& fpourSAd TSAd TSAd TSAd TSAd TSAd Tfonction determineSecteur (in x:entier, in y:entier, in joueur:entier, in tFerme[4][26]:tableau, in tScore:tableau[4], in tPtSect:tableau[20], in nbJoueurs:entier): videA8d A8d T/mult (entier)SAd T.secteur (entier)SAd T1r (entier)SAd T.teta (rel)SAd T.X (rel)SAd T.Y (rel)SAd TSAd T' mult <- 0SAd T* secteur <- 0SAd TSAd T< cartPol(x, y, r, teta, X, Y)SAd TSAd TSAd T# SAd TV8 si(r > 18) et (r<= 145)) ou ((r > 160) et (r < 285)))SAd T- mult <- 1SAd T% sinonSAd T  SAd T?! si ((r >= 145) et (r <= 160))SAd T( mult <- 3SAd T' sinonSAd T< si((r >= 285) et (r <= 300))SAd T, mult <- 2SAd T# fsiSAd T  SAd T  SAd T, si (r <= 10)SAd T" SAd T- mult <- 2SAd T1 secteur <- 25SAd T" SAd T% sinonSAd T" SAd T$ SAd T> si ((r > 10) et (r <= 18))SAd T SAd T* mult <- 1A8 d T. secteur <- 25SAd T" fsiA8d T% fsiSAd TSAd TSAd TSAd T  SAd T8 si (X > 0 et Y > 0) SAd TaC si (teta <= 2 * PI / 10 + PI / 20 et teta >= PI / 10 + PI / 20) SAd T1 secteur <- 15SAd T) sinon SAd ThJ si (teta <= 4 * PI / 10 + PI / 20 et teta >= 3 * PI / 10 + PI / 20) SAd T, secteur <- 17SAd T' fsiSAd T% fsiSAd T# fsiSAd T8 si (X < 0 et Y > 0) SAd ThJ si (teta <= PI / 10 + PI / 20 + M_PI / 2 et teta >= PI / 20 + PI / 2) SAd T1 secteur <- 19SAd T( sinonSAd Tz\ si (teta <= 3 * PI / 10 + PI / 20 + PI / 2 et teta >= 2 * PI / 10 + PI / 20 + PI / 2) SAd T, secteur <- 16SAd T' fsiSAd T% fsiSAd T# fsiSAd T8 si (X > 0 et Y < 0) SAd T\> si (teta <= -1 * PI / 2 + PI / 20 et teta >= -1 * PI / 2) SAd T1 secteur <- 20SAd T) sinon SAd Tc si (teta <= -1 * PI / 2 + 2 * PI / 10 + PI / 20 et teta >= -1 * PI / 2 + PI / 10 + PI / 20) SAd T, secteur <- 18SAd T' fsiSAd T% fsiSAd T$ fsiSAd T8 si(X < 0 et Y < 0) SAd T]? si(teta <= -1 * PI / 2 et teta >= -1 * PI / 2 - PI / 20) SAd T1 secteur <- 20SAd T% fsiSAd T# fsiSAd TSAd TcE ptsAdvers(mult, secteur, tFerme, tScore, tPtSect, joueur, nbJoueurs)SAd TSAd TSAd TSAd TSAd TSAd TT fonction finDePartie (in tFerme:tableau[4][26], in nbJoueurs:entier): ret boolenA8Fd A8ITd TSAd T4 test (boolen)A8d T0 secteur (entier)SAd T0 jCourant(entier)SAd TSAd T, test <- vraiSAd T  SAd TD& pour (jCourant de 0 nbJoueurs-1 )SAd T< pour (secteur de 15 20)SAd TeG si((tFerme[jCourant][secteur] < 3) ou (tFerme[jCourant][25] < 3))SAd T+ test <- fauxSAd T( fsiSAd T( fpourSAd T% fpourSAd T, renvoi testSAd TSAd TSAd T% SAd Ttfonction triScores(in tOrdreJoueur : entier tableau[4], in tScore : entier tableau[4], in nbJoueurs : entier) : videSAd T* change <- 1SAd T3 tant que change != 0SAd T/ change <- 0 SAd T?! pour m de 0 m < nbJoueurs - 2SAd T; si tScore[m] > tScore[m+1]SAd TB$ temp <- tScore[m] SAd TF( tScore[m] <- tScore[m + 1] A8(d T= tScore[m + 1] <- tempSAd T" SAd TB$ temp <- tOrdreJoueur[m] SAd TN0 tOrdreJoueur[m] <- tOrdreJoueur[m + 1]SAd TC% tOrdreJoueur[m + 1] <- tempSAd TSAd T- change <- 1SAd TSAd T$ fsiSAd T% fpourSAd T$ ftantSAd T SAd T% SAd T! SAd TSAd TSAd TSAd TSAd TgCONCLUSION: Fin du projet cricket. L'algorithme s'est attach a tout dcrire nanmoins il est vident que seules certaines de ces fonctions avaient un rel intrt tre dcrite; ainsi la fonction tracer_cible par exemple n'est pas interessante du point de vue algorithmique , mais du point de vue mathmatique et c'est pourquoi elle y figure tout de meme. A8 d A8 gd TSAd JGeneric PrinterSGENPRT PostScriptDVTlVTld,,lprdefault_queueSGENPRT7 UN׊NV88.?-.AUp#<MB p# ?NB!p# @OB"p# APB#p# BQB %p#<CRBE&p#<DSB'p# ETB(p# FUB)p#5p#EGVB+p#xp# HWBR-p# IXB^.p# JYBj/p# KZBv0p# L[B1p# M\B2p# N]B3p# O^-U1;p#p# F@p# %ą.AUp#<-p# xBJ.p# yBV/p# zBb0p# {Bn1p# |Bz2p# }B3p#<~-U1;p#p# F@p# k%.AUp#<Bp# &?B p# '@B,p# (AB8p# )BBDp# *CBPp# +DB\p#g,EBp#g-FB*!p#<.GBf"p# /HBr#p# 0IB~$p# 1JB%p# 2KB&p# 3LB'p# 4MB(p# 5NB)p# 6OB*p# 7PB+p# 8QB,p# 9RB-p# :SB.p# ;TB0p# <UB1p# =VB2p# >WB&3p# ?XB24p# @Y-U1;p#p# F@p# l%..AUp#<B,p# "?B8p# #@BDp# $ABPp# %BB\p# &CBhp# 'DBt p# (EB!p# )FB"p# *GB#p# +HB$p# ,IB%p# -JB&p# .KB'p# /LB(p# 0MB)p# 1NB*p# 2OB+p# 3PB-p# 4QB.p# 5RB/p# 6SB(0p# 7TB41p# 8UB@2p# 9VBL3p# :WBX4p# ;X-U1;p#p# F@p# X%".AUp#<[B$p# ?\B0p# @]B<p# A^BHp# B_BTp# C`B`p# DaBl p# EbBx p# FcB p# GdB p# HeB p# IfBp# JgBp# KhBp# LiBp# MjBp# NkBp# OlBp# PmBp# QnBp# RoBp# SpB p# TqB,p# UrB8p# VsBDp# WtBPp# XuB\p# YvBhp# ZwBt p# [xB!p# \yB"p# ]zB#p# ^{B$p# _|B%p# `}B&p# a~B'p# bB(p# cB)p# dB*p# eB+p#gfB_-p#<gB.p#hB0p# iB1p# jB2p# kB3p# l-U1;p#p# F@p# l%ze.AUp#<.AUp#<BPp# ?B\p# @Bhp#  ABt p# !BB!p# "CB"p# #DB#p# $EB$p# %FB%p# &GB&p# 'HB'p# (IB(p# )JB)p# *KB*p# +LB+p# ,MB-p# -NB.p# .OB/p# /PB(0p# 0QB41p# 1RB@2p# 2SBL3p# 3TBX4p# 4U-U1;p#p# F@p# l%q.AUp#<_Bx p# ?`B p# @aB p# AbB p# BcBp# CdBp# DeBp# EfBp# FgBp# GhBp# HiBp# IjBp# JkBp# KlBp# LmB p# MnB,p# NoB8p# OpBDp# PqBPp# QrB\p# RsBhp# StBt p# TuB!p# UvB"p# VwB#p# WxB$p# XyB%p# YzB&p# Z{B'p# [|B(p#\~B*p# ]B+p# ^B-p# _B.p# `B/p# aB(0p# bB41p# cB@2p# dBL3p# eBX4p# f-U1;p#p# F@p# %.AUp#<