Magazine High tech

Jeu textuel : Les arbres binaires et le SQLite

Publié le 22 décembre 2014 par Janvianoce

Re.

Dans l’article précédent, j’ai parlé de ce jeu iOS de type aventure textuelle que je suis en train de programmer.

On a notamment parlé de l’implémentation d’une base SQLite contenant le chemin de l’aventure.

Pourquoi ce choix ? Parce que je n’en vois actuellement pas vraiment d’autre, mais laissez-moi évoquer brièvement l’architecture simplifiée du bazar.

Le jeu fonctionne en courtes saynettes.

Une description d’un évènement, puis deux choix, chacun de ces choix menant à une autre saynette, jusqu’à une des fins du jeux.

Le meilleur moyen de se représenter la progression scénaristique du jeu est d’imaginer un arbre binaire, comme ci-dessous.

binaryTree

Le début du jeu est le sommet de l’arbre. Une des fins, une des extrémités.

Cela complexifie énormément le scénario, mais le code est extrêmement simple.

Commençons par la base SQLite. Ici, point de relations entre tables ou autres concepts compliqués. Je vais encore une fois faire gueuler les puristes, et certainement à raison, et je serais par ailleurs ravis que vous m’en fassiez part dans les commentaires.

J’ai une table, une seule et unique dans ma base.

Cette table comporte plusieurs colonnes.

Une colonne sert d’identifiant de la saynette en cours. Son identifiant est tiré du nom du choix précédent, sans espaces ni caractères spéciaux.

Une colonne indique le texte qui sera affiché décrivant la saynette.

Une colonne indique un premier choix, une autre le deuxième choix.

Enfin, il reste deux colonnes, qui indiquent si oui ou non tel choix a été utilisé par le joueur, afin de tracer son cheminement.

J’ajouterai également plus tard une colonne “image” comportant le nom de fichier de l’image de background de la saynette.

Ce qui fait qu’au chargement du jeu, j’envoie une requête SQL où je cherche une entrée avec l’ID “start”. Cette entrée m’affichera la description de la saynette de départ, ainsi que le texte de chaque bouton.

Si je clique sur un bouton, j’utilise le texte dudit bouton, dont j’enlève les espaces et les caractères spéciaux et je fais ma requête SQL en utilisant le résultat, puisque ce résultat correspondra forcément à l’ID d’une des entrées de ma base.

L’algorithme fonctionne. Je suis à présent en train de rentrer les éléments scénaristiques au sein de la base SQL afin d’avoir un cheminement cohérent.

Pour chaque entrée que je crée, j’utilise les colonnes qui indiquent si tel ou tel bouton a été cliqué, et je les remplis manuellement afin de savoir où j’en suis, afin de boucher les trous et d’obtenir un cheminement sans anicroches.

Je me dis que schématiser ceci pourrait aider, mais je crois que c’est juste impossible à représenter dans sa globalité si ce n’est en faisant de simples multiplications :

Ici, 1x2choix = 1 description donne lieu à deux choix.

Un de ces choix est à nouveau représenté par 1x2choix. Etc, etc.

Et autant d’entrées à remplir et à tracer dans la base SQL.

1 x 2 choix

=

1x2choix + 1x2choix

=                 =

1x2choix + 1x2choix + 1x2choix + 1x2choix

=                  =                    =                  =

1x2choix + 1x2choix + 1x2choix + 1x2choix + 1x2choix + 1x2choix + 1x2choix + 1x2choix

Crois-moi, poto, on va bien rigoler.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Janvianoce 247 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte