program millions; uses crt,graph; var x,y,p,a,l,f1,Pilote,mode,k:integer; q:array[1..30,1..5] of string; z:array[1..30] of char; m:array[1..30] of integer; c,r,f2,f3:char; n,b:string; s:longint; (*la premiere ligne du tableau q est la question. les 2 a 5ieme lignes sont choix de reponse*) (* Le tableau z est la reponse de la question (de A a D), et le tableau m est la constante de repetition, entre 0 et 1 *) (* s est la variable du score *) (* x est une variable pour compter les 10 questions dans un for to do *) (* y est une variable utilis‚e pour d‚signer l'‚criture des chiox de r‚ponse *) (* r est la la r‚ponse (A,B,C,D) donn‚e par l'utilisateur *) (* p est la valeur au hasard du choix de r‚ponse donn‚ par phone-a-friend *) (* q est le tableau des r‚ponses, choix de r‚ponse et de la question *) (* c est la variable entr‚e par l'utilisateur au menu principal *) (* n est le nom du participant *) (* l est le nombre de lifeline utilis‚ (max. 2) *) (* f1 est la variable (EN CHIFFRE) qui determine le choix de reponse autre que la bonne reponse dans le lifeline fifty-fifty *) (* f2 est la variable EN LETTRE *) Procedure MontantsSansFont; Begin settextstyle(3,0,1); OuttextXY(410,50,'$ 1 000 000'); OuttextXY(410,76,'$ 500 000'); OuttextXY(410,102,'$ 250 000'); OuttextXY(410,128,'$ 125 000'); OuttextXY(410,154,'$ 64 000'); OuttextXY(410,180,'$ 32 000'); OuttextXY(410,206,'$ 16 000'); OuttextXY(410,232,'$ 8 000'); OuttextXY(410,258,'$ 2 000'); OuttextXY(410,284,'$ 1 000'); End; Procedure MontantsAvecFont; Begin SetFillStyle(solidfill,lightgray); Bar(401,51,640,310); settextstyle(3,0,1); OuttextXY(410,50,'$ 1 000 000'); OuttextXY(410,76,'$ 500 000'); OuttextXY(410,102,'$ 250 000'); OuttextXY(410,128,'$ 125 000'); OuttextXY(410,154,'$ 64 000'); OuttextXY(410,180,'$ 32 000'); OuttextXY(410,206,'$ 16 000'); OuttextXY(410,232,'$ 8 000'); OuttextXY(410,258,'$ 2 000'); OuttextXY(410,284,'$ 1 000'); End; Procedure GraphBase; Begin Line(0,360,640,360); Line(400,0,400,360); Line(400,50,640,50); Line(400,310,640,310); (*Crochets gauche*); Line(0,390,30,390); Line(0,450,30,450); Line(30,390,55,365); Line(30,390,55,415); Line(30,450,55,425); Line(30,450,55,475); (*Crochet droit*) Line(610,390,640,390); Line(610,450,640,450); Line(610,390,585,365); Line(610,390,585,415); Line(610,450,585,425); Line(610,450,585,475); (*Traverses*) Line(55,365,275,365); Line(55,415,275,415); Line(55,425,275,425); Line(55,475,275,475); Line(365,365,585,365); Line(365,415,585,415); Line(365,425,585,425); Line(365,475,585,475); (*Crochets Central*) Line(300,390,275,365); Line(300,390,275,415); Line(300,450,275,425); Line(300,450,275,475); Line(340,390,365,365); Line(340,390,365,415); Line(340,450,365,425); Line(340,450,365,475); Line(300,390,340,390); Line(300,450,340,450); Ellipse(440,25,0,360,35,20); Ellipse(520,25,0,360,35,20); Ellipse(600,25,0,360,35,20); End; Procedure MontantWin; Begin Setfillstyle(solidfill,red); Bar(400,310-s*26,640,336-s*26); MontantsSansFont; End; Procedure basicscreen; begin GraphBase; MontantsAvecFont; MontantWin; setfillstyle(solidfill,lightgray); bar(0,311,640,359); line(400,310,640,310); if l=1 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); end else if l=2 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); end else if l=3 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); fillEllipse(600,25,35,20); end; end; Procedure fiftyfifty; begin (* Pour la question a *) clrscr; inc(l); basicscreen; repeat f1:=random(3)+2; if f1=2 then f2:='A' else if f1=3 then f2:='B' else if f1=4 then f2:='C' else f2:='D'; until f2<>z[a]; settextstyle(3,0,1); setcolor(lightblue); outtextxy(10,315,q[a,1]); setcolor(white); settextstyle(3,0,1); (* premier choix de reponse *) if z[a]='A' then begin outtextxy(55,365,'A) '); outtextxy(75,375,q[a,2]); end else if z[a]='B' then begin outtextxy(365,365,'B) '); outtextxy(385,375,q[a,3]); end else if z[a]='C' then begin outtextxy(55,425,'C) '); outtextxy(75,440,q[a,4]); end else begin outtextxy(365,425,'D) '); outtextxy(385,440,q[a,5]); end; (* deuxieme choix de reponse *) if f2='A' then begin outtextxy(55,365,'A) '); outtextxy(75,375,q[a,2]); end else if f2='B' then begin outtextxy(365,365,'B) '); outtextxy(385,375,q[a,3]); end else if f2='C' then begin outtextxy(55,425,'C) '); outtextxy(75,440,q[a,4]); end else begin outtextxy(365,425,'D) '); outtextxy(385,440,q[a,5]); end; delay(1000); end; Procedure phoneafriend; (*Fonction de demande d'aide*) begin inc(l); if l=1 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); end else if l=2 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); end else if l=3 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); fillEllipse(600,25,35,20); end; settextstyle(3,0,1); Outtextxy(25,100,n); Outtextxy(25,125,'tu devrais prendre '); Outtextxy(205,125,z[a]);(*Le programme affiche la bonne reponse*) delay(1000); end; Procedure asktheaudience; (* Fonction alternative de demande d'aide*) begin inc(l); if l=1 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); end else if l=2 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); end else if l=3 then begin setfillstyle(solidfill,yellow); fillEllipse(440,25,35,20); fillEllipse(520,25,35,20); fillEllipse(600,25,35,20); end; p:=random(3)+2; k:=(random(32)+1)*3; str(k,b); settextstyle(3,0,1); outtextxy(25,200,n); outtextxy(25,225,'le public vous recommande'); outtextxy(268,225,z[a]); outtextxy(285,225,'a'); outtextxy(300,225,b); outtextxy(323,225,'%!'); (* Le programme affiche la r‚ponse du choix 'p'*) delay(1000); end; Procedure ecranlose; begin clrscr; moveto(100,50); setcolor(green); outtext(n); outtext(', vous avez perdu tout votre argent. '); moveto(100,75); outtext('Vous avez maintenant'); setcolor(red); settextstyle(1,0,30); outtextxy(((Getmaxx - textwidth('0$')) div 2), ((Getmaxy - textheight('0$')) div 2), '0$'); delay(3000); setcolor(white); end; procedure ecranwin; begin clrscr; moveto(100,50); setcolor(green); outtext(n); outtext(', vous avez gagne '); setcolor(red); settextstyle(1,0,7); outtextxy(((Getmaxx - textwidth('1 000 000$')) div 2), ((Getmaxy - textheight('1 000 000$')) div 2), '1 000 000$'); delay(3000); setcolor(white); Sound(600); (*Musique de victoire*) Delay(600); NoSound; Sound(565); Delay(400); NoSound; Sound(495); Delay(400); NoSound; Sound(760); Delay(400); NoSound; Sound(1000); Delay(1000); NoSound; (*Fin del la musique de la victoire*) setcolor(white); end; Procedure question; (*Procedure posant les 10 questions*) begin (*Pour les 9 questions*) Clrscr; basicscreen; inc(x); repeat (*Pour ne pas que les questions reviennent*) a:=random(25)+1; until m[a]<1; m[a]:=1; (* pour ne pas que la question revienne*) settextstyle(3,0,1); setcolor(lightblue);; outtextxy(10,315,q[a,1]); (* Question a *) setcolor(white); settextstyle(3,0,1); for y:=2 to 5 do begin if y=2 then begin outtextxy(55,365,'A) '); outtextxy(75,375,q[a,y]); end else if y=3 then begin outtextxy(365,365,'B) '); outtextxy(385,375,q[a,y]); end else if y=4 then begin outtextxy(55,425,'C) '); outtextxy(75,440,q[a,y]); end else begin outtextxy(365,425,'D) '); outtextxy(385,440,q[a,y]); end end; repeat r:=Upcase(readkey); (****************) if (r=z[a]) then inc(s) else if r='P' then begin if l<3 then phoneafriend else begin setcolor(red); outtextxy(25,25,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end end else if r='F' then begin if l<3 then fiftyfifty else begin setcolor(red); outtextxy(25,25,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end end else if r='Q' then begin if l<3 then asktheaudience else begin setcolor(red); outtextxy(100,50,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end end else if (r<>z[a]) then ecranlose; (*********************************************) until (r='A') or (r='B') or (r='C') or (r='D'); end; Procedure questionfinale; begin clrscr; basicscreen; a:=random(3); settextstyle(3,0,1); setcolor(lightblue); Outtextxy(10,315,q[a+27,1]); (*Question a*) setcolor(white); for y:=2 to 5 do begin if y=2 then begin outtextxy(55,365,'A) '); outtextxy(75,375,q[a+27,y]); end else if y=3 then begin outtextxy(365,365,'B) '); outtextxy(385,375,q[a+27,y]); end else if y=4 then begin outtextxy(55,425,'C) '); outtextxy(75,440,q[a+27,y]); end else begin outtextxy(365,425,'D) '); outtextxy(385,440,q[a+27,y]); end end; Repeat repeat (********) clrscr; basicscreen; setcolor(lightblue); Outtextxy(10,315,q[a+27,1]); (*Question a*) setcolor(white); for y:=2 to 5 do begin if y=2 then begin outtextxy(55,365,'A) '); outtextxy(75,375,q[a+27,y]); end else if y=3 then begin outtextxy(365,365,'B) '); outtextxy(385,375,q[a+27,y]); end else if y=4 then begin outtextxy(55,425,'C) '); outtextxy(75,440,q[a+27,y]); end else begin outtextxy(365,425,'D) '); outtextxy(385,440,q[a+27,y]); end end; (********) r:=upcase(readkey); if (r='A') or (r='B') or (r='C') or (r='D') then begin setfillstyle(solidfill,red); bar(200,200,440,280); outtextxy((Getmaxx-textwidth('Final answer?')) div 2, (getmaxy-textheight('Final answer?')) div 2, 'Final answer?'); outtextxy((Getmaxx-textwidth('O/N')) div 2, ((getmaxy-textheight('O/N')) div 2)+20, 'O/N'); f3:=upcase(readkey); end else if r='P' then begin if l<3 then phoneafriend else begin setcolor(red); outtextxy(25,25,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end end else if r='F' then begin a:=a+27; if l<3 then fiftyfifty else begin setcolor(red); outtextxy(25,25,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end; a:=a-27; end else if r='Q' then begin if l<3 then asktheaudience else begin setcolor(red); outtextxy(25,25,'Vous ne pouvez plus utiliser de Lifeline'); delay(3000); setcolor(white); end end until f3='O'; if (r=z[a+27]) then begin inc(s); ecranwin; end else if (r<>z[a]) then ecranlose; Until (r='A') or (r='B') or (r='C') or (r='D'); end; procedure Interrogation; begin clrscr; x:=0; repeat question; until (r<>z[a]) or (x=9); if x=9 then questionfinale else delay(100); end; Procedure nom; begin clrscr; gotoxy(5,5); writeln('Bonjour! Quel est le nom du participant?'); gotoxy(5,6); readln(n); (*Entr‚e du nom du participant en mode CRT*) end; Procedure instructions; begin Setcolor(lightblue); OuttextXY(25,25,'Bienvenu a l''emission Who Wants to be a Millionnaire'); Setcolor(white); OuttextXY(25,50,'--- $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ---'); Setcolor(yellow); OuttextXY(25,100,'Vous devrez repondre a 10 questions pour atteindre un million de dollars!'); OuttextXY(25,125,'Vous aurez acces a 3 lifelines, soit le 50/50, telephoner un ami'); OuttextXY(25,135,'ou sonder l''assistance'); OuttextXY(25,160,'Le 50/50 retirera aleatoirement 2 mauvais choix de reponse'); OuttextXY(25,170,'L''ami que vous appelerez est un expert et vous donnera la bonne reponse'); OuttextXY(25,180,'L''audience vous donnera, en pourcentage, la reponse qu''elle croit etre bonne'); OuttextXY(25,205,'Pour avoir recours au 50/50 durant la partie, appuyez sur la touche ''f'''); OuttextXY(25,215,'Pour appeler un ami, appuyez sur ''p'''); OuttextXY(25,225,'Pour sonder la foule, appuyez sur ''q'''); OuttextXY(150,260,'Etes-vous pret a jouer pour le million?'); Line(140,270,470,270); Readln; Sound(440); Delay(700); NoSound; Delay(0); Sound(490); Delay(500); NoSound; Delay(0); Sound(515); Delay(400); NoSound; Delay(50); Sound(440); Delay(400); NoSound; Sound(490); Delay(400); NoSound; Sound(515); Delay(400); NoSound; Sound(590); Delay(400); NoSound; Sound(655); Delay(900); NoSound; ClearDevice; end; Procedure menu; begin l:=0; (*Lifelines recommencent a z‚ro*) for a:=1 to 30 do begin m[a]:=0 (*Permet de sp‚cifier que nous pouvons poser toutes les question*) end; clrscr; cleardevice; setbkcolor(lightgray); moveto(50,100); setcolor(white); settextstyle(3,0,1); outtext(n); outtext(', voulez-vous commencez les questions ou quitter?'); moveto(50,140); outtext('C) Commencer'); moveto(50,180); outtext('X) Quitter'); c:=upcase(readkey); if c='C' then Interrogation; end; Procedure preparation; begin q[1,1]:='Quelle est la capitale du Br‚sil? '; q[1,2]:='Sao Paulo '; q[1,3]:='Rio de Janeiro '; q[1,4]:='Recife '; q[1,5]:='Brasilia '; z[1]:='D'; q[2,1]:='Le port de Rotterdam est situe a l''embouchure de quel fleuve? '; q[2,2]:='Danube '; q[2,3]:='Rhin '; q[2,4]:='Elbe '; q[2,5]:='Valga '; z[2]:='B'; q[3,1]:='Sous quel nom la 2e plus haute montagne est-elle connue? '; q[3,2]:='Kilimanjaro '; q[3,3]:='Aconcagua '; q[3,4]:='K2 '; q[3,5]:='Mont Blanc '; z[3]:='C'; q[4,1]:='Dans quel pays sont situees les chutes "Salto Angels"? '; q[4,2]:='Etats-Unis '; q[4,3]:='Argentine '; q[4,4]:='Venezuela '; q[4,5]:='Tanzanie '; z[4]:='C'; q[5,1]:='Quelle unite du SI sert a mesurer la quantite de matiere? '; q[5,2]:='Le gramme '; q[5,3]:='La mole '; q[5,4]:='Le litre '; q[5,5]:='La livre '; z[5]:='B'; q[6,1]:='Le ''N'' de l''acronyme ''ADN'' signifie: '; q[6,2]:='Nucleique '; q[6,3]:='Nucleaire '; q[6,4]:='Nitreux '; q[6,5]:='Noyau '; z[6]:='A'; q[7,1]:='Quel physicien formula l''equation selon laquelle l''energie est E=mc2? '; q[7,2]:='Isaac Newton '; q[7,3]:='Stephen Hawking '; q[7,4]:='Thomas Edison '; q[7,5]:='Albert Einstein '; z[7]:='D'; q[8,1]:='Lequel des elements suivants est le plus massif? '; q[8,2]:='Carbone '; q[8,3]:='Titane '; q[8,4]:='Fer '; q[8,5]:='Uranium '; z[8]:='D'; q[9,1]:='Quel indice boursier est le plus vieil indice encore actif? '; q[9,2]:='S&P 500 '; q[9,3]:='TSE 300 '; q[9,4]:='Dow Jones '; q[9,5]:='JP Morgan Chase '; z[9]:='C'; q[10,1]:='En termes de profit brut, quelle est la plus grande petroliere? '; q[10,2]:='Shell '; q[10,3]:='BP '; q[10,4]:='Exxon Mobil '; q[10,5]:='Standard Oil '; z[10]:='C'; q[11,1]:='Que personifie la statue representant l''economie sur Wall Street? '; q[11,2]:='Un taureau '; q[11,3]:='Un ours '; q[11,4]:='Un aigle '; q[11,5]:='Le bison '; z[11]:='A'; q[12,1]:='Comment est appele la journee fatidique du Krach Boursier de 1929? '; q[12,2]:='Jeudi noir '; q[12,3]:='Mardi noir '; q[12,4]:='Vendredi des cendres '; q[12,5]:='Mercredi des cendres '; z[12]:='B'; q[13,1]:='Lors d''un sourire, combien de muscles sont actives? '; q[13,2]:='Environ 10 '; q[13,3]:='Environ 20 '; q[13,4]:='Environ 30 '; q[13,5]:='Environ 40 '; z[13]:='C'; q[14,1]:='Laquelle des toxines suivantes est la plus puissante au monde? '; q[14,2]:='Toxine botulique (BOTOX) '; q[14,3]:='Venin de Boa Constrictor '; q[14,4]:='Venin de Scorpion Tytius '; q[14,5]:='Oxytocine '; z[14]:='A'; q[15,1]:='Quel evangeliste n''a pas connu Jesus de son vivant? '; q[15,2]:='Pierre '; q[15,3]:='Paul '; q[15,4]:='Jean '; q[15,5]:='Luc '; z[15]:='D'; q[16,1]:='Qui est le superheros le plus rapide? '; q[16,2]:='Superman '; q[16,3]:='Flash '; q[16,4]:='Green Lantern '; q[16,5]:='Batman '; z[16]:='B'; q[17,1]:='Lequel des philosophes suivants n''est pas grec? '; q[17,2]:='Pythagore '; q[17,3]:='Platon '; q[17,4]:='Aristote '; q[17,5]:='Machiavel '; z[17]:='D'; q[18,1]:='Quelle est la date de la Revolution Francaise? '; q[18,2]:='1785 '; q[18,3]:='1789 '; q[18,4]:='1852 '; q[18,5]:='1772 '; z[18]:='B'; q[19,1]:='A quel pays actuel correspond l''ancien royaume de l''Abyssinie? '; q[19,2]:='Ethiopie '; q[19,3]:='Benin '; q[19,4]:='Togo '; q[19,5]:='Soudan '; z[19]:='A'; q[20,1]:='Quel pays a le plus haut taux d''humains centennaires?'; q[20,2]:='La Chine '; q[20,3]:='L''Italie '; q[20,4]:='La France '; q[20,5]:='Le Japon '; z[20]:='D'; q[21,1]:='Quel est le lac le plus profond au monde? '; q[21,2]:='Lac Erie '; q[21,3]:='Lac Baikal '; q[21,4]:='Lac Victoria'; q[21,5]:='Lac Tahoe'; z[21]:='B'; q[22,1]:='Laquelle des 4 forces fondamentales est la plus forte? '; q[22,2]:='Force nucleaire forte '; q[22,3]:='Force nucleaire faible '; q[22,4]:='Force electromagnetique '; q[22,5]:='Force gravitationnelle '; z[22]:='A'; q[23,1]:='A quel courant litt‚raire appartient Simone de Beauvoir? '; q[23,2]:='L''existentialisme '; q[23,3]:='Le romantisme '; q[23,4]:='Le marxisme '; q[23,5]:='Le classicisme '; z[23]:='A'; q[24,1]:='Quelle est la ville la plus pollu‚e au monde? '; q[24,2]:='Tokyo '; q[24,3]:='Chicago '; q[24,4]:='Mexico '; q[24,5]:='La Paz '; z[24]:='C'; q[25,1]:='Qui est un des deux pionniers dans le calcul diff‚rentiel? '; q[25,2]:='Jean d''Alembert '; q[25,3]:='Edward Witten '; q[25,4]:='Henri Poincar‚ '; q[25,5]:='Isaac Newton '; z[25]:='D'; q[26,1]:='Qui a ‚crit la t‚tralogie ''Der Ring des Nibleungen''? '; q[26,2]:='Ludwig van Beethoven '; q[26,3]:='Richard Wagner '; q[26,4]:='Wolfgang Amadeus Mozart '; q[26,5]:='Felix Mendelssohn '; z[26]:='B'; (*Questions a 1 000 000$ yeeeeeeeehaaaaaaa*) q[27,1]:='Associe au site Facebook, qui est le plus jeune milliardaire actuel? '; q[27,2]:='Eduardo Saverin '; q[27,3]:='Mark Zuckerberg '; q[27,4]:='Tyler Winklevoss '; q[27,5]:='Dustin Moskovitz '; z[27]:='D'; q[28,1]:='Quelle bande de terre relie le Myanmar a la Thailande? '; q[28,2]:='Isthme de Kra '; q[28,3]:='Isthme de Bangkok '; q[28,4]:='Isthme de Phnom Pehn '; q[28,5]:='Isthme de Yangun '; z[28]:='A'; q[29,1]:='Quel homme suivant n''a pas diriger la Republique de Chine? '; q[29,2]:='Mao Zedong '; q[29,3]:='Deng Xiaoping '; q[29,4]:='Ho Chi-Minh '; q[29,5]:='Hu Jintao '; z[29]:='C'; q[30,1]:='De quelle religion etait l''inventeur du moteur Stirling? '; q[30,2]:='Anglican '; q[30,3]:='Protestant '; q[30,4]:='Catholique '; q[30,5]:='Orthodoxe '; z[30]:='B'; s:=0; randomize; end; (*Programme principal*) begin nom; Preparation; Pilote:=detect; Initgraph(pilote,mode,'m:/bgi'); instructions; setbkcolor(lightgray); repeat x:=0; s:=0; l:=0; menu; until c='X'; (* Lorsque notre choix dans le menu est 'x', *) (* le programme fermera. *) end.