imageentete

Code

Nos travaux

Gestion des structures

Ici nous allons vous parler de nos structures, en effet on en a utiliser 3 pour faciliter le développement de notre jeu: Une pour les obstacles, une pour les monstres et une pour les niveaux.

La structure Monstre

C'est la structure qui regroupe les entités qu'un monstre possède dans notre jeu. On se sert de cette structure à différents moments comme le remplissage de notre grille de jeu afin d'initialiser les monstres selon leur état pour pouvoir ensuite les afficher et pouvoir commencer à jouer. Ces entités sont:

--> Ici dans la Doxygen

--> Retour au Menu

La structure Obstacle

Cette structure reprend exactement le même schéma de fonctionnement que la structure monstre et est apellé également au même moment.

--> Ici dans la Doxygen

--> Retour au Menu

La structure niveau

C'est la structure qui regroupe les entités qu'un niveau possède. On se sert de cette structure quand on veut initialiser notre grille, mais également pour gérer tous nos déplacements, en effet on déplace le contenu d'une case dans une autre. Ces entités sont:

--> Ici dans la Doxygen

--> Retour au Menu

Gestion des constantes

Dans notre jeu, nous avons utilisé beaucoup de constantes afin de clarifier notre code et de ne pas nous emmeler dans des chiffres ayant tous des significations. Nous avons donc:

Ces constantes nous ont beaucoup aidé pour pouvoir simplifier notre façon de pensée au cours de l'élaboration de nos algorithmes

--> Ici dans la Doxygen

--> Retour au Menu

Un algorithme : la fonction déplacement

Cette fonction prend plusieurs paramètres à savoir:

  1. Tout d'abord on crée 4 booléens que l'on initialise à faux qui vont nous permettre de gérer les déplacements, en effet il y en à un pour chauqe déplacement (haut, bas, gauche, droite). On les initialise par la suite en regardant quel déplacement nous avons prit en paramètre afin d'initialiser à vrai celui auquel il correspond.
  2. Ensuite, on check si on est sur une case valide, c'est à dire si la case sur laquelle on est est bien un monstre vivant (le seul personnage du tableau pouvant bouger)ou une flèche avec un monstre dessus.
  3. Puis, on regarde la case suivante (celle qui est à côté de notre monstre dans le sens de notre déplacement) dont on mettra la valeur dans la variable nextCase.Et on initialisera un compteur de coup à 0 qui nous servira plustard pour briser la glace.
  4. Première possibilité: Si ce que nous a retourner le scan est une case vide, on lance la procédure de déplacement selon plusieurs paramètres. En effet si la case avec laquelle on a appelé la fonction de déplacements est une flèche monstre, on remet la flèche correspondante au déplacement que l'on a à effectué. C'est à dire que si l'on a appelé la fonction déplacement droite on remet une flèche droite à la place de la flèche monstre. Sinon si c'est un vivant classique, on vide sa case. Mais il nous faut déplacer notre vivant, en effet là on l'a effacé, donc on met un vivant dans le sens du déplacement que l'on a voulu grâce à nos deltas. On met à jour notre niveau grâce à la fonction update qui met à jour notre tableau de jeu, on l'affiche, on met à jour la case avec laquelle on joue toujours selon le déplacement que l'on à voulu effectué, et on scan la prochaine case pour pouvoir continuer la procédure de déplacement.
  5. Deuxième possibilité: Si c'est une flèche que le scan à renvoyé, on ne vide pas forcément la case, mais on remet la flèche ou un cloneur qui était là dès le début du niveau auquel on accède depuis le tableau de notre niveau que l'on ne touche jamais et qui sait où sont les éléments au départ et ce qu'ils sont. On passe notre nouvelle case à l'état flèche monstre, on met à jour notre niveau et on l'affiche.
  6. Puis on appelle la fonction de déplacement correspondant au sens de notre flèche avec la nouvelle case qui est donc une flèche monstre
  7. Troisième possibilité: Si c'est de la glace que le scan à renvoyé et que le nombre de coups effectués était supérieur à 0 ou que la case sur laquelle on est, est une flèche monstre (une flèche est plus forte que de la glace). Alors on appelle la fonction de gestion de la glace qui la cassera.
  8. Quatrième possibilité: Si c'est du pesticide que le scan a renvoyé, alors on appelle la fonction de gestion pesticide qui tuera notre case courante.
  9. Cinquième possibilité: Si c'est un cloneuf que le scan a renvoyé, alors on appelle la fonction de gestion de cloneur.
  10. Sixième possibilité: Si c'est le bord du tableau que le scan a renvoyé, on recommence le niveau et on affiche l'écran sinon on appelera la fonction de réveille qui réveillera tous les monstres endormient autour de notre vivant

--> Ici dans la Doxygen

--> Retour au Menu

Gestion de projets

Partage des fichiers

Pour gérer notre projet, nous avons au début tenter d'utiliser Mercurial via Bitbucket, nous avons alors créer des dépots et tout ce qui va avec et nous nous en sommes servis avec le logiciel SourceTree qui permet de gérer graphiquement les pushs, pulls, commits etc... Mais rapidement quelques problèmes sont apparus, en effet lorsque l'on prenait le fichier envoyé par l'autre utilisateur nous pouvions l'utiliser à l'IUT mais chez Chloé, le fichier n'était accessible qu'en lecteur seule malgré l'application de tous les droits sur les fichiers depuis le terminal. Nous avons alors arrêter d'utiliser ce procédé par manque de savoir faire surement dû à notre déficit de connaissances sur ce sujet, ce qui nous prenait des temps inutilement. Nous avons alors échanger nos fichiers par email ce qui nous permettait un échange rapide et une communication entre nous si l'un des deux avait fait des modifications.

--> Retour au Menu

Planning

Nous n'avons pas fait de planning réel pour le développement de ce projet. Mais on se fixait plutôt des objectifs à faire en début de chaque semaine. Souvent on arrivait à les finir dans la semaine grâce au tutorat ou au séance de soutien qui était là pour nous aider à résoudre nos problèmes. Lors de certaines semaines, il nous ait arrivé de ne pas réussir à finir nos objectifs même grâce à l'aide du tutorat ou au soutien, dans ce cas là alors on prévoyez plus de temps pour le développement du code afin de rattrapper le retard.

--> Retour au Menu

Répartitions des tâches

Nous n'avons pas réellement fait de répartitions des tâches. Souvent l'on travaillait ensemble le code ce qui nous permettait d'aller plus vite, en effet lorsque l'un n'y arrivait pas ou bloquait, souvent l'autre était là et permettait de le débloquer par une ou plusieurs idées. Et lorsque l'on travaillait chez nous, nous avons pu communiquer par la messagerie instantannée de gmail qui nous a été très utile ainsi que par Google Hangouts qui est très pratique grâce à sa fonction de partage d'écran.

--> Retour au Menu

Documentation complète du code

Nous avons réalisé une documentation Doxygen afin de commenter intégralement notre code de manière propre, nous vous donnons donc le lien vers celle-ci

Doxygen

--> Retour au Menu