Il s'agit d'un suivi de la question Imprimer un labyrinthe . Si vous aimez cette question, veuillez ajouter d'autres algorithmes de génération de labyrinthe;).
Pour cette tâche, vous devrez implémenter un moteur de jeu pour un joueur qui doit trouver le trésor dans un labyrinthe et sortir du donjon.
Le moteur commence par lire le labyrinthe à partir de l'entrée standard, suivi d'une ligne contenant un un fichier donné comme argument dans la ligne de commande. Ensuite, le joueur .
(point)@
est placé dans un endroit aléatoire sur la carte. Ensuite, le moteur commence à interagir avec le joueur via io standard:
Commandes du moteur au joueur :
continue
: Jeu non terminé. L'environnement est imprimé suivi d'un.
. Le joueur est représenté par un@
personnage. Les cellules non observables sont représentées par?
.finished
: Jeu terminé. Le nombre d'étapes est imprimé et le jeu s'arrête.
Commandes du joueur au moteur :
north
: Déplace le joueur vers le haut.south
: Déplace le joueur vers le bas.west
: Déplacer le joueur vers la gauche.east
: Déplacer le joueur vers la droite.
Toute commande invalide (comme frapper un mur) du joueur est ignorée, mais toujours comptée. Vous êtes libre de définir l'environnement à votre guise.
- Points pour le code le plus court.
- Points pour un environnement complexe (par exemple imprimer de grandes régions et remplacer les cellules qui ne sont pas visibles par
?
). - Aucun point pour le code qui ne respecte pas le format io
exemple :
Dans cet exemple, l'environnement est défini comme la cellule 3x3 avec le joueur au milieu.
$ cat maze
+-+-+
|#|
| |
+---+
$ python engine.py maze
|#
@
---
.
east
|#|
@|
--+
.
north
+-+
|@|
|
.
south
|#|
@|
--+
.
west
|#
@
---
.
west
|
|@
+--
.
north
+-+
@|
|
.
west
finished
7
Réponses:
C99, 771 caractères
Nécessite et utilise ncurses. Une seule macroisation pour la longueur, et les macros N et M doivent remplacer les opérateurs minimum et maximum manquants, et je ne pense pas qu'il y ait beaucoup plus à faire à ce sujet.
Il suppose que le labyrinthe d'entrée ne dépasse pas 80 caractères de large, et que le nom de fichier du labyrinthe a été passé sur la ligne de commande, et que le nombre de paramètres est suffisamment faible pour que la valeur initiale de c ne soit pas une commande de mouvement.
S'écarte de la norme en ce qu'il prend les commandes de direction de caractère unique comme première lettre minuscule de celles suggérées.
Affiche les régions inconnues sous la forme «?».
Plus lisible avec des commentaires:
la source