Skip to content

🎒🐭 Jeu roguelike ! Partez à l'aventure avec votre sac à dos pour parcourir le donjon en abattant les monstres avec vos différents trésors !

Notifications You must be signed in to change notification settings

InkyYuu/Backpack-Hero

Repository files navigation

Jeu Backpack Hero

Règles du jeu

Pour lancer le jeu, il suffit de lancer GameController.java depuis Eclipse. Une fois le jeu lancé, les règles sont reprises du jeu originel : Vous jouez une souris qui s'aventure dans un donjon avec son fameux sac à dos et qui souhaite sortir, pour cela, il suffit de monter les étages en passant de pièce en pièce en affrontant les différents ennemis qui se trouveront sur votre chemin avec les différentes armes que vous stocker dans votre sac à dos !

Bon jeu !

Les implémentations

Carte du niveau
  • Le joueur peut se déplacer au sein de l'étage du donjon sur lequel il se trouve actuellement.
  • Chaque étage contient des pièces vides et des événements (ennemis, coffres, marchand, guérisseur).
  • Il y a toujours une porte de sortie sur l'étage.
  • Les étages font 5 x 11 de cases.
  • Toutes les salles sont reliées entre elles.
  • Les étages et les événements sont générés aléatoirement.
  • On peut voir sur la carte les icônes des événements.
  • Certaines salles bloque le chemin, ce qui empêche au héro de traverser les étages sans obstacles
Combat
  • Le combat est en tour par tour le héro puis les ennemis.
  • Le héro peut utiliser les objets de son inventaire pour effectuer l'action de l'objet (attaque, défense, effets, ...).
  • Le héro peut utiliser "scratch" pour attaquer les ennemis sans objet nécessaire.
  • Les objets coûtent soit de l'énergie, de la mana ou de l'or.
  • Si tous les ennemis sont morts, alors le combat se fini.
  • Après le combat, le héro reçoit des objets, de l’expérience et de l'or.
Bestiaire
  • Il y a 6 types d'ennemis : Petits rats loups, rats-loups, petites abeilles, reine abeille, ombre vivante et grenouille magicienne.
  • Les ennemis annoncent ce qu'ils feront au prochain tour, de manière aléatoire.
  • Les ennemis peuvent attaquer, se protéger ou faire leurs autres actions.
  • Les ennemis peuvent subir des effets de combat.
Interface
  • Jeu entièrement jouable sans regarder la console d'Eclispe.
  • L'affichage avec Zen5 est interactif.
  • Modèle MVC respecté (GameModel, SimpleGameView, GameController).
  • Tous les effets sont affichés durant le combat, comme les points d'énergies, de protection ou les points de vie.
Hero
  • Le héro est affiché, possède 40 points de vie et 3 points d'énergie par tour.
  • Le joueur peut voir une carte de l'étage ou son sac.
  • Le héro peut subir des effets de combat.
Sac à Dos
  • Lorsqu'on gagne des niveaux d'expériences, on peut ajouter des cases dans notre sac à dos.
  • On plus de 20 objets, dont des armes de mêlées, armes à distance, armures, boucliers, objets magiques, manastones et de l'or.
  • Les objets interagissent.
  • On peut positionner chaque objet et leur faire effectuer une rotation de 90°.
  • On a implémenté des malédictions, qui sont infligées par des ennemis. Soit on refuse et on prend des dégâts, soit on accepte et on subit la malédiction qui ne pourra plus être retournée ni se débarrassé de la malédiction soit en allant au guérisseur ou en la détruisant durant un tour de combat.
Score
  • Le score est basé sur notre recette de score (basé sur le prix des équipements de l'inventaire, du nombre d'ennemis tués, du nombre d'étages parcourus, du nombres de niveaux d'expériences faits et du nombre de points de vie max).
  • Le jeu se termine à la fin du 3 ème étage. Si on arrive à la fin, la partie est considérée comme gagnée et cela impacte le score positivement.
  • Le score est écrit dans un fichier texte pour sauvegarder le score de la partie.

L'organisation du code (UML)

Les packages sont en minuscules tandis que les class / interface / enumerate commencent par une majuscule.   Schéma de l'organisation des classes et des packages

Création d'une classe pour chaque type item qui se distingue des autres : On a trouvé plus simple de faire une classe pour chaque type item vu qu'il se distingue notamment au niveau des actions, des cractéristiques et pour pouvoir utiliser le polymorphisme. (Vu qu'ils implémentent tous l'interface Items)

Les choix techniques

Choix Pourquoi ?
Logiciel Eclipse Fortement recommendé pour le projet
JavaSE-17 Version récente et recommendé par défaut par Eclipse
zen5 Obligatoire dans le cadre de ce projet

Les choix algorithmiques

Choix Pourquoi ?
Format MVC Vu en cours et imposé pour ce projet
Très peu d'utilisation d'instanceOf A part dans certains cas (2 ou 3) on utilise majoritairement le Polymorphisme
Découpage du code en un maximum de fonction Obligatoire pour respecter au mieux la consigne des fonctions de moins de 20 lignes et simplifie la lecture du code
Aucune classe abstraite Aucune utilité trouvée pour ce projet
Utilisation de la récursivité Utilisation de la récursivité pour les fonctions de recheche isValidPath et findMana

Les problèmes rencontrés

Classés par ordre décroissant en terme de difficulté

  • Organisation en format MVC :

    Nous avons compris le modèle MVC qu'à partir de la fin du rendu 1, ce qui nous a obligé à tout recommencer.

  • Gestion du temps :

    En vue de la charge de travail notamment avec les autres projets, ce projet-ci a tourné au ralentit pendant les deux premiers rendus. On a donc décidé à partir du rendu 3 de crée un Trello pour organisé au mieux le travail et la répartition des tâches.

    • Trello

    Schéma de l'organisation des classes et des packages

    • Rendu 1

    Schéma de l'organisation des classes et des packages

    • Rendu 3

    Schéma de l'organisation des classes et des packages  

  • Difficulté avec la création de la map aléatoire (Helena) :

    La difficulté a été de crée une map aléatoire fonctionnelle qui ne fait pas buguer le code.

  • Difficulté avec les intéractions des items (Kellian) :

    La difficulté a été d'enregistrer les interactions pour chaque item et de les faire fonctionner en fonction de si c'est Passif, Each turn ou On use.

 

Auteur : CHEVALIER Hélèna - BREDEAU Kellian

About

🎒🐭 Jeu roguelike ! Partez à l'aventure avec votre sac à dos pour parcourir le donjon en abattant les monstres avec vos différents trésors !

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages