Rapport Interface Homme/Machine
Jeu de rôle
Licence d’informatique, troisième année

R.Sunier & D.Sevat & R.Lacroix

Table des matières

Chapitre 1  Introduction

Ce rapport contient les informations concernant le projet de jeu de rôle. Ce projet contient une partie Jeu contenant une partie aventure, ainsi qu’une partie combat. Et il contient également un éditeur de jeu, qui permet d’éditer les cartes du jeu.

Chapitre 2  Dossier d’Analyse

2.1  Description des classes & Diagrammes UML

Voir la partie de la documentation Html, donné en annexe. Chaque classe possède son propre diagramme UML avec les liens possibles entre chacune des classes. Seul petit problème, lorsqu’une classe possède en attribut une liste d’une classe, ce lien ne s’affiche pas ( par exemple, une case possède des liens vers CObjets, et vers CMonstres ).

2.2  Messages gérés & enchaînements des traitements

2.2.1  Dans la classe CProjetIHMDoc

2.2.2  Dans la classe CProjetIHMView

2.2.3  Classe CnewGame

2.3  Descriptions des ressources

2.3.1  Le menu principal

Sous menu Fichier


Figure 2.1: Sous menu Fichier

Sous menu Affichage


Figure 2.2: Sous menu Affichage

2.3.2  Boite de dialogue IDD_NEW_GAME


Figure 2.3: Boite de dialogue IDD_NEW_GAME

Trois Combo Box pour la taille, classe, sexe.
On ajoute à l’initialisation de chacune de ces combo des noms prédéfinis.
Pour la taille, il y a 8 tailles différentes : Colossal, Gigantesque, Très Grand, Grand, Moyen, Petit, Très petit, Minuscule.
Pour classe, il existe la classe guerrier, archer, et magicien. Pour chacune de ces classes, des bonus sont attribués qui seront ajoutés au caractéristique du joueur.
Pour le sexe, il y a : Femme, ou Homme.

Cinq Cstatic associé à des Cspin. Ils servent à la gestion des points de caractéristique que le joueur doit répartir parmi sa force, dextérité, constitution, intelligence, et sagesse.
Lorsque l’utilisateur augmente une de ces caractéristiques, alors le Cstatic des points à répartir descend d’un point. Au contraire, lorsqu’il descend l’une de ces caractéristiques, la case des points à répartir augmente d’un point.
Chaque caractéristique ne peut pas descendre en dessous de 7.
Lors de l’appel du Cbutton OK, on regarde si l’utilisateur à utiliser tous ces points de caractéristiques. Si ce n’est pas le cas, on affiche un message dans une boite de dialogue.

2.3.3  Boite de dialogue IDD_COMBAT


Figure 2.4: Boite de dialogue IDD_COMBAT

Les boutons Attaque Simple, et Attaque magique lancent les différentes fonctions d’attaques.
Le rich text edit permet de récupérer tous les messages d’informations du combat.
Lorsqu’on clique sur un bouton Radio, alors on mets à jour une variable qui indique le monstre que l’on veut taper lorsqu’on clique sur un bouton d’attaque.
Toutes les images ( image de fond, sont gérés à l’aide de la méthode Cpaint, qui redessine la fenêtre à chaque action du joueur.

2.3.4  Boite de dialogue IDD_DIALOG_INVENTAIRE


Figure 2.5: Boite de dialogue IDD_DIALOG_INVENTAIRE

Toute cette boite de dialogue est gérée via le OnPaint de classe. On ne fait qu’afficher des icônes et une image de fond pour la boite de dialogue.

2.3.5  Boite de dialogue IDD_INFO_OBJETS


Figure 2.6: Boite de dialogue IDD_INFO_OBJETS

Toutes les informations contenues dans cette fenêtre sont gérés par des Cstatic, englobé par des group box pour classer chaque type d’informations. Et on mets à jour, via un pointeur sur l’objet, chaque Cstatic nécessaire.

2.3.6  Boite de dialogue IDD_CARAC_PERSO


Figure 2.7: Boite de dialogue IDD_CARAC_PERSO

Comme pour la boite de dialogue concernant les informations d’un objet. On possède uniquement des Cstatic qu’on mets à jour en fonction des informations du joueur ( pointeur sur le joueur ).

2.3.7  Boite de dialogue IDD_DIALOG_MAP


Figure 2.8: Boite de dialogue IDD_DIALOG_MAP

Comme pour la boite de dialogue concernant l’inventaire. Toutes la mini carte est géré par le OnPaint de la classe, qui récupère un pointeur sur la carte.

Chapitre 3  Dossier de programmation

3.1  Classes standards et spécifiques

Voir la partie de la documentation Html, donné en annexe. Pour la spécification de toutes les classes.

3.1.1  Explication de l’inventaire ( classe CinventaireF )

3.2  Description des gestionnaires des messages

3.2.1  Dans la classe CProjetIHMDoc

Il y a OnAffichageCarte, OnAffichageInventaire, et OnAffichagePersonnage. Pour l’affichage de ces boites de dialogue, on appel simplement la fonction qui permet de montrer la boite ( c’est à dire ShowWindow(SW_SHOW) ) et on met le focus sur cette boite avec SetFocus. Car les différentes boites de dialogue sont créées lors de la création de l’application OnUpdateAffichageCarte, OnUpdateAffichageInventaire, et OnUpdateAffichagePersonnage.
Pour griser les menus, on se sert de la fonction Enable, et d’un booléen qui gère l’état du menu.

3.2.2  Dans la classe CProjetIHMView

FrameToView On récupère la touche appuyé qui est passé en paramètre ( qui est un WORD ). Et à l’aide d’une fonction de contrôle (switch), on lance l’action qui est en rapport.

3.2.3  OnButton... Avancer, Droite, Gauche & Reculer

On fait se déplacer le joueur en appelant des fonctions se trouvant le document. Puis au retour du déplacement, on test si la case ou il s’est déplacer contient des monstres, des objets, ou des clés. ( par l’appel des méthodes getCombat(), getClef(), et getObjets() ).
OnPaint permet de dessiner la vue 3D, pour se faire on récupère la position actuel du joueur, et voici ensuite l’algorithme utiliser (voir schéma Figure 3-1 pour mieux comprendre) :


Figure 3.1: Image pour pouvoir suivre ce qui va être fait.

OnTLeft lorsqu’on clique sur le bouton qui possède la flèche diagonal gauche, on exécute la fonction de faire tourner sur lui même le joueur.
OnTRight lorsqu’on clique sur le bouton qui possède la flèche diagonal droite, on exécute la fonction de faire tourner sur lui même le joueur.

3.2.4  Classe CnewGame

OnVScroll permet de gérer la répartition des points de caractéristiques.
On test le SpinControl qu’on appuie, puis en fonction du spin, on regarde si l’utilisateur a augmenté ou diminué la caractéristique.
Si l’utilisateur a augmenté la caractéristiques, alors on test s’il lui reste assez des points, si c’est le cas on enlève un point à répartir.
Si l’utilisateur a diminué les points de caractéristiques, on test qu’il ne diminue pas trop la caractéristiques ( minimum 7 ), et si tout est bon, on lui ajoute un point à répartir.

Chapitre 4  Sources & Binaires

Chapitre 5  Conclusion

Par manque de temps, il nous a été impossible de finir complètement le projet. Il y a donc quelques fonctionnalités manquantes, voir ne fonctionnant pas comme il faut. Ce projet a été très enrichissant du point de vue de la programmation en visual c++.


Ce document a été traduit de LATEX par HEVEA