;TROUVER LE NB DE JOUEUR ENTRANT A CHAQUE TOUR; ;**********************************************************************; REGLE CHANGER_TOUR_COURANT ;TROUVER A QUEL TOUR VA ETRE PLACER LE JOUEUR AUX ETAPES SUIVANTES; SI ETAPE_PLACEMENT_JOUEUR ' =0 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (TOUR_X) NB_JOUEUR_ENTRANT 0 ALORS TOUR_COURANT ' <-- (TOUR_COURANT ' - 1) ;**********************************************************************; REGLE MEME_TOUR_COURANT DES_QUE ETAPE_PLACEMENT_JOUEUR ' =0 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (NO_X) > 1 (TOUR_X) NB_JOUEUR_ENTRANT (NB_X) (NB_X) > 0 ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 1 ;**********************************************************************; REGLE FIN_PLACEMENT_JOUEUR_PAR_TOUR ;DETERMINER QUAND ON A TERMINE LE PLACEMENTE DES JOUEURS PAR TOUR ET; ;DONC ON PEUT CREER LES MATCHS; DES_QUE ETAPE_PLACEMENT_JOUEUR ' =0 TOUR_COURANT ' =1 ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 3 ;***********************************************************; REGLE CLASSEMENT_MEILLEUR_PAS_PLACE_DANS_TOUR_BOUCLAGE ;TROUVER LE CLASSEMENT DU MEILLEUR JOUEUR PAS PLACE DANS LES DERNIERS TOURS; QUAND ETAPE_PLACEMENT_JOUEUR ' =1 (JOUEUR_X) ENTRE TOUR_1 (JOUEUR_X) EST_CLASSE (CLASSEMENT_X) (CLASSEMENT_X) VAUT (X) (X) < CLASSEMENT_MEILLEUR ' ALORS CLASSEMENT_MEILLEUR ' <-- (X) ETAPE_PLACEMENT_JOUEUR ' <-- 1 REGLE CLASSEMENT_MEILLEUR_PAS_PLACE_DANS_TOUR_SORTIE SI (JOUEUR_X) ENTRE TOUR_1 ETAPE_PLACEMENT_JOUEUR ' =1 ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 2 ;**********************************************************; REGLE MEILLEUR_JOUEUR_ENTRE_TOUR_N ;TROUVER LE MEILLEUR DES JOUEURS PAS PLACE DANS LES DERNIERS TOURS; ;AFFECTATION JOUEUR_ X ENTRE AU TOUR_X; SI ETAPE_PLACEMENT_JOUEUR ' =2 (JOUEUR_X) ENTRE TOUR_1 CLASSEMENT_MEILLEUR '=(CLASS_X) (CLASSEMENT_X) VAUT (CLASS_X) (JOUEUR_X) EST_CLASSE (CLASSEMENT_X) TOUR_COURANT ' =(X) (TOUR_X) NUMERO (X) ALORS ENTRE (JOUEUR_X) <-- (TOUR_X) NB_JOUEUR_ENTRANT (TOUR_X) <-- ((NB_JOUEUR_ENTRANT (TOUR_X)) - 1 ) ETAPE_PLACEMENT_JOUEUR ' <-- 0 CLASSEMENT_MEILLEUR ' <-- 19 ECRIRE (ENVOI,(JOUEUR_X) " ENTRE " (TOUR_X)) ;***************************************************************************; ;CALCUL DES MATCHS ; ;***************************************************************************; REGLE MATCH_SUIVANT_TOUR_SUIVANT ;SI TOUS LES MATCH DU TOUR COURANT SONT PLACES, ON AVENCE D'UN TOUR; DES_QUE ETAPE_PLACEMENT_JOUEUR' =3 TOUR_COURANT ' =(NO_X) (TOUR_X) NUMERO (NO_X) (TOUR_X) NB_MATCH 0 (NO_X) < NB_TOUR' ALORS TOUR_COURANT ' <-- ((NO_X) + 1) ETAPE_PLACEMENT_JOUEUR ' <-- 4 REGLE MATCH_SUIVANT_MEME_TOUR ;SINON, ON CONTINUE; DES_QUE ETAPE_PLACEMENT_JOUEUR' =3 TOUR_COURANT ' =(NO_X) (TOUR_X) NUMERO (NO_X) (TOUR_X) NB_MATCH (NB_X) (NB_X) > 0 ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 4 ;***************************************************************************; REGLE CLASSEMENT_MEILLEUR_PAS_PLACE_DANS_MATCH_BOUCLAGE ;TROUVER LE CLASSEMENT DU MEILLEUR JOUEUR ; ;DU TOUR COURANT ET QUI NE JOUE PAS; QUAND ETAPE_PLACEMENT_JOUEUR ' = 4 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) ENTRE (TOUR_X) (JOUEUR_X) EST_CLASSE (CLASSEMENT_X) (CLASSEMENT_X) VAUT (X) (X) < CLASSEMENT_MEILLEUR ' ALORS CLASSEMENT_MEILLEUR ' <-- (X) ETAPE_PLACEMENT_JOUEUR ' <-- 4 REGLE CLASSEMENT_MEILLEUR_PAS_PLACE_DANS_MATCH_SORTIE SI ETAPE_PLACEMENT_JOUEUR ' = 4 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) ENTRE (TOUR_X) ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 5 ;***************************************************************************; REGLE CLASSEMENT_MOINS_BON_PAS_PLACE_DANS_MATCH_BOUCLAGE ;TROUVER LE CLASSEMENT DU MOINS BON JOUEUR ; ;DU TOUR COURANT ET QUI NE JOUE PAS; QUAND ETAPE_PLACEMENT_JOUEUR ' = 5 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) ENTRE (TOUR_X) (JOUEUR_X) EST_CLASSE (CLASSEMENT_X) (CLASSEMENT_X) VAUT (X) (X) > CLASSEMENT_MOINS_BON ' ALORS CLASSEMENT_MOINS_BON ' <-- (X) REGLE CLASSEMENT_MOINS_BON_PAS_PLACE_DANS_MATCH_SORTIE SI ETAPE_PLACEMENT_JOUEUR ' = 5 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) ENTRE (TOUR_X) ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 6 ;***************************************************************************; REGLE CREATION_MATCH ;CREATION DES MATCHS ENTRE LES MEILLEURS ; ;JOUEUR DU TOUR RESTANT ET LES MOINS BONS; SI ETAPE_PLACEMENT_JOUEUR ' = 6 TOUR_COURANT ' = (NO_X) (TOUR_X) NUMERO (NO_X) (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_Y) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) ENTRE (TOUR_X) (JOUEUR_Y) ENTRE (TOUR_X) (JOUEUR_X) <> (JOUEUR_Y) (JOUEUR_X) EST_CLASSE (CLASSEMENT_X) (CLASSEMENT_X) VAUT (CLASS_X) CLASSEMENT_MEILLEUR ' = (CLASS_X) (JOUEUR_Y) EST_CLASSE (CLASSEMENT_Y) (CLASSEMENT_Y) VAUT (CLASS_Y) CLASSEMENT_MOINS_BON ' = (CLASS_Y) ALORS JOUE (JOUEUR_X) <-- (JOUEUR_Y) JOUE (JOUEUR_Y) <-- (JOUEUR_X) NB_MATCH (TOUR_X) <-- ((NB_MATCH (TOUR_X)) - 1) ECRIRE (ENVOI,(JOUEUR_X) " JOUE " (JOUEUR_Y)) ;NB_JOUEUR_ENTRANT (TOUR_X) <-- ((NB_JOUEUR_ENTRANT (TOUR_X)) - 1 ); ;***************************************************************************; REGLE MATCH_SUIVANT SI ETAPE_PLACEMENT_JOUEUR ' = 6 (JOUEUR_X) JOUE PAS_D_ADVERSAIRE (JOUEUR_Y) JOUE PAS_D_ADVERSAIRE (JOUEUR_X) <> (JOUEUR_Y) ALORS ETAPE_PLACEMENT_JOUEUR ' <-- 3 CLASSEMENT_MOINS_BON ' <-- 0 CLASSEMENT_MEILLEUR ' <-- 19