Programming your own adventure game in Pascal

J’ai trouvé sur internet une version numérisée d’un vieux livre intitulé Programming your own adventure game in Pascal, dont l’auteur est Richard C. Vile, Jr.

Ce livre date de 1984 et se propose de vous apprendre à programmer un jeu d’aventure en langage Pascal, plus exactement en UCSD Pascal disponible sur Apple II.

Le Pascal est un langage informatique créé en 1970 (avant le langage C !) par Niklaus Wirth. Sa vocation initiale était l’apprentissage de la programmation dans un langage structuré. Le Pascal a été largement enseigné dans les universités et les écoles d’ingénieurs, et est ainsi devenu très populaire dans les années 80s, étant également utilisé dans le monde professionnel. Puis il a été progressivement supplanté par le langage C, pour devenir de moins en moins employé dans sa forme initiale. Mais de nos jours, le Pascal est toujours utilisé dans une version objet embarquée dans l’environnement de développement Delphi.

Le Pascal est un langage impératif, fortement typé, structuré avec l’utilisation de fonctions et de procédures, et qui impose une grande rigueur de programmation. Il permet également de créer et manipuler des types de données complexes ; énumérés, intervalles, tableaux, enregistrements. Il s’agit d’un langage compilé dont les exécutables offrant de bonnes performances en exécution. Voici quelques particularités intéressantes :

  • Insensibilité à la casse. Une variable toto peut également être nommée TOTO.
  • Différentiation entre procédure et fonction ; la déclaration d’une procédure se fait avec le mot-clé procedure, et elle revoit pas de valeur. Une fonction se déclare avec le mot-clé function.
  • Il est possible d’inclure une procédure ou une fonction dans une autre procédure.
  • L’affectation d’une valeur à une variable se fait avec l’opérateur :=
  • Les blocs avec les mots-clés BEGIN et END.

Voici un exemple de programme de type « hello world »

program hello;
begin
    writeln('Salut retroprogrammeur');
    writeln('Bienvenue dans le monde de la programmation en Pascal');
end.

Vous remarquez que les instructions sont séparées par les points-virgules. L’instruction writeln permet d’afficher du texte à l’écran (texte entre guillemets simples) et de retourner à la ligne.

Vous trouverez de nombreux tutoriels sur le développement en Pascal sur le Web.

La vocation de ce livre d’apprendre au lecteur à programmer un jeu d’aventure textuel. Il s’appuie sur trois programmes qui servent d’exemples, et qui sont de complexité croissante concernant le code et le jeu en lui-même. Le livre explique en détail les mécanisme utilisés par ces programmes ; structures de données, algorithme de navigation dans un labyrinthe, etc.

Il est bien sûr possible de coder sur Apple II en Pascal UCSD comme à l’époque, mais également dans un environnement moderne en utilisant des compilateurs récents : Free Pascal, GNU Pascal ou même Turbo Pascal, qui n’est plus vraiment moderne mais toujours utilisable.

Voici le code source en pascal du 1er jeu d’aventure, intitulé adventure 1 ou miniadventure. Il correspond au listing 6-1. Le code d’origine n’a quasiment pas été modifié (seules quelques directives de compilation nécessaires à l’UCDS ont été supprimées).

L’archive contient le ficher sources pascal-adv-game1.pas. Pour le compiler avec le compilateur Free Pascal sous Linux, saisissez simplement la commande suivante dans le shell :

Le compilateur signale quelques « warnings » qui sont des variables non utilisées mais n’empêche pas de produire l’exécutable pascal-adv-game1, que vous pouvez lancer directement depuis le shell.

Ce premier jeu est plutôt simpliste, étant à vocation didactique pour les programmeurs. L’objectif est de rapporter un trésor, mais l’aventure consiste essentiellement à se promener dans les différentes salles, les actions possibles étant uniquement des déplacements. Ce qui corse un peu le jeu est la présence d’un labyrinthe dans lequel il est difficile de naviguer (mais où se trouve le trésor).

La procédure générale permettant de résoudre l’aventure est la suivante :

  • Pour gagner, il faut sortir avec le trésor. Celui-ci se trouve dans le labyrinthe.
  • Pour le voir, il faut au préalable lire un message sur l’île.
  • Le trésor est très lourd à remonter et il est nécessaire de le porter jusqu’au lieu narrow1 et de le tirer depuis le vestibule, le tout sans réveiller l’ogre…

Bonne chance !!!

Nous aborderons dans un futur article les deux autres jeux du livre, qui sont de complexité croissante…Le deuxième jeu utilise une base de données pour décrire les lieux et comporte un jeu de commande plus riche que les simples déplacements.