Adventure Castle fait peau neuve

De temps à autre, j’aime bien chercher sur internet des vieux jeux d’aventure dont le code source est disponible, pour voir ensuite voir si ce code est toujours compilable et exécutable sur un ordinateur moderne.

C’est ainsi que je suis tombé sur Adventure Castle développé en langage C par Dave Dunfield. L’archive Castle.zip est téléchargeable sur ifarchive.org. Le jeu est également répertorié sur IFDB mais la page dédiée ne donne presque aucun information, à l’exception de l’auteur et de la date de création du jeu (1983). En ouvrant le fichier Castle.zip, l’on obtient quelques informations supplémentaires :

Dave Dunfield's "Adventure Castle", a clone of "Colossal Cave"

Written in Micro-C, runs on DOS 2.0 and up (PCs).
Binary built by Dosius.

Micro-C semble être un ancien compilateur pour MS-DOS. L’archive Castle.zip contient les fichiers suivantes :

castle.c            Code source en C
castle.com Exécutable pour MS-DOS
castle.dat Fichier binaire de description des lieux
castle.hlp Fichier texte affichant une aide

Vous pouvez directement jouer à Adventure Castle avec DOSBox. Sous Linux (Debian ou Ubuntu), l’installation de DOSBox se fait de la façon suivante :

Ensuite, pour lancer le jeu, après avoir extrait les fichiers de l’archive Castle.zip :

Le jeux se lance dans une nouvelle fenêtre :

Il est bien sûr possible d’utiliser DOSBox avec d’autres distributions Linux ou avec Windows.

Adaptation du code source pour GCC

Le premier essai de compilation du code source avec gcc a été un échec. En effet, certaines fonctions utilisées pour manipuler les fichiers ne sont pas compatibles avec la librairie C standard actuelle, parmi lesquelles fopen (ouverture d’un fichier), ftell (récupération de la position courante dans le fichier en cours de lecture) et fseek (positionne la tête de lecture à la position donnée en paramètre). Ces dernières sont utilisées pour lire le fichier binaire castle.dat qui contient la description des 180 lieux (ou salles) du jeu. La structure est particulière, le caractère nul (0) est le délimiteur d’une nouvelle salle, il est suivi de la description dans un format chiffré.

J’ai effectué de nombreuses autres adaptations sur le code, certaines pour pouvoir rendre le programme compilable avec gcc et fonctionnel, d’autres d’ordre esthétique.

Liste des adaptations pour compilation avec gcc:
- Correction de l'utilisation des fonctions de manipulation de fichiers : fopen, ftell, fseek
- Déclaration des fonctions dans un style moderne
- Ajout des types t_bool, t_usi (entier court non signé) et t_si (entier court signé)
- Correctif dans la fonction parse(), les commandes de l'utilisateur n'étaient plus reconnues
- Correction du calcul du score dans la fonction end_game()
- Pour la fonction rand(), initialisation de la graine avec une lecture de l'heure (utilisation de time.h)
- Suppression de tous les warnings générés par gcc avec l'option -Wall.

Voici l’archive avec le code source mis à jour :

J’ai ajouté un Makefile qui permet de produire l’exécutable castle. Pour compiler :

Pour lancer le jeu :

Le jeu s’exécute dans la console :

Enfin, j’ai créé un petit utilitaire extrdat qui extrait les données du fichier binaire castle.dat et les affiche sur la sortie standard dans un format texte lisible. Vous pouvez ainsi voir en clair la description des 180 salles. Le source est castle_extract_dat.c. Pour le compiler : make extract

Il ne vous reste plus qu’à résoudre l’aventure… Je n’ai pas fait beaucoup de tests, il se peut donc qu’il reste quelques bugs… N’hésitez pas à me les signaler le cas échéant.

De belles rosaces en C sur Apple II

Une nouvelle page dédiée à la programmation en C sur Apple II est disponible. Elle fait suite au tutoriel consacré à la programmation graphique en C avec la bibliothèque tgi de cc65 (voir ici) et reprend le programme en BASIC Applesoft de dessin de belles rosaces (voir ).

Un aspect intéressant de la programmation est abordé ; le calcul sur des nombres à virgules fixes, pas simple mais très utile lorsque les nombres à virgule flottante ne sont pas supportés.

Voici le lien vers la page.

De belles rosaces en BASIC Applesoft

Je suis tombé récemment sur un article de l’Ordinateur Individuel n°69 publié en avril 1985. Cet article propose de tracer des rosaces avec l’imprimante graphique du TRS-80 modèle 3 ou de les afficher avec le mode graphique haute résolution de l’Apple II. Les programmes sont en langage BASIC, en Applesoft pour l’Apple II.

Cet article présente le programme « ROSACES » et en explique les principes. Il sera suivi d’un autre article qui sera la deuxième partie de ma page sur la programmation graphique en C sur Apple II, et qui proposera une implémentation en C de ROSACES.

Continuer la lecture de « De belles rosaces en BASIC Applesoft »

Programmez en BBC BASIC sur un ordinateur moderne

Je vais vous présenter aujourd’hui un dialecte BASIC qui présente plusieurs caractéristiques intéressantes ; le BBC BASIC.

La caractéristique la plus étonnante est sa longévité. La première version de BBC BASIC date de 1981. Elle était installée sur l’ordinateur personnel BBC Micro, peu connu en France mais qui a eu un certain succès en Angleterre.

BBC Micro livré avec son BBC Basic

Le langage a évolué depuis, mais il est toujours possible de programmer en BBC BASIC sur un ordinateur moderne, que ce soit un PC sous Windows ou sous Linux, un Mac, ou avec un Raspberry Pi. Nous verrons un exemple de programme plus loin dans cet article.

Les autres caractéristiques intéressantes du BBC BASIC sont :

  • Sa rapidité d’exécution, ce qui était important dans les années 80s compte-tenu de la faible puissance des machines. Ceci est moins critique aujourd’hui, du moins pour les applications courantes.
  • Un langage évolué, avec un jeu d’instructions riche et notamment la possibilité de définir de vraies procédures.
  • Le nombre de plateformes pour lesquelles le BBC a été porté !

Nous allons voir dans cet article comment programmer en BBC BASIC en mode texte, sous Windows.

Continuer la lecture de « Programmez en BBC BASIC sur un ordinateur moderne »

Premiers pas avec PC-BASIC sur un PC sous Windows

J’ai publié en 2020 un article donnant des solutions pour programmer en GW-BASIC sur un ordinateur moderne. L’une des deux solutions consiste à utiliser le logiciel PC-BASIC. Ce logiciel de qualité est disponible sous Windows, Linux et MacOS.

Ayant reçu plusieurs commentaires de personnes ayant eu des problèmes d’installation et de configuration de PC-BASIC, je vais détailler dans cet article la procédure pour une utilisation avec un PC sous Windows.

Continuer la lecture de « Premiers pas avec PC-BASIC sur un PC sous Windows »

Un jeu d’aventure bien aligné ou justifié

Il est important de bien soigner la présentation de vos jeux d’aventures. Si vous n’y prenez garde, vous risquez de retrouver cela :

Une présentation bof, qui n’incite pas à poursuivre l’aventure.

Pas très lisible, n’est-ce pas ? (on peut même dire que c’est moche). Les mots sont coupés au delà de la 40ème colonne, sans tenir compte des règles usuelles de présentations des documents.

Dans cet article, nous allons voir comment afficher un texte avec un alignement à gauche, sans couper les mots, ou un alignement justifié. Avec une subroutine en BASIC !

Continuer la lecture de « Un jeu d’aventure bien aligné ou justifié »