diff --git a/README.md b/README.md index af22fda..0f80228 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,222 @@ -# Nidrobb -C++ 11, SDL 2, Boost.test \ No newline at end of file +![](media/logo.png){width="6.270833333333333in" +height="1.2083333333333333in"} + +**Compte-Rendu Projet C++** + +Harlé Antoine - Hanna Élias + +**Sommaire** + +**[Getting started](#getting-started) 2** + +**[How to play](#how-to-play) 2** + +**[Description du projet](#description-du-projet) 3** + +**[Organisation](#organisation) 4** + +**Getting started** +=================== + +***Prérequis :*** C++ 11 , SDL2, Boost.test + +***Lancement de Nidrobb :*** + +- Lancer la commande *make* à la racine du fichier *src* pour compiler + > les fichiers sources. + +- Lancer la commande *./Nidrobb*. + +***Lancement des tests unitaires :*** + +- Choix du test de classe à lancer : dans le fichier *makefile* à la + > racine du fichier *src*, choisir [un]{.ul} test à réaliser parmis + > les tests disponible en commentaire (\#Unitests/TestDispo.cpp) en + > le plaçant non commenté devant *TESTSRC =* . + +![](media/unitest.png){width="7.192708880139983in" +height="0.6940332458442695in"} + +- Lancer la commande *make Unitest* à la racine du fichier *src* afin + > de compiler et lancer le test. + +**How to play** +=============== + +**But du jeu :** + +(*But initial*) Tuer le joueur adverse et progresser dans la zone du +joueur adverse. + +(*But actuel*) Toucher le joueur adverse en premier. + +**Mécanique de jeu :**![](media/img1.png){width="0.768591426071741in" +height="0.6979166666666666in"} + +- *One Punch Man* : Un coup suffit à mettre au tapis ton adversaire ! + +```{=html} + +``` +- *Du fun en illimité !* : Respawn des joueurs tués instantané. + +![](media/img2.png){width="1.3125in" height="0.8940212160979878in"} + +- *Combat aériens* : Possibilité de se battre dans les airs ! Après + > avoir pris un peu de hauteur, court et bat toi dans les air tel + > Son Goku©️ ! + +![](media/img3.png){width="1.5625in" height="0.90625in"} + +- *Parade* : Possibilité de contrer une attaque adverse avec une + > attaque au bon moment ! + +![](media/img4.png){width="1.3125in" height="1.1875in"} + +- *Esquive* : Possibilité d\'esquiver une attaque en s'accroupissant + > au bon moment ! + +**Commandes :**![](media/img5.png){width="3.4691797900262467in" +height="2.369792213473316in"} + +- **Déplacement :** + + - J1 : Q / D + + - J2 : ← / → + +- **Accroupis :** + + - J1 : S + + - J2 : ↓ + +- **Sauts :** + + - J1 : Barre Espace + + - J2 : Enter (Pavé numérique) + +- **Attaque :** + + - J1 : G + + - J2 : 0 (Pavé Numérique) + +**Description du projet** +========================= + +Le jeu est basée sur les animations et a pour objectif de faciliter +l'ajout/amélioration de contenu. + +**Réalisations :** + +- Affichage + +- Gestion des entrées utilisateurs flexible : *InputMap, Command + > Pattern* + +- Mouvements simples + +- Animations flexible : Modification simple des animations (Sprite, + > Hitbox Passive/Active) dans l'*AnimationBuilder*. + +- Monde flexible : Modification simple des environnements (fond, + > plateforme, obstacles) dans le *WorldBuilder*. + +- Ajout simple de joueurs ordinateurs. + +**Bug :** + +- *Gestion des fuites mémoires impossible* : Lancement de *valgrind* + > avec Nidrobb échoue systématiquement. + +```{=html} + +``` +- Bugs de collisions : sortie de la carte, saut sur obstacles + +- Bug de chute : pas de chute tant qu'il y a des actions. + +**Améliorations :** + +- Menu de jeu![](media/nidhogg.png){width="1.72249343832021in" + > height="0.75in"} + +- Tests complets et unifiés + +- Postures de joueurs (haute/milieu/basse) + +- Attaques haute / basses + +- Animations de morts + +- Raffinement des frames (Sprites & Hitbox Passive/Active) + +- Affichage des hitbox Passive / Active + +**Inspirations du système de hitbox +:**![](media/hitbox.png){width="3.7314818460192476in" +height="2.0989588801399823in"} + +**Hitbox passive** = réception de dommages / collisions environnement + +**Hitbox active** = envoie de dommage / parades + +**Organisation** +================ + +Pour commencer, nous nous sommes répartis les rôles comme suit : + +- Harlé Antoine : Responsable Mécanique de jeu + +- Hanna Elias : Responsable Graphique + +Pour le développement, nous avons commencés par définir nos objectifs à +court et long termes puis avons commencé à produire un premier UML sur +lequel se baser. + +Nous nous sommes servis de Google Drive pour la mise en commun des +données. L'utilisation d'un git semblant peu pertinent pour un projet de +cet ampleur et durée. + +A partir de cela, nous tentions de modifier le moins possible les mêmes +fichiers afin de faciliter la mise en commun. + +Travail réalisé : + +- Harlé Antoine + +\- Rédaction du README + +\- Gestion de l'UML + +\- Gestion des tests unitaires : *Unitests* + +\- Mise en place des Design Pattern (Command Pattern, Singleton, +Factory) + +\- Développement des animations : *AnimationFrame, Animation, +AnimationBuilder, (sprite)* + +\- Gestion des graphiques : images joueurs, obstacles, etc. + +*-* Gestion des entrées : *InputMap, Command, RightCommand*, etc. + +-Toolbox + +\- Structure de jeu : Game, *Player, Obstacle, World, WorldBuilder* + +*-* Gestion des collisions (Passive/Active) + +\- Gestion des chutes V2 (isFallingV2) + +\- Fréquence d'affichage + +- Hanna Elias + +\- Gestion de l'affichage : *display, window, sprite* + +\- Gestion des chutes (isFalling) + +\- Toolbox diff --git a/README.pdf b/README.pdf deleted file mode 100644 index c2dff28..0000000 Binary files a/README.pdf and /dev/null differ diff --git a/media/hitbox.png b/media/hitbox.png new file mode 100644 index 0000000..2ddc659 Binary files /dev/null and b/media/hitbox.png differ diff --git a/media/img1.png b/media/img1.png new file mode 100644 index 0000000..24f0bec Binary files /dev/null and b/media/img1.png differ diff --git a/media/img2.png b/media/img2.png new file mode 100644 index 0000000..e6bf3c2 Binary files /dev/null and b/media/img2.png differ diff --git a/media/img3.png b/media/img3.png new file mode 100644 index 0000000..854cfb8 Binary files /dev/null and b/media/img3.png differ diff --git a/media/img4.png b/media/img4.png new file mode 100644 index 0000000..297ad58 Binary files /dev/null and b/media/img4.png differ diff --git a/media/img5.png b/media/img5.png new file mode 100644 index 0000000..1a42763 Binary files /dev/null and b/media/img5.png differ diff --git a/media/logo.png b/media/logo.png new file mode 100644 index 0000000..94e019b Binary files /dev/null and b/media/logo.png differ diff --git a/media/nidhogg.png b/media/nidhogg.png new file mode 100644 index 0000000..289efbf Binary files /dev/null and b/media/nidhogg.png differ diff --git a/media/unitest.png b/media/unitest.png new file mode 100644 index 0000000..5f240c0 Binary files /dev/null and b/media/unitest.png differ