Présentation du nouveau système de niveaux

Le moteur du dungeon passe d’une unique carte à cinq niveaux distincts. Chaque niveau utilise le même générateur de cartes que la partie précédente, mais le nombre de chalices à récupérer est déterminé par la formule

CL=INT((LV+1)/2)
où LV représente le numéro du niveau. Ainsi, les niveaux 1 et 2 contiennent un chalice, les niveaux 3 et 4 en contiennent deux, et le niveau 5 en propose trois. Cette progression non linéaire augmente la charge de travail du joueur sans simplement ajouter un objet par niveau.

Le passage d’un niveau à l’autre se fait via un escalier placé aléatoirement dans l’une des quatre pièces d’angle. Le code de sélection utilise

EX=4*INT(RND(1)*2) : EY=4*INT(RND(1)*2)
, garantissant que l’escalier se trouve toujours dans une pièce distincte de la salle de départ. La position centrale de l’escalier est calculée avec
ROW=EY*4+4 : COL=EX*4+2
, ce qui assure une cohérence spatiale avec la grille 4×4 des pièces.

Gestion de la persistance du personnage

Contrairement à la version antérieure où chaque nouvelle partie réinitialisait le personnage, le code sépare désormais l’initialisation du joueur (INITPLAYER) de la construction du niveau (BUILDLEVEL). BUILDLEVEL réinitialise uniquement la position du joueur (PX=10 : PY=11) et les drapeaux de niveau, tout en conservant les points de vie, l’or, les clés et la magie. Cette séparation évite la perte de données lors du re‑chargement d’une carte et rend possible la progression continue du personnage à travers les niveaux.

Lorsque le joueur récupère un chalice, le compteur CL décrémente. Si le joueur tente d’entrer dans les escaliers avant d’avoir ramassé tous les chalices, le moteur renvoie le message « CHALICES LEFT » et empêche le déplacement, assurant ainsi le respect de la condition de victoire du niveau.

Mécanique de montée de niveau et calcul des statistiques

À chaque niveau franchi, le personnage gagne des points de vie proportionnels à la moitié de sa constitution :

HL=INT(STATS(2)/2) : HP=HP+HL
. La force ou la dextérité augmente alternativement grâce à l’opération bitwise LV AND 1, qui renvoie 0 pour les niveaux pairs (force) et 1 pour les niveaux impairs (dextérité). Le code
S=LV AND 1 : STATS(S)=STATS(S)+1
modifie directement l’indice du tableau STATS, simplifiant la logique de mise à jour.

L’armure (AC) est recalculée après chaque modification de dextérité :

AC=10+INT((STATS(1)-10)/2)
. Cette formule reproduit le même calcul que la version C du même jeu, garantissant une cohérence entre les implémentations.

Ajout de la magie et adaptation de l’interface

Les potions magiques augmentent la ressource MG de 50 points, plafonnée à 100 :

IF CH=42 THEN MG=MG+50:MSG$="MAGIC UP 50":GOSUB TAKEITEM
IF MG>100 THEN MG=100
. Bien que la magie ne soit pas encore consommée, le compteur est affiché dans la ligne d’état, qui a été réduite à 31 caractères sur les 40 disponibles, nécessitant une optimisation de l’espacement entre les différents indicateurs (vie, or, clés, magie, niveau).

Le système actuel montre les limites de la génération de cartes : le nombre de gobelins reste constant (3 à 6) quel que soit le niveau, et la magie n’est pas exploitable. Ces points sont identifiés comme des axes d’amélioration pour les parties suivantes.