Conseils Architecture JAVA
Bonjour,
Je suis sur un projet perso de création de livre-jeu en JAVA.
(Pour ceux qui était adolescent dans les années 80-90 :) c'était très à la mode.)
Actuellement j'ai une architecture qui marche, mais je voudrais quelque chose de plus propre.
En gros une Aventure est composée de Paragraphe.
Chaque paragraphe est composé de choix.
Par exemple au paragraphe 1 on a le choix d'aller au paragraphe 4 ou 8 ou 10 ...
Parfois les choix sont associés à des conditions, par exemple il faut absolument avoir le collier en dents de crocodile pour ne pas se faire tuer par la tribu cannibale :)
Et les paragraphes sont associés à des actions : par exemple gagner 10 pièces d'or, ajouter une épée à la liste d'objet etc ...
Actuellement j'ai un tableau pour coder les transitions c'est à dire toutes les possibilités de passer d'un paragraphe à un autre, j'ai un autre tableau pour les chaines de caractères :
Si vous allez chercher votre lanterne pour qu'elle vous aide à voir ce dont il s'agit, rendezvous
au 4. Si vous préférez vous avancer dans l'obscurité, rendez-vous au 8. Si vous jugez
inutile ou imprudent de vous intéresser à ce bruit, vous placez le bâtonnet d'encens sous
une patte du Chat des Monts Brumeux et retournez à la Ruche vous coucher : rendez-vous
au 10.
je code toutes les transitions possibles dans une fonction
Code:
1 2 3 4 5
| public void initTransitions()
m_transitions[1][0] = 4;
m_transitions[1][1] = 8;
m_transitions[1][2] = 10; |
Je regarde si elles sont valides dans une autre ...
Code:
1 2 3 4 5 6 7 8
| public boolean validTransition(Pair transition)
{
if ( transition.equals( 71, 86 ) )
if ( !VAR_PREMIER)
return false;
if ( transition.equals( 71, 92 ) )
if ( VAR_PREMIER)
return false; |
J'ai les chaines de caractères dans une autre fonction ...
Code:
1 2 3 4 5 6 7 8
| public void initButtonLabel()
{
m_buttonLabel[0][0] = "Commencer l'aventure.";
m_buttonLabel[1][0] = "Vous allez chercher votre lanterne pour qu'elle vous aide à voir ce dont il s'agit. ";
m_buttonLabel[1][1] = "Vous préférez vous avancer dans l'obscurité. ";
m_buttonLabel[1][2] = "Vous jugez inutile ou imprudent de vous intéresser à ce bruit, vous placez le bâtonnet d'encens sous" +
"une patte du Chat des Monts Brumeux et retournez à la Ruche vous coucher."; |
Et puis les actions dans une quatrième :
Code:
1 2 3 4 5 6 7
| public void move(int choice)
{
int next = m_transitions[m_current][choice];
setSection(next);
// @31 Notez le code Gris
if (m_current == 31) CODE_GRIS = true; |
Je voudrais regrouper ça de façon à ne pas avoir à aller chercher à 4 endroits différents dans le code à chaque fois que je dois coder un paragraphe. Parce que pour cette aventure, j'ai plus de 500 paragraphes ...
Donc faire une classe paragraphe, mais j'ai besoin de code spécifique pour chaque paragraphe, je dois coder l'action à faire quand j'arrive au paragraphe, je dois pouvoir ajouter des choix et des conditions liés à ces choix ...
Voila, si cela inspire quelqu'un :)