TP0--Le POQédexMD

Nous allons entreprendre un premier travail: la conception d'un prototype de POQédexMD, équipement essentiel s'il en est un.

Votre tâche

En utilisant un module fourni par les professeurs pour simuler l'existence d'un--très petit--serveur de bases de données, et à l'aide d'un certain nombre de petites images, vous devrez produire un petit POQédexMD répondant à l'ensemble des critères ci-après.

Qu'est-ce qu'un POQédexMD?

Comme tout bon dresseur de POQémonMD le sait, capturer des POQémonMD est une tâche en soit très délicate. Et cette tâche se complexifie davantage du fait qu'il existe une impressionnante variété de PM en liberté.

Tout dresseur de POQémonMD qui se respecte aura besoin d'un POQédexMD. Le POQédexMD, lorsqu'il se trouve à proximité d'un POQémonMD, réagira en émettant un bref effet visuel ou sonore--rien pour rendre les voisin(e)s fous/ folles, je vous en prie; juste un léger signal--puis accédera à une base de données, de laquelle il tirera des données propres au POQémonMD rencontré.

Le POQédexMD: considérations techniques

Le POQédexMD est un outil qui se représente bien par une interface personne/ machine. Son rôle est:

  • à intervalles réguliers, de sonder les environs pour savoir s'il s'y trouve un POQémonMD;
  • si un POQémonMD quelconque est trouvé, de demander à sa base de données les données lui correspondant;
  • lorsque les données en question seront reçues, les afficher.
  • Données à afficher

    Pour un POQémonMD donné, le POQédexMD devra afficher:

  • son nom;
  • une image lui correspondant;
  • sa description sous forme de texte;
  • son type (souris, lézard, dragon, etc.);
  • son élément (eau, feu, air, terre, électrique, magnétique, combat, surnaturel, etc.);
  • ses mensurations, soit sa taille en mètres et son poids en kilogrammes.
  • Note: gardez en tête qu'il est possible--pour ne pas dire probable--que votre POQédexMD évolue en cours de semestre. Écrivez donc du code de qualité dès le début; prenez soin de votre oeuvre; et surtout, faites régulièrement des copies de sauvegarde!

    Mécanique d'accès au «serveur» de base de données

    Vous devrez vous créer un projet avec VB. Vos professeurs vous donneront le module «POQEDEXDB.BAS», que vous devrez inclure dans ce projet. Vous n'êtes en aucun cas autorisé(e) à altérer ce fichier.

    Vos professeurs vous donneront aussi quelques fichiers «.BMP» et un fichier «.TXT». Ces divers fichiers devront être installés dans le répertoire de travail de votre application.

    Document de support pour le TP0

    Pour communiquer avec la base de données, vous devrez utiliser les procédures suivantes:

  • «Connecter», qui ne prend pas de paramètres et établit une connexion avec le serveur de bases de données simulé;
  • «Envoyer», qui prend en paramètre une chaîne de caractères de la forme "R;ID;D;;", où "R" est un requête (voir plus bas); "ID" est un numéro d'identification unique pour la requête (voir plus bas); et "D" représente des informations additionnelles, si nécessaire (optionnel);
  • «Recevoir», qui prend en paramètre une variable de type «String». Cette variable sera remplie par une chaîne de caractères de la forme suivante "REP;ID;D;;", où: "REP" est la chaîne de caractères "REP"; "ID" est le numéro d'identification unique de la requête pour laquelle on reçoit une réponse; et "D" représente des informations additionnelles.
  • Note: si aucune requête ne peut être répondue, «Recevoir» retournera une chaîne de caractères vide.

    Requêtes à implanter

    Vous devrez implanter le code propre au traitement de deux (2) requêtes pour faire fonctionner votre POQédexMD.

    "RQPOQINDEX"

    La requête "RQPOQINDEX" sera envoyée pour savoir s'il y a un POQémonMD non loin. La forme sera:

    
    "RQPOQINDEX;ID;;"

    où, bien sûr, "ID" est un numéro de requête unique.

    La réponse à une requête "RQPOQINDEX" obéira au format suivant:

    
    "REP;ID;Index;;"

    où, bien sûr, "ID" sera le numéro de la requête pour laquelle vous recevez une réponse, et "Index" sera l'index du POQémonMD détecté à proximité, "0" si aucun n'a été détecté par votre POQédexMD, ou encore "-1" s'il y a eu une forme quelconque d'erreur (par exemple, si vous avez émis une requête "RQPOQINDEX" avant de vous être connecté à l'aide de la procédure «Connecter»).

    "RQPOQINFO"

    La requête "RQPOQINFO" sera envoyée pour savoir les données propres à un POQémonMD. La forme sera:

    
    "RQPOQINFO;ID;Index;;"

    "ID" est un numéro de requête unique, et "Index" sera l'index du POQémonMD duquel vous voulez en savoir plus.

    La réponse à une requête "RQPOQINFO" obéira au format suivant:

    
    "REP;ID;Info;;"

    où, bien sûr, "ID" sera le numéro de la requête pour laquelle vous recevez une réponse, et "Info" sera une chaîne de caractères--qui ne sera vide que si vous avez émis une requête "RQPOQINFO" pour un POQémonMD invalide--décrivant un POQémonMD, dont le format sera:

    
    "nom;fich;descr;type;élément;taille;poids"

    dans laquelle «nom» est le nom du POQémonMD, «descr» sa description, «type» son type, etc. Notez que «fich» sera le nom du fichier contenant une image appropriée à ce POQémonMD, pour fins d'affichage (l'une des images fournies par vos professeurs).

    Une requête supplémentaire, pour vous aider

    Une 3ième requête sera disponible pour vous dépanner: la requête "RQSTATUS", qui retournera l'état de votre «serveur».

    Nous vous invitons à émettre une requête "RQSTATUS" si vous rencontrez une erreur mais n'êtes pas certain(e) de la raison--donc, pour fins de déverminage.

    Format
    Réponse

    "RQSTATUS;ID;;"

    "REP;ID;Info;;"

    "ID" est un numéro de requête unique.

    où, bien sûr, "ID" sera le numéro de la requête pour laquelle vous recevez une réponse, et "Info" sera une chaîne de caractères descriptive de l'état du serveur.

    Exemples de requêtes et de réponses

    Supposons que vous êtes connecté(e) au serveur simulé de base de données. Supposons aussi que vous voulez savoir s'il y a un POQémonMD près de vous. C'est votre première requête. L'appel généré devrait être

    
    Envoyer "RQPOQINDEX;1;;"

    Éventuellement, vous voudrez savoir la réponse à cette requête (qui portait le ID numéro 1). Vous aurez besoin d'une variable «Réponse» de type «String», à l'aide de laquelle vous effectuerez

    
    Dim Réponse As String
    ' d'autre code, si nécessaire
    Recevoir Réponse
    If Réponse <> "" Then
      ' Traiter la Réponse
    End If

    La variable «Réponse» pourrait par exemple contenir "REP;1;25;;", ce qui signifierait «Réponse à la requête 1», qui était une requête «RQPOQINDEX», avec comme données "25", donc le POQémonMD d'index 25 a été trouvé.

    Supposons maintenant que vous voulez en savoir plus sur ce POQémonMD. C'est votre deuxième requête. L'appel généré devrait être

    
    Envoyer "RQPOQINFO;2;25;;"

    ce qui signifie «Je veux en savoir plus sur le POQémonMD à l'index 25».

    Une réponse correcte à cette requête serait

    
    "REP;2;Pikatchou;Pikatchou.bmp;Joli POQ souris;Souris;Électrique;0.4;6;;"

    ce qui signifierait «Réponse à la requête 2», avec comme données la description signifiant «Nom: Pikatchou, image: Pikatchou.bmp; Description: Joli POQ Souris; Type: Souris; Élément: Électrique; Taille: 0.4 mètres; Poids: 6 Kg».

    Quelques questions à vous poser

    Dans le but d'orienter votre réflexion, nous vous invitons à réfléchir sur les quelques points suivants:

  • quelle sera la taille de votre interface personne/ machine? Il faudrait penser votre POQédexMD au sens où ce sera un outil pour un dresseur de POQémonMD, pas l'application principale
  • comment seront disposés les différents contrôles sur votre POQédexMD? Y a-t-il une raison pour ce choix ergonomique--sinon, ayez très peur...
  • quand ferez-vous disparaître ou rafraîchir le contenu affiché du POQédexMD?
  • votre POQédexMD est-il robuste? (par exemple: vous êtes vous assuré(e) qu'il ne plante pas lors de la réception d'une réponse vide à une requête donnée?)
  • Évaluation

    Entreront dans les préoccupations d'évaluation les critères suivants:

  • implantation correcte de l'émission des requêtes;
  • implantation correcte de la réception et du traitement des réponses;
  • ergonomie propre à l'application (disposition des contrôles, choix des contrôles, etc.);
  • algorithmique (l'application réagit correctement selon les circonstances);
  • programmatique (indentation, commentaires, caractère significatif de la nomenclature choisie pour les sous-programmes, les variables et les constantes, etc.)
  • robustesse de l'application;
  • respect général des consignes.
  • Résumé des formats de requêtes et de réponses

    Ceci se veut un bref résumé des requêtes et réponses avec lesquelles vous devrez opérer dans le cadre de ce travail:

    Format
    Réponse

    "RQPOQINDEX;ID;;"

    "REP;ID;Index;;"

    "RQPOQINFO;ID;Index;;"

    "REP;ID;Info;;"

    "RQSTATUS;ID;;"

    "REP;ID;Info;;"

    Note: format de la chaîne "Info" (en réponse à une requête "RQPOQINFO"): "nom;fich;descr;type;élément;taille;poids".

    À remettre le:


    Amusez vous bien!