87 lines
3.3 KiB
Markdown
87 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.
|
|
- [ ] Créer un nouveau projet avec la commande `npm init -y` et installer le package publié.
|
|
- [ ] Tester le package installé pour vérifier son bon fonctionnement.
|