Votre propre univers
La première version minimale du jeu d’aventure que vous venez d’étudier est appelée à être modifiée.
La première modification va consister à étendre la map pour augmenter le game play.
Dans une version ultérieure, on rajoutera des objets et des personnages non joueurs avec qui il sera possible d’interagir.
GitHub stuff
Ouvrir la [REPOSITORY_HOMEPAGE]
et démarrer le codespace associé :
Code Codespaces
A partir du terminal du codespace, récupérer la dernière version du jeu depuis votre dépôt
$ git pull
Utiliser l’extension GitLens
pour examiner l’historique des commits, et en particulier les différences entre la version actuelle et la version précédente.
Ajouter des lieux
A votre convenance, vous pouvez étendre la map initiale en ajoutant des lieux, ou créer une toute autre map dans un univers complètement différent.
Si on interroge ChatGPT, voilà quelques suggestions :
un univers fantastique : créez un monde imaginaire avec des créatures fantastiques telles que des dragons, des licornes, des elfes et des magiciens. Les joueurs peuvent explorer des forêts enchantées, des châteaux hantés, des cavernes mystérieuses et des montagnes majestueuses.
un univers post-apocalyptique : imaginez un monde où la civilisation s’est effondrée et où les joueurs doivent survivre dans un environnement hostile. Les lieux pourraient inclure des ruines de villes, des terres désolées, des bunkers abandonnés et des zones contaminées.
un univers de science-fiction : dans cet univers, les joueurs peuvent explorer des planètes éloignées, des stations spatiales, des vaisseaux spatiaux et des installations de haute technologie. Les lieux pourraient inclure des laboratoires de recherche, des usines de production, des arènes de combat et des zones de quarantaine.
un univers médiéval : plongez les joueurs dans une époque où les chevaliers, les châteaux et les dragons étaient monnaie courante. Les lieux pourraient inclure des villages médiévaux, des châteaux fortifiés, des champs de bataille et des forêts sombres.
un univers de zombies : dans cet univers, les joueurs doivent survivre dans un monde envahi par les morts-vivants. Les lieux pourraient inclure des villes abandonnées, des hôpitaux, des centres commerciaux et des cimetières.
un univers d’espionnage : dans cet univers, les joueurs sont des espions travaillant pour une organisation secrète. Les lieux pourraient inclure des ambassades, des casinos, des clubs de nuit et des installations militaires.
un univers de mystère : dans cet univers, les joueurs doivent résoudre des énigmes et des mystères en explorant des lieux mystérieux tels que des manoirs hantés, des cimetières anciens, des musées et des bibliothèques
l’univers du corps humain : les joueurs peuvent explorer le système circulatoire, le système respiratoire, le système digestif, le système nerveux ou le système immunitaire.
l’univers des ordinateurs : les joueurs peuvent explorer le système d’exploitation de l’ordinateur, son architecture, les connexions réseau et les divers équipements qui le relient à internet. Les joueurs pourraient également simuler le propagation d’un virus informatique.
Note
Votre map doit comporter au moins 8 lieux. Il peut y avoir des topologies qui nécessitent de faire demi tour.
Vérifiez que les déplacements possibles sont conformes à la nouvelle carte. Tester tous les passages entre les lieux.
Ajouter des directions
Jusqu’à présent les déplacements dans le jeu se faisaient en 2 dimensions. Il est maintenant temps d’ajouter des directions verticales pour monter dans les étages ou descendre dans une cave ou un sous sol. Pour garder une cohérence avec l’existant, on utilisera les mots clés U
(pour UP) et D
(pour DOWN).
Identifier les parties du code mis en jeu.
Modifier la map en ajoutant au moins 2 autres lieux (pour un total minimum de 8) pour qu’il y ait au moins un déplacement vers le haut et un vers le bas.
Vérifiez que les déplacements possibles sont conformes à la nouvelle carte. Tester tous les passages entre les lieux.
Améliorer l’interface
L’interface actuelle est très basique. Il est temps de l’améliorer.
Que se passe t-il si le joueur entre une commande qui n’est pas valide ? Que se passe t-il si le joueur entre une commande qui n’est pas complète ? Identifier les parties du code qui gèrent ces cas et observer attentivement comment ces cas sont traités.
Que se passe t-il maintenant si on utilise la commande go
avec une direction qui n’existe pas ?
Quelle est la classe dans laquelle est définie la commande
go
?Quelle est le fichier/module dans lequel est défini cette classe ?
On imagine bien qu’il faudrait pouvoir comparer la direction entrée par le joueur avec les directions possibles. Quelle est la classe la plus appropriée pour construire un ensemble de directions possibles ?
Quelle est le type d’objet le plus efficace pour tester l’appartenance d’une direction à un ensemble de directions possibles ?
Pour construire cet ensemble de direction, la meilleure façon de faire est de le construire manuellement.
Pour construire cet ensemble de direction, la meilleure façon de faire est de le construire automatiquement.
Dans quelle fonction est il naturel de loger cette construction ?
A faire
En vous aidant des réponses aux questions précédentes :
créez une structure de données pertinente dans la classe appropriée ;
dans la classe/méthode appropriée, renseignez cette structure de données de façon à ce qu’elle recense l’ensemble des directions utilisées (on peut faire ça en deux lignes de code) ;
ajoutez une condition dans la fonction
go
pour vérifier que la direction entrée par le joueur est bien une direction valide. Si ce n’est pas le cas, afficher un message d’erreur et ne pas faire le déplacement.
A faire
Après avoir identifié la classe et la fonction pertinente, modifier le code, pour que l’on puisse indifféremment utiliser les mots clés O
, OUEST
, Ouest
, ou ouest
pour déplacer le joueur vers l’ouest.
Vérification
Vérifier que le jeu fonctionne toujours correctement et que les modifications apportées sont conformes aux consignes:
> go H
Direction 'H' non reconnue.
Vous êtes dans un marécage sombre et ténébreux. L'eau bouillonne, les abords sont vaseux.
Sorties: N, O
> go n
Vous êtes dans une immense tour en pierre qui s'élève au dessus des nuages.
Sorties: N, S, O
> go sud
Vous êtes dans un marécage sombre et ténébreux. L'eau bouillonne, les abords sont vaseux.
Sorties: N, O
> go Nord
Vous êtes dans une immense tour en pierre qui s'élève au dessus des nuages.
Sorties: N, S, O
La suite…
A cette étape, votre dépôt doit contenir les seuls fichiers suivants :
actions.py
command.py
game.py
player.py
room.py
Le jeu doit être fonctionnel et avoir intégré les consignes précédentes. La commande
$ python game.py
doit pouvoir être lancée et vous permettre de parcourir la totalité de la map que vous avez définie sans erreur.
GitHub stuff
Enregistrer les modifications apportées aux fichiers dans le repo local au codespace
$ git add .
$ git commit -m "Votre propre univers"
Pour référencer plus facilement cette version dans le futur, créer un tag
$ git tag v2
Synchroniser votre codespace avec votre dépôt GitHub
$ git push
Vérifier que les modifications sont bien présentes dans le dépôt GitHub.