nodejs-guessing-game/README.md

86 lines
3.3 KiB
Markdown

# 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<Number>`.
**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`)_.