diff --git a/README.md b/README.md new file mode 100644 index 0000000..4175077 --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# Guessing Game + +Ce projet _(vierge)_ est un jeu de devinette où l'utilisateur doit deviner un nombre aléatoire entre deux nombres donnés. + +Aucune dépendance n'est nécessaire pour ce projet, seuls des modules natifs de NodeJS sont utilisés. + +## Commandes + +Pour pouvoir lancer le jeu, il suffit d'exécuter la commande suivante: + +```bash +npm start +# ou +npm run start +# ou +node index.js +``` + +## Structure du projet + +``` +. +├── game.js +├── index.js +├── package.json +├── questions.js +└── README.md +``` + +### Fichier `game.js` + +Ce fichier exporte une classe `GuessingGame` qui contient la logique du jeu. + +Cette classe est constituée de plusieurs méthodes : + +- `constructor(min, max)`: le constructeur de la classe qui initialise les propriétés `min` et `max` de l'instance. +- `generateRandomNumber()`: une méthode qui génère un nombre aléatoire entre `min` et `max` _(inclus)_. +- `guess(number)`: une méthode qui prend un nombre en paramètre et retourne un booléen en fonction de la valeur de ce nombre par rapport au nombre aléatoire. + +**La logique du jeu est à développer dans ce fichier.** + +### Fichier `index.js` + +Ce fichier est le point d'entrée du jeu. Il importe la classe `GuessingGame` et utilise les méthodes de cette classe pour jouer, au sein d'une fonction asynchrone `app`. + +Cette fonction est appelée immédiatement après sa déclaration, lors de l'exécution de l'application. + +**La logique de gestion de la partie est à développer dans ce fichier.** + +### Fichier `questions.js` + +Ce fichier exporte un objet contenant une fonction `askNumber(min, max)` qui prend deux nombres en paramètres et retourne une question à poser à l'utilisateur. + +La fonction est déjà implémentée et retourne une valeur de type `Promise`. + +**La logique est déjà mise en place, inutile de modifier ce fichier.** + +## Objectifs liés au développement + +### Fichier `index.js` + +- [x] Importer la classe `GuessingGame` depuis le fichier `game.js`. +- [x] Créer une fonction asynchrone `app` qui contient la logique de jeu. +- [ ] Instancier un objet `GuessingGame` avec des valeurs de `min` et `max` au choix. +- [ ] Demander à l'utilisateur de deviner le nombre aléatoire jusqu'à ce qu'il trouve la bonne réponse. + +### Fichier `game.js` + +- [ ] Implémenter la logique du jeu dans la classe `GuessingGame`. +- [ ] Générer un nombre aléatoire entre `min` et `max` dans la méthode `generateRandomNumber`. +- [ ] Appeler la méthode `generateRandomNumber` dans le constructeur de la classe. +- [ ] Comparer le nombre donné par l'utilisateur avec le nombre aléatoire dans la méthode `guess`. +- [ ] Retourner `true` si le nombre est correct, `false` sinon. +- [ ] Afficher un message en fonction du résultat de la comparaison _("Trop grand", "Trop petit", "Bravo !")_. + +## Objectifs une fois le développement terminé + +- [ ] Tester le jeu pour vérifier son bon fonctionnement. +- [ ] Se créer un compte sur NPM si ce n'est pas déjà fait. +- [ ] Se créer un compte sur GitHub si ce n'est pas déjà fait. +- [ ] Créer un dépôt sur GitHub pour le projet. +- [ ] Pousser le code source sur le dépôt GitHub. +- [ ] Créer un package NPM pour le projet. +- [ ] Publier le package sur NPM. +- [ ] Tester l'exécution du jeu sans aucune installation _(avec `npx nom-du-package`)_.