Tracking des conséquences / inventaire¶
Chaque choix que fait l'utilisateur modifie l'état du joueur (son profil), ce qui influence quelles fins ou chemins il peut atteindre.
Démo en classe de karmas et statistiques dans l'histoire "Trace ton chemin".¶
Choix parmi les systèmes de tracking des conséquences¶
Minimum 1 des 4 systèmes listés ci-dessous:
- Karma/Moralité
- Système de flags (événements déclenchés)
- Inventaire d'objets (collecte)
- Statistiques du personnage (style RPG)
1️⃣ Points de karma/moralité (++ ou --)¶
Chaque choix donne des points positifs ou négatifs.
src/stores/player.js
// Dans Pinia store
state: () => ({
karma: 0 // De -10 à +10
})
Exemple de choix dans votre json
src/data/chapters.json
[
{
text: "Sauver le chat coincé dans l'arbre",
effects: { karma: +2 }, // Bon choix
nextChapter: "ch-3"
},
{
text: "Ignorer le chat et partir",
effects: { karma: -1 }, // Mauvais choix
nextChapter: "ch-4"
}
]
// À la fin, on vérifie:
if (karma >= 5) → Fin Héroïque
if (karma <= -5) → Fin Sombre
2️⃣ Système de flags (débloque des chemins)¶
Des variables "vrai/faux" qui trackent si un événement est arrivé.
src/stores/player.js
state: () => ({
flags: {
hasMetMentor: false,
knowsTheSecret: false,
savedFriend: false
}
})
Au chapitre 2, si le joueur choisit "Parler au vieil homme":
src/data/chapters.json
{
text: "Parler au vieil homme",
effects: {
flags: { hasMetMentor: true }
},
nextChapter: "ch-3a"
}
À la fin, dans la View des chapitres (probablement chapterView)
// Ce choix apparaît SEULEMENT si hasMetMentor == true
if (playerStore.flags.hasMetMentor) {
choices.push({
text: "Demander de l'aide au mentor"
})
}
3️⃣ Inventaire d'objets (collecte)¶
Le joueur ramasse des objets qui débloquent des options.
src/stores/player.js
state: () => ({
inventory: [] // Liste vide au début
})
Chapitre 3 - Choix:`
src/data/chapters.json
{
text: "Prendre la clé rouillée",
effects: {
inventory: { add: 'clé-rouillée' }
}
}
À la fin, dans la View, dans la méthode makeChoice (vous pouvez l'avoir nommée autrement) mais dans la méthode qui applique le router vers le prochain chapitre ou vers la fin:
if (playerStore.hasItem('clé-rouillée')) {
// Peut ouvrir la porte
} else {
// Doit trouver un autre chemin
}
4️⃣ Statistiques du personnage¶
Des caractéristiques qui augmentent selon les choix.
src/stores/player.js
state: () => ({
stats: {
courage: 0,
intelligence: 0,
empathie: 0
}
})
Exemple de choix:
src/data/chapters.json
{
text: "Affronter le danger directement",
effects: {
stats: { courage: +2 }
}
}
À la fin, dans la View, dans la méthode makeChoice (vous pouvez l'avoir nommée autrement) mais dans la méthode qui applique le router vers le prochain chapitre ou vers la fin:
if (stats.courage >= 10) → Fin du Héros
if (stats.intelligence >= 10) → Fin du Sage
Exemple concret complet¶
Un exemple complet concret du système de conséquence peut-être fourni sur demande. Demandez à Marie-Michelle.
Résumé en 3 points¶
- Chaque choix modifie l'état du joueur (karma, flags, inventaire)
- L'état du joueur détermine quels chapitres/choix sont disponibles
- À la fin, l'état total décide quelle fin le joueur obtient