-
Notifications
You must be signed in to change notification settings - Fork 0
darkside91/Projet_C-_2021-2022
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
################################################################################### LAST EARTH ####################################################################################### Last Earth est un jeu de gestion qui se joue par tour. Le joueur incarne un groupe de villageois qui se reproduit, récolte et consomme des ressources. Le projet a été réalisé à l'aide de SFML en C++. ####### SOMMAIRE ####### I - Installation II - Règles du jeu III - Tests IV - Crédits ######################## ###################################################################################################################################################################################### I - Installation Le jeu est fait pour ne s'exécuter que sur un environnement Linux car il utilise des appels systèmes POSIX. Il n'est pas compatible Windows ou MacOS. Il a été développé sous Ubuntu 18.04.6 LTS. Sur votre environnement Linux, il faut installer les packages SFML permettant de compiler correctement le projet. Entrez la ligne suivante sur le terminal pour permettre l'installation : sudo apt-get install libsfml-dev Cela devrait fonctionner sur la plupart des systèmes Debian. Au cas où l'installation ne se ferait pas correctement, il est possible de télécharger manuellement les paquets puis de les décompresser à l'endroit souhaité pour pouvoir ensuite les compiler en spécifiant le chemin des librairies. Il faut de préférence les copier dans le chemin standard "/usr/local" pour pouvoir utiliser le Makefile fourni. Voici le lien de téléchargement : https://www.sfml-dev.org/download-fr.php Une fois l'installation terminée, il faut télécharger le dossier du jeu et le décompresser. Un Makefile est fourni permettant de compiler le jeu avec l'instruction "make". Le Makefile permet de compiler les testcases avec l'instruction "make testcases". Il suffit de lancer le jeu par "./Last_Earth". Pour lancer les testcases, il faut entrer "./testcases". ###################################################################################################################################################################################### II - Règles du jeu Last Earth se joue par tour. La version du jeu à ce jour, permet de jouer un maximum de 8 tours avant la fin du jeu. Pour modifier le nombre de tours, il suffit de modifier la variable tours, argument du constructeur Game() dans le fichier main.cpp. Le joueur contrôle un groupe de villageois (initialement composé d’un homme et d’une femme). Ce groupe est dépendant de 5 types de ressources : viande, légume, eau, bois et pierre. A chaque tour joué, la carte s'agrandit un peu plus. Un tour est constitué de plusieurs étapes : 1 - Le joueur choisit une direction où se diriger via les touches Z,E,D,X,W,Q. Z E Q D W X 2 - Le joueur récolte les ressources présentes sur la case (ce n’est possible qu’une seule fois, les ressources s’épuisent). Ceci est réalisé automatiquement après le choix du mouvement. 3 - Le joueur nourrit ses villageois (chaque type ayant ses spécificités, que nous discuterons plus bas). Pour réaliser cette action il faut appuyer sur le bouton bleu à l'icône d'une goutte d'eau. 4 - Le joueur choisit de reproduire ses villageois ou non (bouton bleu ou bouton rouge). Il faut appuyer sur un personnage puis l'autre à tour de rôle. Les personnages sont dans la zone Villageois. On ne peut reproduire que des personnages dont le nombre est égal ou supérieur à 1. Par exemple appuyer sur l'image de la femme puis de l'homme. Après deux secondes, on voit qu’un nouvel individu s’est ajouté si la reproduction a fonctionné, si un paramètre n’est pas bon, un message apparaîtra dans le terminal et le jeu continuera. 5 - Les villageois qui n’ont pas été nourris ou qui ont atteint la fin de leur vie meurent et le prochain tour commence. Chaque type de personnage a un comportement différent de reproduction et de consommation des ressources : * Les humains ne consomment que des ressources alimentaires. Leur reproduction peut donner les 5 types avec une probabilité de 57% de donner un autre humain (femme ou homme). * Les mutants_pm peuvent consommer n’importe quelle ressource, de préférence les ressources alimentaires, ce qui les met en concurrence avec les humains. Ils peuvent se contenter de bois ou de pierre (comme des termites du futur). * Les mutantsF_minus consomment n’importe quelle ressource tout comme les mutants_pm, mais prennent deux ressources à la place d’une. * Les mutantsF_plus ne consomment pas de ressources et ne peuvent mourir que de vieillesse. Chaque type de personnage a une espérance de vie différente, qui varie de 5 tours pour un humain et un mutant_pm, à 2 tours pour un mutant_minus. Elle est de 4 tours pour un mutant_plus. Le jeu est gagné si à la fin du nombre de tours, il reste au moins un personnage en vie. Le jeu est perdu si tout le monde meurt. Le jeu peut être mis sur pause et les règles du jeu peuvent être lues sur l’écran de pause accessible par la touche échap. Le jeu est réintégré en appuyant sur le bouton en forme de planète Terre. Certaines informations peuvent être lues de manière plus explicite sur le terminal, par exemple la mort d'un personnage, ou l'augmentation d'une ressource. ###################################################################################################################################################################################### III - Tests Le but de ces tests unitaires est de couvrir un maximum des fonctions du code. Le testcase est composé de 9 tests différents soit 19 asserts. Les tests permettent de vérifier le bon déroulement des fonctions de la classe Personnage, de la classe Cases et bien sûr de la classe Game. Ces tests ont été volontairement réalisés sur les fonctions au fonctionnement le plus critique pour le jeu. * Test 1 : vérifie la bonne initialisation du jeu lors de sa création * Test 2 : vérifie si la fonction rand_ressources() de la classe Game retourne bien un objet de type Ressources à l'aide d'un objet type_info * Test 3 : vérifie que la fonction return_perso(std::size t) de la classe Game retourne bien le Personnage du type choisi, à l'aide cette fois aussi d'un objet type_info * Test 4 : vérifie le bon déroulement de la fonction reproduction(Personnage& p) des classes filles de la classe Personnage. Vérifie que la fonction retourne bien un objet Personnage à l'aide d'un objet typer_info * Test 5 : vérifie la bonne initialisation des classes filles de la classe Personnage mais aussi la perte de vie * Test 6 : vérifie le bon déroulement des fonctions de remplissage et d'effacement de la classe Case ainsi que la surcharge d'opérateur << * Test 7 : vérifie que la surcharge d'opérateur des vecteurs de Personnage renvoie la bonne std::string * Test 8 : vérifie que la fonction push_list(std::size_ i) de la classe Game ajoute bien un Personnage au bon vecteur * Test 9 : vérifie que la fonction choix_reproduction(std::size_t x, std::size_t y) renvoie la bonne valeur lorsqu'on entre de différentes coordonnées ###################################################################################################################################################################################### IV - Crédits Le projet a été réalisé à l'aide de la documentation SFML : https://www.sfml-dev.org/learn-fr.php Je recommande aussi l'utilisation de la documentation C++ de cplusplus.com : https://www.cplusplus.com/ Ce jeu a été réalisé dans le cadre d'un projet de C++ sur le thème "There is no Planet B" par Maï Ghalioun (spécialité Electronique/Informatique Systèmes embarqués - EISE 4). Il a été réalisé sous une environnement Linux/Ubuntu et utilise des appels systèmes POSIX, ce qui nécessite qu'il soit compilé et exécuté sur un environnement Linux.
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published