Program TP3;
Uses Crt, Graph;
Var a, b, c, d, e, f, g, h, i, score, rep : integer;
Var nom, r : string;

Procedure beat;     (*c"est un rythme qui sera utilise dans le prgramme*)
begin
      sound(500);            (*notes de musique*)
      delay(50);
      nosound;
      delay(500);

      sound(500);
      delay(50);
      nosound;
      delay(500);

      sound(500);
      delay(50);
      nosound;
      delay(310);

      sound(600);
      delay(50);
      nosound;
      delay(300);

      sound(600);
      delay(50);
      nosound;
      delay(320);

end;

Procedure fond_d_ecran; (*c"est le fond d"ecran qui apparait lors de la narration*)
begin
     SetBKcolor(lightcyan);  (*couleur de fond bleu-ciel*)

     SetFillStyle(1, 6);
     bar(0, 400, 640, 480);  (*ce rectangle est le sol*)

     SetFillStyle(1, green);  (*tourettes vertes comme dans mario bros*)
     bar(20, 260, 100, 400);
     bar(10, 240, 110, 260);
     bar(540, 260, 620, 400);
     bar(530, 240, 630, 260);

     setFILLstyle(6, brown);   (*style de remplissage des carres*)
     setCOLOR(brown);          (*couleur du contour*)
     bar(210, 100, 260, 150);
     bar(260, 100, 310, 150); (*rectangle suspendus comme dans mario bros*)
     bar(310, 100, 360, 150);    (*remplissage*)
     bar(360, 100, 410, 150);
     rectangle(210, 100, 260, 150);
     rectangle(260, 100, 310, 150);
     rectangle(310, 100, 360, 150);  (*contour*)
     rectangle(360, 100, 410, 150);

     setTEXTstyle(5, 0, 2);
     setCOLOR(red);
     outTEXTxy(50, 30, 'Il y etait une fois...');

end;

Procedure mario;  (*dessin de mario*)
begin

     SetFillStyle(1, 4);
     fillellipse(200, 340, 20, 35);   (*corps de mario*)

     SetFillStyle(1, 1);
     bar(190, 370, 198, 400);        (*jambes de mario*)
     bar(202, 370, 210, 400);

     SetFillStyle(1, 4);
     bar(150, 313, 250, 323);          (*bras de mario*)

     SetFillStyle(1, 12);
     fillELLIPSE(200, 290, 20, 20);     (*tete de mario*)
     line(190, 285, 195, 280);
     line(210, 285, 205, 280);
     line(195, 305, 205, 305);

     SetFillStyle(1, 4);
     bar(190, 265, 210, 275);

     SetFillStyle(1, 6);
     fillELLIPSE(200, 295, 10, 2);       (*moustache de mario*)

     SetColor(15);
     circle(200, 290, 5);               (*nez de mario*)
end;

Procedure bowser;     (*dessin de bowser*)
begin
     setFILLstyle(1, 2);
     FILLellipse(400, 310, 50, 65);   (*corps de bowser*)
     bar(365, 350, 395, 400);         (*jambes de bowser*)
     bar(405, 350, 435, 400);
     FILLellipse(350, 280, 20, 20);   (*bras de bowser*)
     FILLellipse(450, 280, 20, 20);

     setFILLstyle(1, 12);
     line(410, 215, 420, 190);
     line(420, 190, 420, 220);
     line(390, 215, 380, 190);
     line(380, 190, 380, 220);
     FILLellipse(400, 240, 30, 30);   (*tete de bowser*)
     line(390, 255, 410, 255);
     line(385, 225, 395, 235);
     line(415, 225, 405, 235);

end;

Procedure mise_en_situation;
begin
     Cleardevice;    (*efface l"ecran*)

     fond_d_ecran;   (*affiche le fond d"ecran*)

     beat;           (*delais avant l"apparition de mario*)

     mario;          (*apparition de mario*)

     beat;           (*delais avant l"apparition du texte*)

     SetColor(darkgray);      (*couleur et style du texte*)
     setTEXTstyle(0, 0, 1);
     outTEXTxy(100, 200, 'C"est moi, Mario!');       (*texte*)
     outTEXTxy(100, 220, 'Je vais a l"epicerie!');

     beat;          (*delais avant la disparition du texte*)
     beat;

     Cleardevice;     (*effacage de l"ecran*)

     fond_d_ecran;    (*redessin du fond et de mario*)
     mario;

     beat;              (*delais avant l"apparition de bowser*)
     bowser;          (*apparition de Bowser*)

     beat;     (*delais avant le texte de bowser*)


     setTEXTstyle(0, 0, 1);
     setCOLOR(darkgray);
     outTEXTxy(340, 160, 'Je suis Bowser!');      (*texte de bowser*)
     outTEXTxy(230, 180, 'Reponds a mes questions ou je te defenestrerai!');

     beat;
     beat;       (*delais avant la disparition du texte de bowser*)

     Cleardevice;   (*effacage de l"ecran*)

     fond_d_ecran;  (*redessin de bowser, de mario et du fond*)
     mario;
     bowser;

     delay(500);    (*delais avant le texte de mario*)

     setTEXTstyle(0, 0, 1);
     setcolor(darkgray);
     outTEXTxy(150, 250, 'Ok!');    (*texte de mario*)

     beat;      (*delais avant la disparition de l"ecran*)

     setfillstyle(1, red);           (*rectangle grandissant*)
     For e:=160 downto 0 do
     begin
     bar(0, 480, 640, 3*e);    (*dimensions grandissantes du rectangle*)
     sound(e);               (*son accompagnant le tout*)
     delay(10);
     nosound;
     end;

     Cleardevice;     (*effacement de l"ecran*)
     SetBKcolor(black);  (*couleur de fond noir*)
     Setcolor(white);          (*couleur de texte blanc*)
     SetTextStyle(3, 0, 2);   (*style de texte*)
     delay(1000);
     outTEXTxy(50, 100, 'Mario saura-t-il repondre aux questions de Bowser?');
     delay(2000);
     outTEXTxy(50, 150, 'Subira-t-il une mort affreuse par defenestration?');
     delay(2000);                  (*texte*)
     SetTextStyle(3, 0, 4);
     outTEXTxy(50, 200, 'Cela ne depend que de TOI.');
     delay(2000);
     SetTextStyle(3, 0, 2);
     outTEXTxy(50, 260, 'Quel est ton nom?'); (*deplacement du curseur pour que l"usager puisse voire le texte qu"il entre*)
     gotoXY(8, 20);
     readln(nom);  (*entree du nom de l"usager*)

     Cleardevice;
     SetTextStyle(3, 0, 5);
     OutTEXTxy(50, 110, nom);   (*je m"adresse a l"usager*)
     SetTextStyle(3, 0, 2);
     OutTEXTxy(50, 170, 'prepare-toi a vivre l"aventure de ta vie!');
     OutTEXTxy(50, 220, 'APPUIE SUR LE RETOUR DE CHARIOT POUR DEBUTER.');
     readln;

     setFILLstyle(2, lightblue);
     For e:=0 to 400 do
     begin                                (*cercle grandissant*)
          fillELLIPSE(320, 240, e, e);
          sound(round(e*e/100));   (*son pendant l"agrandissement*)
          nosound;
     end;


end;

Procedure intro;
begin
SetBKcolor(white);   (*fond blanc*)
Randomize;
Readln;
For d:=0 to 300 do       (*apparition de 300 cercles au hasard*)
begin
     setfillstyle(1, random(14)); (*couleur choisie au hasard*)
     c:=random(70);     (*rayon choisi au hasard*)
     fillellipse(random(640), random(480), c+10, c+10);  (*emplacement choisi au hasard*)
     sound(round(200*sin(d/5)+900)); (*son de sirene (frequence sinusoidale)*)
     delay(10);
     nosound;
end;
delay(500);
setFILLstyle(11, 8);
bar(100, 100, 540, 380);   (*rectangle o\u ecrire*)

setcolor(red);          (*texte rouge*)
setTEXTstyle(1, 0, 4);
outTEXTxy(135, 120, 'Les comissions de Mario');   (*texte*)
setcolor(blue);
setTEXTstyle(5, 0, 2);  (*style de texte*)
outTEXTxy(113, 170, 'Par Jeremie Gauthier et Geremia Massarelli');(*texte*)
setcolor(darkgray);
settextstyle(1, 0, 2);
outTEXTxy(110, 350, 'Copyright 2010');(*texte*)
Readln;

setfillstyle(8, 8);                     (*rectangle grandissant et englobant la page*)
For e:=0 to 160 do
    begin
    bar(0, 0, 640, 3*e);  (*dimensions grandissantes du rectangle*)
    sound(3*e);
    delay(5);
    nosound;       (*son pendant l"agrandissement*)
    end;
delay(1000);
end;

procedure bonne_reponse;   (*c"est ce qui s"affichera a l"ecran apres une bonne reponse*)
begin
     cleardevice;
     setBKcolor(green);       (*la couleur vert*)
     setLINEstyle(0, $c3, 3);       (*des lignes epaisses*)
     setcolor(blue);            (*des lignes bleues*)
     line(350, 120, 390, 150);
     line(390, 150, 330, 370);
     line(330, 370, 150, 250);   (*ces lignes forment un crochet pour signaler la bonne reponse*)
     line(150, 250, 175, 225);
     line(175, 225, 300, 280);
     line(300, 280, 350, 120);
     for c:=15 to 35 do
     begin                 (*ce sont devient de plus en plus aigu*)
         sound(c*c);
         delay(50);
         nosound;
     end;
     delay(300);
end;

procedure mauvaise_reponse;
begin
     cleardevice;
     setBKcolor(red);  (*ecran rouge pour signaler la mauvaise reponse*)
     setLINEstyle(0, $c3, 3);
     setcolor(blue);
     for c:=350 downto 50 do
     begin
        sound(c);  (*son qui devient de plus en plus grave pour signaler la mauvaise reponse*)
        delay(5);
        nosound;
     end;
     delay(300);
end;

procedure consignes;
begin
     cleardevice;
     setBKcolor(blue);       (*couleur du fond*)
     setTEXTstyle(1, 0, 3);  (*style du texte*)
     setcolor(white);        (*couleur du texte*)
     outTEXTxy(10, 40, 'Tu devras porter assistance a Mario en lui');
     outTEXTxy(10, 80, 'suggerant des reponses aux questions de Bowser.');
     outTEXTxy(10, 120, 'Attention : tu n"auras qu"une chance pour');
     outTEXTxy(10, 160, 'repondre a chaque question, alors reflechis');
     outTEXTxy(10, 200, 'bien! Bowser posera quinze question a notre heros,');
     outTEXTxy(10, 240, 'qui devra lui donner au moins neuf bonnes reponses');
     outTEXTxy(10, 280, 'pour assurer sa survie.');
     outTEXTxy(10, 340, 'Alors, ');
     setTEXTstyle(1, 0, 6);
     outTEXTxy(10, 365, nom);    (*je m"adresse a l"utilisateur*)
     setTEXTstyle(1, 0, 4);
     outTEXTxy(10, 430, 'ES-TU UN CAID?');  (*l"ultime question*)

     (*c"est le texte*)

     readln;   (*le jeu commence en appuyant sur le retour de chariot*)
end;

procedure question1;    (*premiere question*)
begin
     Cleardevice;   (*effacement de l"ecran*)
     setbkcolor(lightgreen);   (*fond d"ecran*)
     settextstyle(3, 0, 2);
     outtextxy(20,30,'Question 1');  (*ecriture de " question un "*)
     delay(1000);
     outtextxy(20,60,'Abraham Lincoln etait...');  (*texte de la question*)
     delay(500);  (*delais entre l"apparition des differents elements de texte*)
     outtextxy(20,120,'1. Un fameux cheval de course'); (*choix de reponse*)
     delay(500);
     outtextxy(20,180,'2. Le premier homme dans l"espace');
     delay(500);
     outtextxy(20,240,'3. Un president des Etats-Unis');
     delay(500);
     outtextxy(20,300,'4. Un personnage dans Mario Bros le film');

     gotoXY(6, 26);  (*deplacement du curseur a un endroit approprie*)
     Readln(rep);   (*lecture de la reponse*)
     If rep=3 then
        begin
             bonne_reponse;     (*si la reponse est bonne, un point est ajoute et un ecran vert est affiche*)
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;(*si la reponse est mauvaise, un ecran rouge est affiche*)
         end;
end;

procedure question2;         (*question 2*)
begin
     Cleardevice;
     setBKcolor(magenta);
     outtextxy(20,30,'Question 2');
     delay(1000);
     outtextxy(20,60,'A quel pays appartient le Groenland?');
     delay(500);
     outtextxy(20,120,'1. Le Canada');    (*texte de la question et reponses*)
     delay(500);
     outtextxy(20,180,'2. L"Icelande');
     delay(500);
     outtextxy(20,240,'3. Le Danemark');
     delay(500);
     outtextxy(20,300,'4. L"Alaska');
     gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question3;    (*question 3*)
begin

     Cleardevice;
     setcolor(white);
     setbkcolor(lightblue);
     outtextxy(20,30,'Question 3');
     delay(1000);
     outtextxy(20,60,'De quel fameux personnage provient cet enonce?');
     outtextxy(20,80,'" L"existence precede l"essence "');
     delay(500);
     outtextxy(20,120,'1. Rene Descartes');
     delay(500);
     outtextxy(20,180,'2. Jean Saul Partre');
     delay(500);
     outtextxy(20,240,'3. Stephen Harper');
     delay(500);
     outtextxy(20,300,'4. Mahatma Gandhi');
     delay(500);
     outtextxy(20,360,'5. Paul Piche');
     delay(500);
     outtextxy(20,420,'6. Jean-Paul Sartre');

     gotoXY(6, 26);
     Readln(rep);
     If rep=6 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question4;   (*question 4*)
begin

     Cleardevice;
     setbkcolor(lightgreen);
     outtextxy(20,30,'Question 4');
     delay(1000);
     outtextxy(20,60,'Qui fit, avant tout autre, le tour du monde?');
     delay(500);
     outtextxy(20,120,'1. Ferdinand de Magellan');
     delay(500);
     outtextxy(20,180,'2. Paul Giamatti');
     delay(500);
     outtextxy(20,240,'3. Vasco de Gamma');
     delay(500);
     outtextxy(20,300,'4. Amerigo Vespucci');
     delay(500);
     outtextxy(20,360,'5. Jean-Rene Dufort');

      gotoXY(6, 26);
     Readln(rep);
     If rep=1 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question5;    (*question 5*)
begin
     Cleardevice;
     setbkcolor(magenta);
     outtextxy(20,30,'Question 5');
     delay(1000);
     outtextxy(20,60,'Quelle est la capitale de la Republique Democratique du ');
     outtextxy(20,80,'Congo?');
     delay(500);
     outtextxy(20,120,'1. Matadi');
     delay(500);
     outtextxy(20,180,'2. Molepolole');
     delay(500);
     outtextxy(20,240,'3. Amsterdam');
     delay(500);
     outtextxy(20,300,'4. Kinshasa');

      gotoXY(6, 26);
     Readln(rep);
     If rep=4 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question6;
begin                         (*question 6*)
     Cleardevice;
     setbkcolor(brown);
     outtextxy(20,30,'Question 6');
     delay(1000);
     outtextxy(20,60,'Quelle appellation les amerindiens avaient-ils pour l"actuelle');
     outtextxy(20, 80, 'ville de Quebec?');
     delay(500);
     outtextxy(20,120,'1. Stadakone');
     delay(500);
     outtextxy(20,180,'2. Hochelaga');
     delay(500);
     outtextxy(20,240,'3. Kaknawaga');
     delay(500);
     outtextxy(20,300,'4. Kanesatake');

      gotoXY(6, 26);
     Readln(rep);
     If rep=1 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question7;      (*question 7*)
begin
     Cleardevice;
     SetBKcolor(13);
     outtextxy(20,30,'Question 7');
     delay(1000);
     outtextxy(20,60,'Si l"on met 4 tartes dans une boite et que');
     outtextxy(20,80,'l"on en enleve la moitie de ce nombre initial de tartes');
     outtextxy(20,100,'et que l"on remet a la suite 100/25 eme de tarte,');
     outtextxy(20,120,'combien de tartes restent-il?');
     delay(500);
     outtextxy(20,180,'1. quatre');
     delay(500);
     outtextxy(20,240,'2. six');
     delay(500);
     outtextxy(20,300,'3. zero');
     delay(500);
     outtextxy(20,360,'4. moins trois');

      gotoXY(6, 26);
     Readln(rep);
     If rep=2 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question8;    (*question 8*)
begin
     Cleardevice;
     setbkcolor(lightgreen);
     outtextxy(20,30,'Question 8');
     delay(1000);
     outtextxy(20,60,'Si j"ai dix dollard et que Paul a quinze dollards,');
     outtextxy(20,80,'qui a le plus d"argent?');
     delay(500);
     outtextxy(20,120,'1. Moi ');
     delay(500);
     outtextxy(20,180,'2. Paul');
     delay(500);
     outtextxy(20,240,'3. Chuck Norris');
     delay(500);
     outtextxy(20,300,'4. Aucune de ces reponses');

      gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question9;   (*question 9*)
begin
     Cleardevice;
     setbkcolor(cyan);
     outtextxy(20,30,'Question 9');
     delay(1000);
     outtextxy(20,60,'Si je suis au dixieme etage d"un bloc appartement et que je');
     outtextxy(20,80,'defenestre mon rival et qu"il se fait intercepeter au ');
     outtextxy(20,100,'quatre cinquiemes du chemin, quel est le nombre');
     outtextxy(20,120,'d"etages qu"il lui restait a tomber?');
     delay(500);
     outtextxy(20,180,'1. douze');
     delay(500);
     outtextxy(20,240,'2. quatorze');
     delay(500);
     outtextxy(20,300,'3. deux');
     delay(500);
     outtextxy(20,360,'4. huit');

      gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question10;
begin                   (*question 10*)
     Cleardevice;
     setbkcolor(yellow);
     outtextxy(20,30,'Question 10');
     delay(1000);
     outtextxy(20,60,'Si deux personnes sont dos a dos et qu"ils font quatre pas');
     outtextxy(20,80,'devant eux, puis qu"ils tournent a leur droite et font');
     outtextxy(20,100,'trois pas, quelle distance les separe?');
     delay(500);
     outtextxy(20,180,'1. cinq pas');
     delay(500);
     outtextxy(20,240,'2. dix pas');
     delay(500);
     outtextxy(20,300,'3. douze pas');
     delay(500);
     outtextxy(20,360,'4. deux pas');

      gotoXY(6, 26);
     Readln(rep);
     If rep=2 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question11;
begin                          (*question 11*)
     Cleardevice;
     SetBKcolor(cyan);
     outtextxy(20,30,'Question 11');
     delay(1000);
     outtextxy(20,60,'On compte, sur une ferme, un total de cent dix-huit pattes.');
     outtextxy(20,80,'Sachant qu"il y a trois fois plus de poules que');
     outtextxy(20,100,'d"ornithorinques et que la somme du nombre ');
     outtextxy(20,120,'d"ornithorinques et du nombre d"ours vaut vingt-huit, ');
     outtextxy(20,140,'combien y a-t-il de chaque animal?');
     delay(500);
     outtextxy(20,180,'1. 6 poules, 2 ornithorinque et 26 ours');
     delay(500);
     outtextxy(20,240,'2. 3 poules, 1 ornithorinque et 27 ours');
     delay(500);
     outtextxy(20,300,'3. 12 poules, 4 ornithorinques et 24 ours');
     delay(500);
     outtextxy(20,360,'4. 21 poules, 7 ornithorinques et 21 ours');

     gotoXY(6, 26);
     Readln(rep);
     If rep=2 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question12;
begin                  (*question 12*)
     Cleardevice;
     setbkcolor(lightgreen);
     outtextxy(20,30,'Question 12');
     delay(1000);
     outtextxy(20,60,'Combien d"yeux ont huit cyclopes borgnes?');
     delay(500);
     outtextxy(20,120,'1. seize');
     delay(500);
     outtextxy(20,180,'2. vingt-quatre');
     delay(500);
     outtextxy(20,240,'3. huit');
     delay(500);
     outtextxy(20,300,'4. cinq virgule six');
      gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question13;     (*question 13*)
begin
     Cleardevice;
     setbkcolor(lightblue);
     outtextxy(20,30,'Question 13');
     delay(1000);
     outtextxy(20,60,'Combien de triangles distincts y a-t-il ?');
     delay(500);
     outtextxy(20,120,'1. trois');
     delay(500);
     outtextxy(20,180,'2. six');
     delay(500);
     outtextxy(20,240,'3. douze');
     delay(500);
     outtextxy(20,300,'4. onze');
     delay(500);
     rectangle(350,120,450,220);

     line(300,220,350,220);
     line(300,220,350,220);        (*lignes dessinant la figure en question*)
     line(350,120,450,220);
     line(350,220,450,120);
     line(450,120,500,120);
     line(450,220,500,120);
     line(300,220,350,120);

      gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question14;
begin                            (*question 14*)
     Cleardevice;
     setbkcolor(lightblue);
     outtextxy(20,30,'Question 14');
     delay(1000);
     outtextxy(20,60,'Deux droites non paralleles et non gauches dans l"espace');
     outtextxy(20,80,'se croisent a combien de places?');
     delay(500);
     outtextxy(20,120,'1. un');
     delay(500);
     outtextxy(20,180,'2. trois');
     delay(500);
     outtextxy(20,240,'3. deux');
     delay(500);
     outtextxy(20,300,'4. trente-deux');

      gotoXY(6, 26);
     Readln(rep);
     If rep=1 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure question15;    (*question 15*)
begin
     Cleardevice;
     setbkcolor(lightred);
     outtextxy(20,30,'Question 15');
     delay(1000);
     outtextxy(20,60,'Quelle est la somme des angles internes d"un octogone?');
     delay(500);
     outtextxy(20,120,'1. 180 degres');
     delay(500);
     outtextxy(20,180,'2. 360 degres');
     delay(500);
     outtextxy(20,240,'3. 1080 degres');
     delay(500);
     outtextxy(20,300,'4. 1 radian');
      gotoXY(6, 26);
     Readln(rep);
     If rep=3 then
        begin
             bonne_reponse;
             score:=score+1
        end
     else
         begin
              mauvaise_reponse;
         end;
end;

procedure victoire;
begin
     cleardevice;
     delay(1000);
     setbkcolor(black);
     settextstyle(2,0,6);
     outtextxy(20,30,'Vous avez repondu correctement a soixante pourcent ou');
     outtextxy(20,50,'plus des questions de Bowser. Mario pourra donc...');
     delay(2000);

     sound(200);
     delay(500);
     nosound;
     delay(100);

     sound(300);
     delay(500);
     nosound;
     delay(100);

     sound(400);
     delay(1000);
     nosound;
     delay(200);

     settextstyle(3,0,3);
     setcolor(green+blink);
     outtextxy(100,200,'FAIRE SES COMMISSIONS!!!!!!');

     setcolor(white);
     setfillstyle(1,7);
     bar(100,260,400,400);
     setfillstyle(1,red);
     bar(100,260,400,300);
     settextstyle(3,0,2);
     setcolor(blue);
     outtextxy(200,260,'PROVIGO');
     setfillstyle(1,8);
     bar(180,330,220,400);
     setfillstyle(1,blue);
     bar(300,330,340,360);
     delay(4000);
end;

procedure defaite;
begin
     cleardevice;
     delay(1000);
     setbkcolor(black);
     settextstyle(2,0,6);
     outtextxy(20,60,'Vous avez repondu correctement a moins de soixante');
     outtextxy(20,80,'pourcent des questions de Bowser.');
     delay(3000);

     sound(150);
     delay(100);
     nosound;
     delay(100);

     sound(100);
     delay(100);
     nosound;
     delay(100);

     sound(80);
     delay(300);
     nosound;
     delay(300);

     settextstyle(3,0,8);
     setcolor(red+blink);
     outtextxy(20,200,'Defenestration!!!!');
     delay (2000);
     settextstyle(3,0,3);
     setcolor(white);
     outtextxy(100,300,'Prishh!!! (son d"une fenetre qui casse)');
     delay(4000);
end;

procedure final;
begin
closegraph;
TEXTcolor(red);
GotoXY(15, 10);
Write('En passant, votre score etait ', score, '.');
delay(3000);
GotoXY(15, 13);
Write('Si vous voulez rejouer, tapez " rejouer ". Atrement, ');
GotoXY(15, 14);
Write('entrez n"importe quelle autre chaine de caracteres.');
GotoXY(15, 15);
Readln(r);
end;

procedure au_revoir;
begin
Clrscr;
GotoXY(15, 10);
Textcolor(lightgray);
Write('Merci et au revoir, ', nom, '! ');

 GotoXY(1, 14);       (*Ceci cre/e un joli motif.*)


For f:=1 to 6 do
    begin
         For g:=1 to f*f do
         begin
              Textcolor(f*g mod 10+2);
              write('');
         end;
         Writeln;
    end;

For h:=6 downto 1 do
    begin
         For i:=1 to h*h do
         begin
              Textcolor(h*i mod 9 +3);
              write('');
         end;

    writeln;
    end;

For c:=30 to 3000 do        (*petit son amusant*)
              begin
              Sound(c);
              delay(5);  (*la frequence du son est incrementee a toutes les cinq millisecondes*)
              end;
          Nosound;

end;



Begin

Repeat

a:=detect;
InitGraph(a, b, 'M:/BGI');   (*intiation du graph*)
intro;                     (*procedure d"introduction*)
mise_en_situation;  (*procedure de mise en situation*)
consignes;     (*procedure de consignes*)
score:=0;    (*definition de la variable " score " comme nulle*)
question1;
question2;
question3;    (*execution des question*)
question4;
question5;
question6;
question7;
question8;
question9;
question10;
question11;
question12;
question13;
question14;
question15;

If score>=9 then victoire else defaite;

final;

Until r <> ('rejouer');

au_revoir;

End.