/****************************************************************/
/* Conte pour enfant vers 1.0                                   */
/* adapté de C. Perrault (GPL litterature)                      */
/*                                                              */
/* Licence :                                                    */
/* This program is freely distributable without licensing       */
/* fees  and is provided without guarantee or warrantee         */
/* expressed or  implied. This program is in the public domain. */
/****************************************************************/

#include <time.h>
#include " moralité.h"
#include " préchi-précha.h "

#define NB_CHASSEURS 10
#define TEMPS_MIS_PAR_LE_LOUP 0.01 // en sec. sous Windows

class Grand_Mère;
class Mère : public Grand_Mère;

/* Le Chaperon Rouge */
class Chaperon_Rouge : public Mère
{
friend Grand_Mère;
public :
    Chaperon_rouge ();
    ~Chaperon_Rouge ();
    void musarder (clock_ t &);
    void toquer_à_la_porte () {};
    void Que_vous_avez_de_grands_bras ();
    void Que_vous_avez_de_longues_jambes ();
    void Que_vous_avez_de_grandes_oreilles ();
    void Que_vous_avez_de_grands_yeux ();
    void Que_vous_avez_de_grandes_dents ();
    void livre_petit_pot_de_beurre_et_galette ();
private :
    Beurre Petit_Pot;
    Galette;
};

// Constructeur
Chaperon_rouge::Chaperon_Rouge ()
{
    Il _était_une_fois_une_petite_fille_de_Village ();
    Sa_mère_lui_fit_un_petit_chaperon_rouge ();
    Petit_Pot = plein_de_beurre;
    Galette = y_a_bon ;
}

// Destructeur
Chaperon_Rouge::~Chaperon_Rouge ()
{
    Finis_dans_le_ventre_du_Loup ();
}

void Chaperon_rouge::musarder (clock_ t &time_chaperon_rouge)
{
    try
    {
        while (
        s_amuser_à_cueillir_des_noisettes_à_courir_après_des papillons_et_à_faire_des_bouquets()==true)
        {
           continue;
        }
    } // elle en a marre, a fini
    catch (...)
    {
        // temps = random valeur au hasard entre 0. et 1. (en sec)
        time_chaperon_rouge = (clock_t) ((double) rand () / (double) (RAND_MAX+1));
    }
}

void Chaperon_rouge::Que_vous_avez_de_grands_bras ()
{
    C_Est_Pour_mieux_T_Embrasser_Ma_Fille ();
}

void Chaperon_rouge::Que_vous_avez_de_longues_jambes ()
{
    C_Est_Pour_Mieux_Courir_Mon_Enfant ();
}

void Chaperon_rouge::Que_vous_avez_de_grandes_oreilles ()
{
    C_Est_Pour_Mieux_Ecouter_Mon_Enfant ();
}

void Chaperon_rouge::Que_vous_avez_de_grands_yeux ()
{
    C_Est_Pour_Mieux_Te_Voir_Mon_Enfant ();
}

void Chaperon_rouge::Que_vous_avez_de_grandes_dents ()
{
    Loup::C_Est_Pour_Mieux_Te_Manger ();
}

void Chaperon_rouge::livre_petit_pot_de_beurre_et_galette ()
{
    Gran_Mère::Set_Livrée_A_Domicile ();
}

/* Le Loup */
class Loup
{
public :
    Loup ();
    ~loup ();
    void Indiquer_Raccourci ();
    clock_t cavaler ();
    void toquer_à_la_porte () {};
    void set_Mangé_Grand_Mère (bool mangé);
    void C_Est_Pour_Mieux_Te_Manger ();
private :
    bool A_Mangé_Chaperon-Rouge, A_Mangé_Grand_Mère;
    long dents; // jx de mots !
};

// Constructeur
Loup::Loup ()
{
    A_Mangé_Chaperon_Rouge = false;
    A_Mangé_Grand_Mère = false;
}

// Destructeur
Loup::~Loup ()
{
    Tué_Par_Les_Chasseurs () ;
}

void Loup::Indiquer_Raccourci ()
{
    Prend_Ce_Chemin-Ci ();
    Je_Prend_Ce_Chemin_Là ();
}

clock_t Loup::cavaler ()
{
    return TEMPS_MIS_PAR_LE_LOUP;
}

void Loup::set_Mangé_Grand_Mère (bool mangé)
{
    A_Mangé_Grand_Mère = mangé;
}

