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.

Faites une copie du répertoire v1 dans un répertoire v2. A partir de maintenant, vous travaillerez dans le répertoire v2.

Démarrer Visual Studio Code et ouvrir le répertoire v2 avec File > Open Folder....

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 ?

  1. Quelle est la classe dans laquelle est définie la commande go ?

  2. Quelle est le fichier/module dans lequel est défini cette classe ?

  3. 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 ?

  4. Quelle est la structure de données la plus efficace pour tester l’appartenance d’une direction à un ensemble de directions possibles ?

  5. Pour construire cet ensemble de direction, la meilleure façon de faire est de le construire manuellement.

  6. Pour construire cet ensemble de direction, la meilleure façon de faire est de le construire automatiquement.

  7. 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 répertoire v2 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.