program echelle;

uses graph,crt;
var v,p,x,y,a,b,pilote,mode,c,k:integer;   (*c= couleur du pion choisie par l'usager, k=couleur pion*)
    r:char;
    n:string;    (*k=couleur du pion*)  (*p=pointage, x=option choisie, x,y=coordonnee*)


    Procedure accueil;
    begin
      cleardevice;   (*Nettoie l''ecran*)
      setbkcolor(15);  (*fond decran de couleur blanc*)
      setcolor(4);(*police de couleur verte*)
      settextstyle(3,0,4);(*police SansSerifFont, direction horizontale, grandeur 4*)
      outtextxy(100,100,'JEU: SERPENT ET ECHELLE');
      settextstyle(4,0,2);  (*Police Gothic, direction horizontale, grandeur 2*)
      outtextxy(200,150,'Version questionnaire');
      settextstyle(3,0,3);
      setcolor(1);   (*noms de couleur bleu*)
      outtextxy(100,200,'PAR: Jordan Collard et Gabrielle Germain');
      Settextstyle(3,0,2);
      outtextxy(120,250,'PESEZ SUR ENTREE POUR COMMENCER');
      setcolor(6);
      setlinestyle(0,$c3,1);
      line(25,50,25,150);(*echelle branche gauche*)
      line(50,50,50,150); (*echelle branche droite*)
      line(25,65,50,65);  (*barres de l'echelle*)
      line(25,80,50,80);
      line(25,95,50,95);
      line(25,110,50,110);
      line(25,125,50,125);
      line(25,140,50,140);
      sound(264);
      delay(500);
      sound(297);
      delay(500);
      sound(330);
      delay(500);
      sound(352);
      delay(500);
      sound(396);
      delay(500);
      sound(440);
      delay(500);
      sound(495);
      delay(500);
      sound(528);
      delay(1000);
      nosound;   (*fin de la chanson de debut*)
      settextstyle(0,0,1);
      readln;    (*permet de voir la procedure a lecran*)
      end;

Procedure reglements; (*instructions du jeu*)

begin
cleardevice;
setbkcolor(14);
setcolor(4);
outtextxy(100,50,'Quel est votre nom?');
readln(n);
outtextxy(100,90,'Bonjour '+n +'!');
delay(500);
outtextxy(100,135,'Voici le deroulement du jeu:');
outtextxy(25,160,'1.Vous devez repondre a la question posee');
outtextxy(25,180,'2.Chaque bonne reponse vaut 1 point ou 2, dependamment de la difficulte');
outtextxy(25,200,' Chaque point vous fait avancer d''une case');
outtextxy(25,220,'3.Si votre reponse est fausse, vous restez a la meme case');
outtextxy(25,240,'4. Vous devez vous rendre a la derniere case avant la fin des questions');
outtextxy(25,260,'5. Si vous reussissez, vous gagnerez, sinon, vous perdrez');
outtextxy(25,280,'6. Si vous arrivez a un serpent, vous descendez');
outtextxy(25,300,'7. Si vous arrivez a une echelle, vous montez!');
outtextxy(25,320,'Meme si vous arrivez a la derniere case, vous devez repondre a toutes les ');
outtextxy(25,330,'questions afin d''accumuler le plus de points possibles!');
outtextxy(25,350,'8. Il y a 10 questions au total');
outtextxy(200,390,'BONNE CHANCE '+n+'!');
readln;
end;

Procedure pion; (*choisir la couleur du pion*)
begin
cleardevice;
setbkcolor(5);
setcolor(15);
outtextxy(50,50,n+' , choisissez la couleur de votre pion...');
outtextxy(50,100,'Vous avez le choix entre...');
outtextxy(50,150,'1. Rouge');
outtextxy(50,170,'2. Gris');
outtextxy(50,190,'3. Magenta');
readln(c); (*choix de la couleur*)

if (c=1) then k:=4    (*rouge*)
else
if (c=2) then k:=7    (*gris*)
else
if (c=3) then k:=5;   (*magenta*)

x:=225;  (*Pour s'assurer que le pion soit sur la case depart*)
y:=325;

end;

Procedure emplacement; (*pour mettre pion au bon endroit sur la planche de jeu*)

Begin

    case v of

    0: begin
       x:=225;
       y:=325;
       end;

    1: begin
       x:=275;
       y:=325;
       end;

    2:  begin
       x:=325;
       y:=325;
       end;

    3:  begin
       x:=375;
       y:=325;
       end;

    4: begin
       x:=375;
       y:=275;
       end;

    5:  begin
       x:=325;
       y:=275;
       end ;

    6:  begin
       x:=275;
       y:=275;
       end;

    7:  begin
       x:=225;
       y:=275;
       end;

    8:  begin
       x:=225;
       y:=225;
       end ;

    9:  begin
       x:=275;
       y:=225;
       end;

    10:  begin
       x:=325;
       y:=225;
       end ;

    11:  begin
       x:=375;
       y:=225;
       end;

    12:  begin
       x:=375;
       y:=175;
       end;

    13:  begin
       x:=325;
       y:=175;
       end ;

    14:  begin
       x:=275;
       y:=175;
       end;

    else

    begin
       x:=225;
       y:=175;
       end;
    end;


end;


procedure question1;

begin
     repeat
     cleardevice;
     setbkcolor(7); (*couleur de fond pour questions a 2 points*)
     setcolor(5);   (*couleur de police a 2 points*)
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 1:');
     delay(50);
     outtextxy(70,45,'Qui est le capitaine des Canadiens de Montreal? (2 points)');
     delay(50);
     outtextxy(75,60,'a) Koivu');
     outtextxy(75,75,'b) Gionta');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r); (*permet de lire le choix de reponse selectionnee*)

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+2;  (*pointage*)
         v:=v+2;  (*emplacement du pion*)
         end;

     else

       begin
       sound(341);     (*Son pour une mauvaise touche*)
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question2;

begin
     repeat
     cleardevice;
     setbkcolor(2); (*fond vert pour les questions a 1 point*)
     setbkcolor(0); (*police blanche pour les questions a 1 point*)
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 2:');
     delay(50);
     outtextxy(70,45,'Combien de litres de sang y a t-il dans le corps humain? (1 point)');
     delay(50);
     outtextxy(75,60,'a) 10 L');
     outtextxy(75,75,'b) 5 a 6 L');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+1;
         v:=v+1;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question3;

begin
     repeat
     cleardevice;
     setbkcolor(7);
     setcolor(5); 
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 3:');
     delay(50);
     outtextxy(70,45,'Qui est l''homme qui court le plus vite au monde?(2 points)');
     delay(50);
     outtextxy(75,60,'a) Regis K.N Zi'); (*A verifier*)
     outtextxy(75,75,'b) Usan Bolt');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+2;
         v:=v+2;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question4;

begin
     repeat
     cleardevice;
     setbkcolor(2);
     setbkcolor(0);
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 4:');
     delay(50);
     outtextxy(70,45,'Quelle est la tour tres celebre qui se situe a Paris?(1 point)');
     delay(50);
     outtextxy(75,60,'a) La tour de Pise');
     outtextxy(75,75,'b) La tour Eiffel');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+1;
         v:=v+1;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question5;

begin
     repeat
     cleardevice;
     setbkcolor(7);
     setcolor(5);
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 5:');
     delay(50);
     outtextxy(70,45,'Ou sont situees les plus grandes pyramides? (2 points)');
     delay(50);
     outtextxy(75,60,'a) Mexique');
     outtextxy(75,75,'b) Egypte ');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+2;
         v:=v+2;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question6;

begin
     repeat
     cleardevice;
     setbkcolor(2);
     setbkcolor(0);
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 6:');
     delay(50);
     outtextxy(70,45,'Qui est le Premier Ministre du Canada?(1 point)');
     delay(50);
     outtextxy(75,60,'a) Jean Charest');
     outtextxy(75,75,'b) Stephen Harper');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+1;
         v:=v+1;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question7;

begin
     repeat
     cleardevice;
     setbkcolor(2);
     setbkcolor(0);
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 7:');
     delay(50);
     outtextxy(70,45,'Qui est le superheros surnomme le chevalier noir? (1 point)');
     delay(50);
     outtextxy(75,60,'a) Superman');
     outtextxy(75,75,'b) Batman');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+1;
         v:=v+1
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question8;

begin
     repeat
     cleardevice;
     setbkcolor(7);
     setcolor(5); 
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 8:');
     delay(50);
     outtextxy(70,45,'Qui sont les premiers qui ont decouvert l''amerique?(2 points)');
     delay(50);
     outtextxy(75,60,'a) Christophe-Colomb');
     outtextxy(75,75,'b) Les Vikings');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+2;
         v:=v+2;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question9;

begin
     repeat
     cleardevice;
     setbkcolor(2);
     setbkcolor(0);
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 9:');
     delay(50);
     outtextxy(70,45,'Quel est le film qui a fait le plus d''argent?(1 point)');
     delay(50);
     outtextxy(75,60,'a) Titanic');
     outtextxy(75,75,'b) Avatar');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+1;
         v:=v+1;
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

procedure question10;

begin
     repeat
     cleardevice;
     setbkcolor(7);
     setcolor(5); 
     settextstyle(2,0,5);
     outtextxy(70,30,'Question 10:');
     delay(50);
     outtextxy(70,45,'Quelle est la capitale de la Thailande?(2 points)');
     delay(50);
     outtextxy(75,60,'a) Tokyo');
     outtextxy(75,75,'b) Bangkok');
     outtextxy(70,90,'Faites votre choix et pesez sur ENTREE:');
     readln(r);

     case r of

     'a': outtextxy(70,115,'MAUVAISE REPONSE!');
     'b':
         begin
         outtextxy(70,115,'BONNE REPONSE!  ');
         p:=p+2;
         v:=v+2
         end;

     else

       begin
       sound(341);
       delay(1500);
       nosound;
       outtextxy(70,115,'VEUILLEZ CHOISIR A OU B SEULEMENT.');
       outtextxy(70,125,'PESEZ SUR ENTREE POUR RECOMMENCER');
       readln;
       end;

     end;

     until (r='a') or (r='b');
     emplacement;

     readln;
     end;

Procedure planche;
begin
cleardevice;
setbkcolor(0);
setcolor(15);
line(200,150,200,350);  (*lignes de la planche*)
line(250,150,250,350);
line(300,150,300,350);
line(350,150,350,350);
line(400,150,400,350);
line(200,150,400,150);
line(200,200,400,200);
line(200,250,400,250);
line(200,300,400,300);
line(200,350,400,350);
setfillstyle(1, green);
fillellipse(375,250,5,35); (*serpent*)

line(265,175,220,275); (*echelle*)
line(285,175,240,275);
line(255,195,275,195);
line(246,215,266,215);
line(237,235,257,235);
line(228,255,248,255);

settextstyle(2,0,20);
outtextxy(150,50,'Planche de jeu');  (*titre de la page*)

settextstyle(2,0,2);
outtextxy(210,340,'DEPART');
outtextxy(210,190,'ARRIVEE');


if (x=375) and (y=225) then
begin
setfillstyle(10,k);
fillellipse(375,225,15,15);
outtextxy(100,100,'Vous etes sur le serpent! Vous allez redescendre...');
setfillstyle(1,k);
fillellipse(375,275,15,15);
v:=4
end

else

if (x=225) and (y=275) then   (*echelle*)
begin
circle(225,275,15);
outtextxy(100,100,'Vous etes sur l''echelle! Vous montez! Bravo!');
setfillstyle(1,k);
fillellipse(275,175,15,15);
v:=14
end

else

setfillstyle(1,k);
fillellipse(x,y,15,15);

readln;
end;

Procedure fin;     (*nous ne sommes plus en mode graphique*)
begin
clrscr;
gotoxy(200,100);
writeln('FIN DE LA PARTIE!');
Gotoxy(50,150);
writeln('Vous avez ', p,'points');
if (x=225) and (y=175) then
   begin
   gotoxy(100,200);
   writeln('Vous avez gagne!');
   end
else
   begin
   gotoxy(100,250);
   writeln('Vous avez perdu!');
   end ;

gotoxy(200,200);
writeln('Si vous voulez quitter, appuyez sur e');
writeln('Si vous voulez rejouer, appuyez sur n''importe quelle touche');
readln(r);

end;

procedure aurevoir;(*Au revoir a l''usager avant de sortir*)
begin
clrscr;
gotoxy(100,200);
writeln('Au revoir ', n);
readln;
end;

 begin
     repeat
     Pilote:=Detect;
     Initgraph(Pilote,Mode,'m:/bgi');
     cleardevice;
     p:=0;
     a:=0;
     v:=0;
         accueil;
         reglements;
         pion;
         planche;
         Question1;
         planche;
         Question2;
         planche;
         Question3;
         planche;
         Question4;
         planche;
         Question5;
         planche;
         Question6;
         planche;
         Question7;
         planche;
         Question8;
         planche;
         Question9;
         planche;
         Question10;
         planche;
         closegraph;
         fin;
         until (r='e');
         aurevoir;
  end.