
/****************************************************************/
/* Conte pour
enfant */
/* vers 1.0 */
/* Adapté de Ch.
Perrault (1628-
/* */
/****************************************************************/
#include <time.h>
#include "moralité.h"
#include "préchi-
#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;
friend Chasseur;
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 ()
{
Grand_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-
};
// 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-
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
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;
/* Instanciation des personnages*/
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-
loup-
/* Noeud */
petit_chaperon_rouge-
/* test */
if (time_loup<time_chaperon_rouge)
{
loup-
grand_mère-
loup-
petit_chaperon_rouge-
loup-
petit_chaperon_rouge-
petit_chaperon_rouge-
petit_chaperon_rouge-
petit_chaperon_rouge-
petit_chaperon_rouge-
loup-
// dénouement 1
// adapté de Grimm (Brothers and Co)
for (int i=0 ;i<Nb_Chasseur
; i++)
Chasseur-
Chasseur[0]-
petit_chaperon_rouge =
grand_mère = new Grand_mère;
moralité
= new moralité;
moralité-
}
{
// dénouement 2
// le chaperon rouge est arrivé avant le loup
chaperon-
préchi-
préchi-
// happy end
delete loup ; // pour éviter une fuite mémoire
}
// Fin : destruction des personnages
delete [] chasseurs;
delete petit_chaperon_rouge;
delete grand_mère;
delete moralité;
}