void Loup::C_est_pour_mieux_te_manger ()
{
    A_Mangé_Chaperon_Rouge = true;
}

/* La grand mère */
class Arrière_Grand_Père;
class Arrière_Grand_Mère;

class Grand_Mère:public Arrière_Grand_Mère, Arrière_Grand_Père
{
friend Chaperon_Rouge;
public :
    Grand_Mère ();
    ~Grand_Mère ();
    void Tire_La_Chevillette ();
    void Set_Livrée_A_Domicile ();
private :
    Beurre Petit_Pot;
    Galette;
};

// Constructeur
Grand_Mère::Grand_Mère ()
{
    Petit_Pot = Galette = que_dalle;
}

// Destructeur
void Grand_Mère::~GrandMère ()
{
    Finis_dans_le_ventre_du_loup () ;
}

void Grand_Mère::Tire_La_Chevillette ()
{
    Bobinette_Cherra ();
}

void Grand_Mère::Set_Livrée_A_Domicile ()
{
    Galette = Petit_Pot = y_a_bon;
}

/* Les chasseurs */
class Chasseur {
public :
    void Tuer_Le_Loup ();
    void Sortir_Ventre_Du_Loup_Grand_Mére_Et_Chaperon_Rouge ();
private :
    fusil, couteau;
};

void Chasseur::Tuer_Le_Loup ()
{
    Utiliser (fusil) ;
}

void Chasseur:: Sortir_Ventre_Du_Loup_Grand_Mére_Et_Chaperon_Rouge ()
{
    Utiliser (couteau) ;
}

// Programme principal
void main ()
{
    Chaperon_Rouge *petit_chaperon_rouge ;
    Grand_Mère *mère_grand ;
    Loup *le_loup ;
    Chasseur *les_chasseurs;
    clock_t time_chaperon_rouge;

    /* init */

    petit_chaperon_rouge = new Chaperon_Rouge;
    mère_grand = new Grand_Mère;
    le_loup = new Loup;
    les_chasseurs = new Chasseur [NB_CHASSEURS];

    /* Début de l’histoire */

    petit_chaperon_rouge->cheminer_forêt ();
    loup->indiquer_raccourci ();
    clock_t time_ loup = loup->cavaler () ;

    /* Nœud */
    petit_chaperon_rouge->musarder (time_chaperon_rouge);

    /* test */
    if (time_loup<time_chaperon_rouge)
    {
        loup-> toquer_à_la_porte ();
        grand_mère-> Tire_La_Chevillette ();
        loup->set_ Mangé_Grand_Mère (true);
        delete grand_mère;
        petit_chaperon_rouge-> toquer_à_la_porte ();
        loup-> Tire_La_Chevillette ();
        petit_chaperon_rouge-> Que_vous_avez_de_grands_bras ();
        petit_chaperon_rouge->Que_vous_avez_de_longues_jambes ();
        petit_chaperon_rouge-> Que_vous_avez_de_grandes_oreilles ();
        petit_chaperon_rouge-> Que_vous_avez_de_grands_yeux ();
        petit_chaperon_rouge-> Que_vous_avez_de_grandes_dents ();
        loup->C_est-pour_mieux_te_manger ();
        delete petit_chaperon_rouge;

        // dénouement 1
        // adapté de Grimm (Brothers and Co)
        for (int i=0 ;i<Nb_Chasseur ; i++)
            Chasseur->Tuer_Le_Loup ();
        delete loup;
        Chasseur[0]->Sortir_Ventre_Du_Loup_Grand_Mére_Et_Chaperon_Rouge ();
        petit_chaperon_rouge = new Chaperon_Rouge;
        grand_mère = new Grand_mère;
        moralité = new moralité;
        moralité->Ne_Pas_Suivre_Un_Inconnu_Quand_On_Est_Une_Jeune_Fille_Innocente () ;
    }
    else
    {
        // dénouement 2
        // le chaperon rouge est arrivé avant le loup
        chaperon->livre_petit_pot_de_beurre_et_galette ();
        préchi-précha= new préchi-précha;
        préchi-précha->Ne_Pas_toujours_Se_Croire_Chancheuse ();

        // happy end
        delete loup ; // pour éviter une fuite mémoire
    }

    // Fin : libérer mémoire
    delete [] chasseurs;
    delete petit_chaperon_rouge;
    delete grand_mère;
    delete moralité;
}



 
Conceptuel
Sommaire