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.

Jeux de labyrinthes graphiques en hommage à J&S – 3ème article

Et voici le dernier article consacré à la série sur les jeux de labyrinthes graphiques de Jeux & Stratégie. Il s’agit du programme BASE ALPHA publié dans le numéro 28 en page 54, dans la rubrique Logiciel. A l’instar des programmes précédents, il a été développé par Michel Brassine.

L’originalité de BASE ALPHA est qu’il est jouable avec les calculatrices programmables de l’époque. Mais nous allons présenter ici la version en BASIC Applesoft, qui utilise les possibilité graphiques « haute résolution » de ce micro-ordinateur.

Voici le scénario issu de l’article :

Vous êtes parvenu sans difficulté à pénétrer au cœur d’une ville souterraine nommée « base Alpha ». Sans davantage de risque vous avez trouvé les documents ultra-secrets que vous étiez venu prendre. Vous découvrez, au moment où commence le jeu, que la sécurité sur la base Alpha n’est pas fondée sur la difficulté d’entrer, mais bel et bien de sortir…

Le but du jeu est de parvenir à accumuler suffisamment de points d’expérience pour s’échapper d’un dangereux dédale. Au cours de vos pérégrinations, vous risquez de rencontrer des monstres peu sympathiques…

Continuer la lecture de « Jeux de labyrinthes graphiques en hommage à J&S – 3ème article »

Jeux de labyrinthes graphiques en hommage à J&S – 2ème article

Dans ce 2ème article consacré aux jeux de labyrinthes graphiques de Jeux & Stratégie, nous allons tester La cité des robots publié dans J&S N°21. Vous y trouverez la description détaillée du jeu et le listing en BASIC Applesoft en page 46, dans la rubrique Logiciel.

Hélas, vous ne verrez pas ces robots en exécutant le programme proposé ; cela nécessiterait un développement supplémentaire.

Vous vous déplacez avec un véhicule dans une ville labyrinthique tout en étant poursuivi par des robots tueurs. Votre mission est de leur échapper tout en tentant de rejoindre un correspondant que vous devez rencontrer. Voici la présentation du jeu extraite de l’article :

Continuer la lecture de « Jeux de labyrinthes graphiques en hommage à J&S – 2ème article »

Jeux de labyrinthes graphiques en hommage à J&S – 1er article

Le magazine Jeux & Stratégie publiait régulièrement des listings de jeux en BASIC pour les micro-ordinateurs de l’époque. Pour rendre hommage à cette merveilleuse revue, je vous propose une série de trois articles consacrés à trois jeux de labyrinthes pour Apple II :

Ces programmes utilisent les capacités graphiques de cet ordinateur, en basse et haute résolution.

Ce premier article est consacré au jeu LABYCODE.

Continuer la lecture de « Jeux de labyrinthes graphiques en hommage à J&S – 1er article »

The Potion, a mini game for your 6502 computers

The Potion est un jeu d’aventure textuel de type 2 word parser similaire à de nombreux jeux publiés dans les années 80s, les capacités des ordinateurs domestiques étant très limités à l’époque. Cela étant, The Potion présente les caractéristiques intéressantes suivantes :

  • Il a été développé en langage C ;
  • Il ne date pas des années 80s mais de 2003, et a été développé par Peter Karlsson dans le cadre d’un concours (The 4k minigame 2003 competition) ;
  • Il est déjà multi-plateforme, pouvant fonctionner sous Linux ou Commodore 64 (grâce au cross-compilateur cc65), et l’effort pour le rendre disponible sur d’autres ordinateurs est donc limité.

Cet article propose une adaptation permettant de jouer à The Potion sur Apple II et Atari 800XL, le programme fonctionnant toujours sous Commodore 64 et avec un PC moderne, sous Windows ou Linux.

L’intro de « The Potion » pour Atari 800XL
Continuer la lecture de « The Potion, a mini game for your 6502 computers »

Aventure dans le château hanté

Il y a quelques années j’avais publié un article à propos d’un livre intitulé Write your own adventure programs for your microcomputer. Ce livre, écrit en anglais, avait pour objectif d’enseigner aux jeunes de l’époque (1983) à programmer un jeu d’aventure en BASIC. Le jeu qui servait d’exemple didactique était Haunted House. Il s’agit d’une aventure très simple où les commandes saisies par le joueur sont composées d’un verbe et d’un complément.

Je viens de découvrir que ce livre avait été traduit en français, le titre étant Écrivez vos jeux d’aventures pour votre micro-ordinateur. Vous pouvez télécharger une version électronique sur le site abandonware magazines. Le jeu en français est intitulé Le château hanté (remarquez qu’en passant de l’anglais au français la maison se transforme en château !).

Version française par HachetteVersion anglaise par Usborne
Continuer la lecture de « Aventure dans le château hanté »

Un jeu d’aventure en C multiplateforme

Le langage C a été conçu pour rendre les programmes portables. Grâce aux compilateurs, le même code source peut fonctionner aussi bien sur un PC moderne que sur un vieil ordinateur des années 80s.

Dans cet article, j’ai adapté le jeu d’aventure Sorcellerie (voir l’article dédié sur le portage de Sorcellerie en langage C) afin qu’il fonctionne non seulement sur un PC moderne sous Linux (grâce au compilateur gcc), mais également sur les Apple II, Atari 8bits et Commodore 64 (grâce au compilateur cc65).

