Navigation:  Macro > Exemples >

EXEMPLE MACRO22

AiM Services
Previous pageReturn to chapter overviewNext page

Jeux des animaux

L'utilisateur de la macro pense à un animal et le système tente de le trouver en posant des questions. Si le système ne trouve pas l'animal l'utilisateur ajoute une question dans la base de données pour le trouver lors de la prochaine exécution.
 

Exemple

 MACRO "animals.mac"
 !
   COM @File,Rec_len,Msi$[120],File$[30]
 ! Initialisation
   GET SYSTEM "MACRO EXEC VOL";Msi$
   MASS STORAGE IS Msi$
   File$="ANIMAUX.txt"
   Rec_len=80
 ! Ouverture du fichier des animaux
   CALL Init_fichier
 ! Recherche de l'animal
   Num=1
   LOOP
     CALL Read(Num,Ques$,Rep1,Rep2)
     IF Rep1=0 THEN
       X$="C'est "&Ques$&" !"
     ELSE
       X$=Ques$&" ?"
     END IF
     X$=X$&"|OUI|NON"
     Rep$=""
 Entree: INPUT X$;Rep$
     CALL Select_rep(Rep$,Code)
     SELECT Code
 ! Réponse OUI
     CASE 1
       IF Rep1=0 THEN
         MESSAGE "J'AI TROUVE"
         Num=1
       ELSE
         Num=Rep1
       END IF
 ! Réponse NON
     CASE 2
       IF Rep1=0 THEN
         R2$=""
         INPUT "Quel est votre animal ?";R2$
         L=LEN(R2$)
         IF L THEN
           R1$=Ques$
           Ques$="Question pour différencier "&R2$&" et "&R1$
           Rep$=""
           INPUT Ques$;Rep$
           IF LEN(Rep$) THEN
             CALL Read_num(Nb_inp)
             CALL Write(Num,Rep$,Nb_inp+1,Nb_inp+2)
             CALL Write(Nb_inp+1,R2$,0,0)
             CALL Write(Nb_inp+2,R1$,0,0)
             CALL Write_num(Nb_inp+2)
           END IF
         END IF
         Num=1
       ELSE
         Num=Rep2
       END IF
 ! Réponse LISTE
     CASE 3
       CALL Liste
       GOTO Entree
 ! Réponse FIN
     CASE 4
       STOP
 ! Réponse fausse
     CASE ELSE
       ERROR "Répondre par OUI ou NON"
       GOTO Entree
     END SELECT
   END LOOP
   END
 ! Sélection d'une réponse
   SUB Select_rep(Rep$,Code)
 Reponse: DATA "OUI","NON","LISTE","FIN"
     RESTORE Reponse
     Rep$=UPC$(TRIM$(Rep$))
     FOR Code=1 TO 4
       READ A$
       IF A$=Rep$ THEN SUBEXIT
     NEXT Code
     Code=0
   SUBEND
 ! Ouverture du fichier des animaux
   SUB Init_fichier
     OPEN ASCII @File TO File$;Err
     IF Err THEN CALL Nouv_fichier
   SUBEND
 ! Création d'un nouveau fichier animaux
   SUB Nouv_fichier
     CREATE File$;Err
     IF Err THEN
       ERROR "IMPOSSIBLE DE CREER LE FICHIER ",File$
       STOP
     END IF
     OPEN ASCII @File TO File$;Err
     IF Err THEN
       ERROR "IMPOSSIBLE D'OUVRIRE LE FICHIER ",File$
       STOP
     END IF
     CALL Write_num(0)
     CALL Write(1,"Est-ce un mammifère",2,3)
     CALL Write(2,"un lion",0,0)
     CALL Write(3,"un poisson",0,0)
   SUBEND
 ! Lecture d'une question
   SUB Read(Num,Ques$,Rep1,Rep2)
     SEEK @File,Num*Rec_len
     ENTER @File;Ques$,Rep1,Rep2
   SUBEND
 ! Ecriture d'une question
   SUB Write(Num,Ques$,Rep1,Rep2)
     SEEK @File,Num*Rec_len
     OUTPUT @File,Ques$
     OUTPUT @File,Rep1
     OUTPUT @File,Rep2
     CALL Read_num(Nb_inp)
     IF Num>Nb_inp THEN CALL Write_num(Num)
   SUBEND
 ! Lecture du nombre de question
   SUB Read_num(Num)
     SEEK @File,0
     ENTER @File;Num
   SUBEND
 ! Ecriture du nombre de question
   SUB Write_num(Num)
     SEEK @File,0
     OUTPUT @File,Num
   SUBEND
 ! Liste des questions et réponses du fichier animaux
   SUB Liste
     ALPHA ON
     ALPHA CLEAR
     CALL Read_num(Nb_inp)
     FOR I=1 TO Nb_inp
       CALL Read(I,Ques$,Rep1,Rep2)
       PRINT I,Ques$,Rep1,Rep2
     NEXT I
     ALPHA VIEW
   SUBEND
   END MACRO