From bbbc68fb43220f6b7eb4343925b60521096a7b3f Mon Sep 17 00:00:00 2001 From: Dimitri Merejkowsky Date: Sun, 7 Apr 2019 14:42:14 +0200 Subject: [PATCH] Add consignes.md --- sources/marvel/consignes.md | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sources/marvel/consignes.md diff --git a/sources/marvel/consignes.md b/sources/marvel/consignes.md new file mode 100644 index 0000000..b7fbb5e --- /dev/null +++ b/sources/marvel/consignes.md @@ -0,0 +1,56 @@ +# Implémentation du jeu Marvel + +## Introduction + +De nombreux personnages sur developper.marvel.com n'ont pas de description. En revanche, ils ont tous une petite image (ou `thumbnail` en Anglais). + +Le jeu consistera donc à: + +* choisir un personnage au hasard +* montrer l'URL de l'image +* demander au joueur le nom du personnage correspondant +* le joueur aura droit à 3 essais maximum + +## Étape 1: préparation + +* Créez un compte sur `developper.marvel.com` et une clé d'API +* Créez le fichier api-keys.txt avec le bon format +* Récupérez le fichier `marvel.py` sur [git.e2li.org]( https://git.e2li.org/index.cgi?p=dmerejkowsky/cours-python.git;a=blob_plain;f=sources/marvel/marvel.py;hb=HEAD) +* Vérfiez que le code fonctionne: `python3 marvel.py character-description Hulk` + +## Étape 2: Rajouter une nouvelle requête + +* Rajoutez une nouvelle classe `CharacterThumbnail`, dérivée de `Query` +* Vérifiez que l'url de l'image fonctionne, en l'ouvrant dans un navigateur + +## Étape 3: Le deux clients + +* Renommez la classe `Client` en `MarvelClient`. +* Rajoutez une clase abstraite `BaseClient`. Elle devra contenir les méthodes `get_all_characters()` et `get_character_thumbnail()` +* Créez une classe `FakeClient` qui dérive de `BaseClient`. Astuce: + +```python +class FakeClient(BaseClient): + characters = { + "Hulk": "http://marvel/hulk.jpg", + "Captain America": "https://marvel.com/captain.jpg", + } + + def get_all_characters(): + ... +``` + +* Rajoutez la méthode `get_all_characters()` dans `BaseClient` et implémentez-là dans `FakeClient` et `MarvelClient`. +* Note: Pour des raisons pratiques, on va limiter le nombre de personnages possibles (sinon le jeu serait bien trop difficile!). Utilisez le fichier `famous.txt` dans `MarvelClient.get_all_characters()`. + + +# Étape 4: Le jeu + +Vous êtes maintenant prêts à implémenter le jeu lui-même. + +Astuces: + +* La classe `Game` prendra un `client` en paramètre de `__init__()`. +* Dans la fonction `main()`, utilisez la présence ou nom de la chaîne de + charactères "--test" dans `sys.argv` pour choisir le client à utiliser + (FakeClient ou MarvelClient)