Version Electronique d'AVH
#1
Bonjour à tous,

Je suis en train de programmer un moteur pour visualiser des AVH.
Comme la dernière AVH que j'ai lue est celle d'Outremer et qu'il n'y a pas de combats ni de trucs trop compliqués, je m'en sers comme première aventure pour tester mon moteur.

Je me suis vraiment cassé la tête pour avoir une architecture qui soit simple et intuitive.
Voila le code des premiers paragraphes de l'aventure:
Il faut juste ajouter les paragraphes dans des fichiers html et le reste est gérer tout seul ...

Voila le résultat :
https://www.youtube.com/watch?v=E0_GtvXAa8A&feature=youtu.be

Bon maintenant, je vais essayer d'améliorer le rendu graphique.
Je suis retombé sur le travail d'Ours bondissant que je n'avais pas vu depuis plusieurs années.
Je vais tenter de faire quelque chose de ressemblant.
Le but est d'arriver à faire quelque chose de suffisamment simple pour qu'il soit utilisé par d'autres personnes que moi ...

D'ailleurs Outremer ne m'a pas répondu Sad
Je ne sais pas si il est en vacances ou si il a raté mon mail, si il passe par là ...

Code :
    public void move(int choice)
    {            
        int next = m_transitions.findNext(choice);
        
        setCurrent(next);
        getListTransition().getList().clear();
        
        if (m_current == 0)
        {
            addTransition(1,"Commencer l'aventure.");
        }
        
        if (m_current == 1)
        {
            addTransition(4,"Vous allez chercher votre lanterne pour qu'elle vous aide à voir ce dont il s'agit. ");
            addTransition(8,"Vous préférez vous avancer dans l'obscurité. ");
            addTransition(10,"<html>Vous jugez inutile ou imprudent de vous intéresser à ce bruit, vous placez le bâtonnet d'encens sous <br>" +
                    " une patte du Chat des Monts Brumeux et retournez à la Ruche vous coucher.</html>");    
        }
        
        if (m_current == 2)
        {
            addTransition(47);
        }
        
        if (m_current == 3)
        {
            addTransition(18,"Les gens qui l'entouraient ?");
            addTransition(25,"Son apparence physique ?");
            addTransition(34,"Les vêtements qu'elle portait ?");
        }
        
        if (m_current == 4)
        {
            addTransition(21,"Vous vous dirigez sans attendre dans cette direction.");
            addTransition(31,"Vous jugez préférable avant cela de déposer votre lanterne au sol.");
        }
        
        if (m_current == 5)
        {
            addTransition(436,"Vous allez jusqu’au lit en rampant.");            
            addTransition(447,"Vous pouvez aussi ne vous approcher que légèrement, puis faire glisser avec adresse l’anneau sur le plancher pour qu’il atteigne l’endroit voulu.");
        }
        
        if (m_current == 6)
        {
            addTransition(29,"Vous acceptez l'offre de la princesse Niahi.");            
            addTransition(216,"Vous la déclinez poliment, elle vous souhaite bonne chance pour l'avenir avant d'appeler" +
                    "sa servante pour qu'elle vous reconduise à l'extérieur du palais. La soirée est encore jeune et" +
                    "vous vous hâtez de chercher un lieu animé où vous pourrez en profiter au mieux.");
        }        
        
        if (m_current == 7)
        {
            addTransition(22,"Vous la saisissez");            
            addTransition(150,"Vous préférez y renoncer");            
        }
        
        if (m_current == 8)
        {
            addTransition(15,"Vous voulez vous diriger sur votre droite, où se trouve une caserne de gardes.");            
            addTransition(26,"Vous voulez vous diriger tout droit, vers le bâtiment où réside le ministère de la marine.");            
            addTransition(31,"Vous vous dirigez sur votre gauche, vers le jardin qui borde le côté nord de la cour.");            
        }
        
        if (m_current == 9)
        {
            addTransition(117,"Le pouvoir.");            
            addTransition(132,"L’argent.");            
            addTransition(155,"La popularité.");            
            addTransition(184,"La beauté.");            
            addTransition(226,"L’ambition.");            
            addTransition(283,"L’ordre.");            
            addTransition(455,"La connaissance.");            
            addTransition(469,"La prudence.");
        }
        
        if (m_current == 10)
        {
            addTransition(65);
        }
        
        if (m_current == 15)
        {
            addTransition(10);
        }
        
        if (m_current == 26)
        {
            addTransition(10);
        }
        
        if (m_current == 21)
        {
            addTransition(10);
        }
        
        if (m_current == 31)
        {
            addVar( "CODE_GRIS" );
            
            addTransition(37,"Vous pouvez vous rapprocher du temple,");
            addTransition(44,"attendre où vous êtes de voir ce qui va se passer.");
            addTransition(51,"ou juger que vous avez pris bien assez de risques et regagner la Ruche au plus vite.");
        }
        
        if (m_current == 44)
        {
            addTransition(10);            
        }
        
        if (m_current == 51)
        {
            addTransition(10);            
        }

        if (m_current == 65)
        {
            addTransition(71,"Vous commencez par Briseur de Lance");            
            addTransition(77,"Vous commencez par Pieds Sombres");            
            addTransition(82,"Vous commencez par Étoiles d'Encre");
        }

        if (m_current == 71)
        {
            addTransition(86);
            addTransition(92);
            
            if ( ( m_visited[77] == 0 ) && ( m_visited[82] == 0 ) )
                singleTransition(86);
            else
                singleTransition(92);
        }
        
        if (m_current == 77)
        {
            addTransition(97);
        }
        
        if (m_current == 82)
        {
            addTransition(141,"Vous essayez d’avoir son opinion sur l’arrivée prochaine des trois princes");
            addTransition(146,"Vous êtes plutôt curieuse de ce qu’il a pu récemment lire dans les étoiles");
        }
        
        if (m_current == 86)
        {
            addTransition( 102 );
            addTransition( 107 );
            
            if ( getVar("CODE_GRIS") )
                singleTransition(102);
            else
            {
                singleTransition(107);
            }
                
        }
        
        if (m_current == 92)
        {
            addTransition( 111 );
        }
        
        
        if (m_current == 97)
        {
            addTransition(133,"Vous demandez à Pieds Sombres ce qu’elle pense de l’arrivée très prochaine des trois princes");
            addTransition(138,"Vous préférez l’interroger au sujet de la santé de l’empereur, qui est notoirement mauvaise depuis plusieurs mois");
        }
        
        if (m_current == 102)
        {
            addTransition(111,"Vous parlez à Briseur de Lance de ce que vous avez observé hier soir");            
            addTransition(121,"Vous préférez vous abstenir");            
        }
        
        if (m_current == 107)
        {
            addTransition(111,"Continuer.");            
        }
        
        if (m_current == 111)
        {
            addTransition(20,"Continuer.");    
            addTransition(71,"Vous pouvez vous occuper du petit déjeuner de Briseur de Lance");            
            addTransition(77,"Vous pouvez vous occuper du petit déjeuner de Pieds Sombres");            
            addTransition(82,"Vous pouvez vous occuper du petit déjeuner d'Étoiles d'Encre");    
            
            if ( visited(71) )
                disableTransition(71);
            
            if ( visited(77) )
                disableTransition(77);
            
            if ( visited(82) )
                disableTransition(82);
            
            if ( ! ( visited(71) && visited(77) && visited(82) ) )
                disableTransition(20);
        }
        
        if (m_current == 121)
        {
            addTransition(111);
            
            addVar("CODE_ACIER");
        }
        
        if (m_current == 133)
        {
            addTransition(111);
        }
        
        if (m_current == 138)
        {
            addTransition(111);
        }
        
        if (m_current == 141)
        {
            addTransition(111);
        }
        
        if (m_current == 146)
        {
            addTransition(111);
        }        
    }
Répondre
#2
Bonjour,

J'ai regardé la vidéo et ça paraît pas mal. Il y a peut-être une chose qui pourrait être améliorée : à 2min14, on voit deux fois le bouton Continuer. L'un correspond a priori au cas "vous possédez le code gris", et l'autre au cas contraire. Le problème vient peut-être de :

addTransition( 102 );
addTransition( 107 );

if ( getVar("CODE_GRIS") )
singleTransition(102);
else
{
singleTransition(107);
}

la fonction singleTransition annulle-t-elle les deux addTransition ? Et les deux appels addTransition sont-ils nécessaires ? Parce que finalement, dans tous les cas, il y aura bien une unique transition possible, traitée correctement dans le if-else.
Fan de Garcimore
Répondre
#3
Hello,

Normalement le bug a du être corrigé depuis dans la dernière version Smile
singleTransition, c'est qu'il n'y a qu'une transition solitaire comme son nom l'indique, donc on désactive toutes les transitions sauf celle entre parenthèse, c'est un raccourci pour éviter d'écrire plusieurs disableTransition ...
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)