|
@@ -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) |