#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é;
}