diff --git a/rapport/main_page.md b/rapport/main_page.md index ac25a82..fa5fed5 100644 --- a/rapport/main_page.md +++ b/rapport/main_page.md @@ -1,28 +1,27 @@ # Rapport -Nous avons choisi d'utiliser doxygen pour faire une documentation de notre code. Nous vous rendons donc -notre rapport dans cette documentation, donc la majorité de ce pdf est en faite la documentation de notre code. +Nous avons choisi d'utiliser doxygen pour faire une documentation de notre code. La majorité de ce pdf est la documentation de notre code. -## Décision de structure +## modélisation du jeu et décision de structure -Pour commencer on a pris comme structure pour la zone de jeu un tableau 2d de `char`. Nous avons pris -des `char` car on sais qu'on a pas besoin de plus de possibilité de nombre que un octet. On a fais des `define` -qui permet de definir quel nombre correspond à quel objet dans le jeux (joueur , caisse, mur, ...). +Nous sommes parti sur un tableau 2d de `char`afin de représenter notre plateau. Nous avons utiliser +des `char` car on sait qu'on a pas besoin de plus de possibilité de nombre que un octet. On a fait des `define` +qui permettent de definir quelles nombres correspondent à quel objet dans le jeu (joueur , caisse, mur, ...). Nous avons ensuite créer une structure `coor` qui est une structure representant des coordonnées x et y. Cela est pratique pour naviger dans le tableau 2d par exemple. -On a fais une structure de score qui prend comme variable ce qu'il y a besoin pour calculer le score a la +Nous utilisons une structure de score qui prend comme variable ce qu'il y a besoin pour calculer le score a la fin de la partie. Il y a le temps avant la partie et apres (pour obtenir le temps passer dans la partie), ensuite -on a le nombre de déplacement fais par le joueur ainsi que les déplacement fais par les caisses. +on a le nombre de déplacement fait par le joueur ainsi que les déplacement fait par les caisses. -Pour finir on a fais uns structure `dis` qui est enfaite la structure possédant tout ce qu'il faut -pour faire l'affichage `SDL`. En effet on a la `window`, le `renderer`, on a la taille de la window, +Pour finir on a fais uns structure `dis` qui est une structure possédant tout ce qu'il faut +pour faire l'affichage `SDL`. En effet on a la `window`, le `renderer`, on a la taille de la fenêtre, la taille des boites ainsi que la taille du menu. -Nous avons fais en sorte que pour nimporte quel écran la window s'adapte à celle-ci. +Nous avons fait en sorte que pour n'importe quel écran la fenêtre s'adapte à celle-ci. -## Comment lancé le jeu ? +## Comment lancer le jeu ? Il vous faut installer SDL2, SDL2 Mixer, SDL2 Image, SDL2 ttf, make, gcc. @@ -30,3 +29,41 @@ Il vous faut installer SDL2, SDL2 Mixer, SDL2 Image, SDL2 ttf, make, gcc. make all ./sokoban ``` +## Les contrôles: + +- zqsd pour se déplacer +- échap pour sortir du niveau +- entrée pour sélectioner le niveau à jouer + +## Pour aller plus loin + +(1) Tout nos niveau sont stocké dans des fichier .txt dans le dossier map. Les fichier nommé original_X sont au nombre de trois, et repésente des niveau que nous avons construit. +Les fichier nommé custom_X sont les niveau crée avec l'éditeur de niveau. +Nous chargement donc les niveaux depuis leurs fichier texte, de cette manièrere nous pouvons assez simplement ajouter ou retirer des niveau. + +(2) Nous avons fait un affichage de score en fin de niveau, qui prends en compte: + - le temps passé dans le niveau. + - le nombre de mouvements du personnage. + - le nombre de mouvements des caisses. + - la réussite du niveau. + +(3) Nous avons donc un affichage en temps réel du chronomètre, ainsi que le nombre de déplacement du joueur et le nombre de déplacement des caisses. + +(4) Nous avons fait un menu dans lequel le joueur doit se déplacer sur un niveau, puis faire entré afin de lancer le niveau. +Les niveau originaux sont imagé avec un escalier de couleur blanche tandis que les niveau crée avec l'éditeur sont imagé avec un escalier de couleur noir. + +(5) La partie s'arrete automatiquement si le joueur ne peut plus gagner, dans ce cas il peut alors observer son score. + +(+) L'éditeur de niveau: +Nous avons créer un outil de création de niveau dans notre jeux, afin de créer des niveau plus rapidement. +L'éditeur se trouve tout à droite du menu. +Un fois rentrer dedans un fichier texte (custom_X.txt) va etre créer. +Dans cette éditeur vous pouvez déplacer le personnages avec z,q,s,d, +vous pouvez également modifier le plateau en faisant soit un clic gauche (sur la case voulue) pour placer un objet suivant, +ou vous pouvez faire un clic droit pour placer l'objet précedent. +Enfin il vous suffira de faire échape ou fermer le programme afin de sauvegarder le niveau. Il apparaitra donc en tant que niveau custom dans le menu principal. +Attention : une fois un niveau enregistrer il n'est plus possible de le modifier via le programme, il vous faudra aller dans le dossier maps et modifier à la main les charactère. + +(+) nous avons ajouter aussi quelques effet visuel... (génération avec seed de la végétation au sol, différents sprites pour le personnage suivant la direction ou encore un menu des titres) + +Bon jeu ! \ No newline at end of file