L’adaptation a été très légère, le plus gros du travail étant la reprise du makefile.

Continuer la lecture de « Un jeu d’aventure en C multiplateforme »

Hobbit, the true story in python

/* Updated on 26/01/2026 : programme runs on Linux directly from the shell */

I’ve recently come accross an original game named Hobbit, the true story. This game was released in 1993 and updated in 2001. The original aspect of the game is that it was written in MS-DOS batch, which is a rather unpleasant script-shell langage.

You can find information about Hobbit, the true story on IFDB and also on Tolkien Gateway.

The game is fun as it is a parody of « The Hobbit« , the book byTolkien. I have made a port of the game in Python, so it can be easily played on any modern computer, regardless of the operating system.

The original MS-DOS version was created by Fredrik Ramsberg and Johan Berntsson and this programme is an unofficial port. I release it as a free software under the GNU General Public Lincense, as published by the Free Software Fondation. I hope the creators of the original game will agree with this, since my port is intended as tribute to their work.

First, you need to download the programme, which consists of a single python file available below:

Once downloaded, extract the python file :

If you are using Linux, make sure the file has execution rights:

Then launch the game:

Execution of the programme requires Python 3.

On Windows, start the game as follows:

Now you can play!

Hobbit the true story is a very small adventure and is quite easy to solve. However, if you get stuck, here are some general hints :

  • You need the torch and the map.
  • You can find both at home, and Gandalf will hand over the map to you if you ask him.
  • You also need the sword to cut Smaug’s cigar. You can find it in the cave north of the Troll’s clearing. They won’t let you pass unless you wait until sunset (they don’t like sunshine).
  • From there, go to the forest north of Rivendell, and use the raft to reeach Smaug’s den. Smaug will happily give you his treasure if you help him with his cigar.
  • Then go back home, and the adventure is complete.

Have fun!

Au delà du tesseract sur Apple II

Le tesseract est un cube à 4 dimension, mais cet article ne traite pas de géométrie. Car Beyond the tesseract est le titre d’un jeu d’aventure mathématique de David Lo, publié la première fois en 1983 sous la forme d’un programme BASIC pour TRS-80. Le jeu a par la suite été porté en langage C, sur différents systèmes tel que MS-DOS, Atari ST, ou UNIX.

Dans cet article, vous trouverez une adaptation pour Apple II, avec cc65 comme compilateur. Normalement, une simple recompilation aurait été suffisante, mais la mémoire d’un Apple II étant limitée, des modifications importantes du code source ont été nécessaires.

L’écran d’accueil de TESS sous Apple II, en 80 colonnes
Continuer la lecture de « Au delà du tesseract sur Apple II »

Hommage à Jeux & Stratégie n°23

Le numéro 23 de Jeux & Stratégie publié en 1983 avait pour thème principal le jeu sur micro-ordinateur, et proposait plusieurs programmes de jeu en BASIC. En voici deux prêts à l’emploi ; le royaume où vous incarnerez un ministre des finances devant assurer la survie de la population et Ming, jeux tactique où vous affronterez l’ordinateur. Les deux jeux sont des programmes très simples, en mode texte, mais ne sont pas dénués d’intérêt.

Vous avez été nommé ministre des finances pour une durée de 10 ans. Vous allez devoir prendre des décisions permettant la vie et même la survie de la population de ce – petit – royaume. Voici les informations que vous devez connaître afin d’assurer une bonne gestion.

  • Il y a 500 personnes ;
  • 50 hectares sont cultivables ;
  • Les réserves de blé sont de 700 quintaux ;
  • Un quintal permet d’ensemencer 50 ares ;
  • Un quintal nourrit 1 personne pendant un an ;
  • Un are rapporte 6 quintaux ;
  • Il faut vendre 20 quintaux de blé pour acheter un are ;
  • Il faut 6 personnes pour s’occuper d’un are ;
  • La population croît naturellement chaque année, en fonction de sa natalité.

Au bout de 10 ans, les habitants feront le bilan de votre action. Bon courage pour votre nouveau poste pas si évident !

Vous allez affronter l’ordinateur dans un jeu d’allumettes. Voici les règles :

Chaque joueur prend dans sa boite un nombre d’allumettes supérieur ou égal à 2. Les deux adversaires montrent alors leur main. Il y a alors plus cas de figure :

  • Soit le nombre d’allumettes est identique. Dans ce cas les allumettes sont mises au rebus et personne ne marque de point.
  • Si le nombre est différent, le joueur qui en a le plus dans sa main gagne toutes les allumettes présentes dans la main de son adversaire. Il met au rebut les allumettes qu’il a jouées.

La partie se poursuit jusqu’à ce qu’une ou les deux boites d’allumettes sont vides. Le gagnant est celui qui a gagné le plus d’allumettes sur son opposant, en tenant compte des allumettes résiduelles dans la boite non vide.

Il n’y a avait pas d’intelligence artificielle à l’époque, mais vous allez voir qu’il n’est pas si facile de gagner contre l’ordinateur. Le programme d’origine comportait 2 bugs que j’ai corrigé (lignes 170 et 210).