program MENUppp;
uses crt, graph;
var A:char;
    N,T,U:string;
    pilote, mode,x1,R,C,W: integer;
    charx,chary:integer; {variables de graphique et variable du tir}
    b1,b2,b3,b4:integer; {variables position du ballon}
    resultat:integer; {score de lusage}
    info:integer; {les informations complementaires}
    nom:string;

procedure charpuissance;
begin

     outtextxy(40,385,'PUISSANCE');
     rectangle(10,400,634,420);
     readln;
     charx:=12;
     delay(20);
     repeat
     setfillstyle(1,red);
     bar(12,402,charx,418);
     delay(33);
     inc(charx,20);
     until (keypressed) or (charx>632);
     delay(30);
    end;


procedure chardirection;
begin

     outtextxy(40,335,'DIRECTION');
     rectangle(10,350,634,375);
     readln;
     chary:=12;
     delay(20);
     repeat
     setfillstyle(1,red);
     bar(12,352,chary,373);
     delay(33);
     inc(chary,20);
     until (keypressed) or (chary>632);
     delay(30);
    end;

procedure poteau;      (*procedure pour les poteaux de football*)
begin
     outtextxy(245,40,'JEU DE FOOTBALL');
     setfillstyle(9,green);
     bar(1,310,650,630);
     setfillstyle(1,yellow);
     bar(195,40,200,240);
     bar(400,40,405,240);
     bar(195,240,405,245);
     bar(298,245,303,350);
end;

procedure ballondessus;   (*procedure qui servira quand le ballon est en deplacement*)
begin
     setfillstyle(1,brown);
     fillellipse(b1,b2,b3,b4);
     setcolor(white);
     line(b1,(b2-20),b1,(b2+20));
     line((b1-3),(b2-20),(b1+3),(b2-20));
     line((b1-3),(b2-10),(b1+3),(b2-10));
     line((b1-3),b2,(b1+3),b2);
     line((b1-3),(b2+10),(b1+3),(b2+10));
     line((b1-3),(b2+20),(b1+3),(b2+20));
     delay(500);
end;

procedure ballonface;    (*procedure qui servira quand le ballon est en deplacement*)
begin
     setfillstyle(1,brown);
     fillellipse(b1,b2,b3,b3);
     delay(500);
end;

procedure reussite;     (*procedure en cas de reussite*)
begin
clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;
     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,50);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,50);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     until W=8;
     ballondessus;
     sound(349);
     delay(200);
     nosound;
     delay(20);
     sound(349);
     delay(200);
     nosound;
     sound(392);
     delay(200);
     nosound;
     sound(349);
     delay(200);
     nosound;
     sound(392);
     delay(200);
     sound(440);
     delay(600);
     nosound;
     Delay(1000);
end;
procedure echec1;      (*Procedure en cas d''echec*)
begin
clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;

     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,20);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,20);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);

     until W=8;
     ballondessus;
     sound(370);
delay(300);
nosound;
sound(349);
delay(300);
nosound;
sound(329);
delay(300);
nosound;
sound(311);
delay(800);
nosound;
Delay(1000);

end;

procedure echec2;
begin
clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;

     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,50);
     inc(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,50);
     inc(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     until W=8;
     ballondessus;
     sound(370);
delay(300);
nosound;
sound(349);
delay(300);
nosound;
sound(329);
delay(300);
nosound;
sound(311);
delay(800);
nosound;
Delay(1000);
end;

procedure echec3;
begin
     clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;

     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,50);
     dec(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,50);
     dec(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     until W=8;
     ballondessus;
     sound(370);
delay(300);
nosound;
sound(349);
delay(300);
nosound;
sound(329);
delay(300);
nosound;
sound(311);
delay(800);
nosound;
Delay(1000);
end;

procedure echec4;
begin
     clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;

     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,20);
     dec(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,20);
     dec(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     until W=8;
     ballondessus;
     sound(370);
delay(300);
nosound;
sound(349);
delay(300);
nosound;
sound(329);
delay(300);
nosound;
sound(311);
delay(800);
nosound;
Delay(1000);
end;

procedure echec5;
begin
     clrscr;
     setfillstyle(1,black);
     bar(1,1,640,630);
     poteau;
     b1:=300;
     b2:=450;
     b3:=30;
     b4:=50;

     delay(500);
     W:=0;
     repeat
     ballondessus;
     dec(b2,20);
     inc(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     ballonface;
     dec(b2,20);
     inc(b1,30);
     dec(b3,3);
     dec(b4,3);
     delay(100);
     cleardevice;
     poteau;
     inc(W);
     until W=8;
     ballondessus;
     Delay(1000);
end;

procedure bonhomme;             (*la procedure Bonhomme pour afficher Rejean*)
begin
     b1:=350;
     b2:=200;
     b3:=100;
     b4:=150;


     setfillstyle(1,brown);
     bar(b1-250,b2-70,b1-240,b2+70); {poteau}
     setcolor(white); {panneau}
     rectangle(b1-340,b2-190,b1-50,b2-70);
     setfillstyle(1,yellow);    {bras droit}
     bar(b1-255,b2-20,b1-235,b2+30);
     bar(b1-235,b2,b1-100,b2+10);
     setfillstyle(1,brown);
     bar(b1-250,b2-10,b1-240,b2);
     bar(b1-250,b2+10,b1-240,b2+20);

     setfillstyle(1,yellow);
     bar(b1+100,b2,b1+200,b2+10);{bras gauche}
     bar(b1+200,b2-100,b1+210,b2+10);
     bar(b1+180,b2-140,b1+230,b2-100);
     bar(b1+155,b2-110,b1+180,b2-100);
     bar(b1+180,b2-170,b1+190,b2-140);
     bar(b1+200,b2-170,b1+210,b2-140);
     bar(b1+220,b2-170,b1+230,b2-140);

      setfillstyle(1,yellow);{pied gauche}
     bar(b1-75,b2+100,b1-65,b2+200);
     fillellipse(b1-115,b2+200,50,15);
     setfillstyle(1,yellow);{pied droit}
     bar(b1+65,b2+100,b1+75,b2+200);
     fillellipse(b1+115,b2+200,50,15);

     setfillstyle(1,brown);{ballon}
     fillellipse(b1,b2,b3,b4);
     setcolor(white);
     line(b1,(b2-100),b1,(b2+100));
     line((b1-3),(b2-100),(b1+3),(b2-100));
     line((b1-3),(b2-50),(b1+3),(b2-50));
     line((b1-3),b2,(b1+3),b2);
     line((b1-3),(b2+50),(b1+3),(b2+50));
     line((b1-3),(b2+100),(b1+3),(b2+100));
     setfillstyle(1,white);
     fillellipse(b1-35,b2-50,20,40);
     fillellipse(b1+35,b2-50,20,40);
     setfillstyle(1,black);
     fillellipse(b1-35,b2-50,8,8);
     fillellipse(b1+35,b2-50,8,8);
     setcolor(white);
     arc(b1,b2+6,210,330,75);
     arc(b1,b2+7,210,330,75);
     arc(b1,b2+8,210,330,75);
     arc(b1,b2+9,210,330,75);
     arc(b1,b2+10,210,330,75);
end;

procedure jeu;          (*la procedure jeu*)
begin
     clrscr;
     pilote:=detect;
     initgraph(pilote, mode, 'M:\bgi');
     delay(1000);
     cleardevice;
     poteau;
     delay(50);
     chardirection;
     delay(40);
     charpuissance;
     delay(50);
     cleardevice;
     if (chary>250) and (chary<450) and (charx>450) then resultat:=1;
     if (chary>250) and (chary<450) and (charx<450) then resultat:=2;
     if (chary<150) and (charx>450) then resultat:=3;
     if (chary>450) and (charx>450) then resultat:=4;
     if (chary<450) and (charx<450) then resultat:=5;
     if (chary>450) and (charx<450) then resultat:=6;
     inc(C);
     delay(100);
     case resultat of    (*relie le resultat obtenu avec les animations graphiques*)
     1: begin
        reussite;
        inc(R);
        end;
     2: echec1;
     3: echec3;
     4: echec2;
     5: echec4;
     6: echec5;
     end;
     cleardevice;
     randomize;
     bonhomme;
     info:=random(5); (*procedure pour l''affichage des informations apres une partie*)
     case info of
     0: begin
           outtextxy(20,42,'Saviez vous que le stade le');
           outtextxy(20,52,'plus onereux de la NFL est');
           outtextxy(20,62,'le Cowboy''s Stadium, avec un');
           outtextxy(20,72,'cout de 1,15 milliards de');
           outtextxy(20,82,'dollars US');
           end;
     1: begin
            outtextxy(20,42,'Saviez vous que l''equipe');
            outtextxy(20,52,'ayant remporte le plus de');
            outtextxy(20,62,'coupes Grey est les Eskimos');
            outtextxy(20,72,'d''Edmonton, avec 13 victoires');
            end;
     2: begin
        outtextxy(20,42,'Saviez vous que l''equipe');
        outtextxy(20,52,'ayant remporte le plus de');
        outtextxy(20,62,'Super Bowl est les Steelers');
        outtextxy(20,72,'de Pittsburg, avec 6 victoires');
        end;
     3: begin
        outtextxy(20,42,'Saviez vous que 6 stades dans le');
        outtextxy(20,52,'football universitaire americain');
        outtextxy(20,62,'comptent plus de 80 000 places,');
        outtextxy(20,72,'le Michigan Stadium en comptant');
        outtextxy(20,82,'pas moins de 109 000');
        end;
     4: begin
        outtextxy(20,42,'Saviez vous que le joueur ayant');
        outtextxy(20,52,'participe au plus de match des');
        outtextxy(20,62,'etoiles consecutifs dans l''histoire');
        outtextxy(20,72,'de la NFL est Merlin Olsen, avec 14');
        outtextxy(20,82,'participations consecutives');
        end;
     5: begin
        outtextxy(20,42,'Saviez vous que le plus long Field');
        outtextxy(20,52,'Goal de l''histoire de la NFL est de');
        outtextxy(20,62,'63 verges, fait par Tom Dempsey,');
        outtextxy(20,72,'en 1970 pour les Saints de Nouvelle-');
        outtextxy(20,82,'Orlean');
        end;
     6: begin
        outtextxy(20,42,'Saviez vous que le joueur de la NFL');
        outtextxy(20,52,'ayant accumule le plus de verges par');
        outtextxy(20,62,'passe de sa carriere est Brett Favre');
        outtextxy(20,72,'avec plus de 71 000 verges. Sa');
        outtextxy(20,82,'carriere n''est toujours pas termine');
        end;
     7: begin
        outtextxy(20,42,'Saviez vous que le joueur de la NFL');
        outtextxy(20,52,'ayant accumule le plus de verges au');
        outtextxy(20,62,'sol est Emitt Smith, avec 31 225');
        outtextxy(20,72,'verges. Sa carriere s''est termine');
        outtextxy(20,82,'en 2004');
        end;
     8: begin
        outtextxy(20,42,'Saviez vous que le joueur de la NFL');
        outtextxy(20,52,'ayant accumule le plus de touches en');
        outtextxy(20,62,'carriere est Jerry Rice, avec 208');
        outtextxy(20,72,'touche. Sa carriere a pris fin en 2004');
        end;
     9: begin
        outtextxy(20,52,'Saviez vous que le joueur de la NFL');
        outtextxy(20,62,'ayant accumule le plus de sacs du');
        outtextxy(20,72,'corps est Bruce Smith, avec 200.');
        end;
     10:begin
        outtextxy(20,42,'Saviez vous que la seule equipe ');
        outtextxy(20,52,'de la NFL a etre possedee par des');
        outtextxy(20,62,'citoyens est les Packers de Green');
        outtextxy(20,72,'Bay. Avec les nouveaux reglements');
        outtextxy(20,82,'de la NFL, une telle organisation');
        outtextxy(20,92,'ne pourrait pas etre possible');
        end;
    end;
    delay(8000);
end;

procedure menu;

begin    (*Procedure de l''affichage du menu*)
pilote:= detect;
initgraph(pilote,mode,'m:\bgi');
bonhomme;
outtextxy(25,31,'Rebonjour ');
outtextxy(105,31,N);
outtextxy(25,61,'J - Jouer');
outtextxy(25,71,'C - Comment jouer');
outtextxy(25,81,'Q - Sortie');

A := upcase(readkey);
end;

Procedure aide;
                 (*affiche la procedure d''aide*)
begin
clrscr;
setfillstyle(1,0);
bar(0,0,1000,1000);
bonhomme;
outtextxy(25,20,'Alors,');
outtextxy(75,20,N);
outtextxy(25,30,'Voici comment fonctionne le jeu:');
outtextxy(25,40,'1-Dans le menu, choisissez');    (*les instructions du jeu apparaiterons dans la pancarte de Rejean*)
outtextxy(25,50,'  l''option 1');
outtextxy(25,60,'2-Pour choisir votre');
outtextxy(25,70,'  puissance et votre direction');
outtextxy(25,80,'  appuyez sur la touche ENTREE');
outtextxy(25,90,'  quand vous le voulez');
delay(8000);
cleardevice;

bonhomme;
outtextxy(25,20,'3-Pour reussir le placement,');
outtextxy(25,30,'  vous devez choisir une direction');
outtextxy(25,40,'  dans le milieu de la barre de');
outtextxy(25,50,'  direction et une puissance');
outtextxy(25,60,'  maximale');
outtextxy(25,70,'4-Une fois vos parametres');
outtextxy(25,80,'  rentres, appuyez sur ENTREE');
outtextxy(25,90,'  pour faire bouger le ballon');
delay(8000);
cleardevice;

bonhomme;
outtextxy(25,20,'5-Vous avez 10 esais a');
outtextxy(25,30,'  tenter pour avoir le plus');
outtextxy(25,40,'  de placement reussit');
outtextxy(25,50,'6-Des stastiques vous');
outtextxy(25,60,'  seront affichees suite a');
outtextxy(25,70,'  votre performance');
delay(8000);
cleardevice;
end;

procedure choix;   (*Procedure a suivre durant le menu*)
begin
if (A = 'J')       (*Si le joueur entre la lettre J alors la procedure jeu sera lancee*)
then jeu
else
if (A = 'C')       (*Si le joueur entre la lettre C alors la procedure Aide sera lancee*)
then aide
else
if ( A='Q')        (*Si le joueur entre la lettre Q alors la procedure de fermeture sera lancee*)
then
else
begin
clrscr;
bar(0,0,1000,1000);
setbkcolor(black);
outtextxy(20,20,'Choisissez entre J, C et Q');                    (*Si le joueur entre une lettre*)
outtextxy(20,30,'Pressez ENTREE pour revenir au menu');           (*inconnue alors le joueur sera rappele a l''ordre*)
readln;
end;
end;

begin
     clrscr;
     pilote:= detect;
     initgraph(pilote,mode,'m:\bgi');
     cleardevice;
     bonhomme;
     settextstyle(sansseriffont,horizdir,6);
     outtextxy(20,21,'FIELD GOAL');
     settextstyle(sansseriffont,horizdir,1);
     outtextxy(25,81,'Par Marc-Olivier Hetu');
     outtextxy(25,101,'et Julien Huel');
     delay(5000);
     cleardevice;
     bonhomme;
     settextstyle(defaultfont,horizdir,1);
     outtextxy(25,50,'Bonjour, je m''appel Rejean.');
     outtextxy(25,60,'et je vais te guider durant');
     outtextxy(25,70,'ta periode de divertissement');
     delay(8000);
     cleardevice;
     bonhomme;
     outtextxy(30,30,'Quel est ton nom de joueur? ');
     gotoxy(10,5);
     readln(N);
     clrscr;
     setfillstyle(1,0);
     bar(0,0,1000,1000);
     bonhomme;
     outtextxy(20,60,'Bonjour ');
     outtextxy(80,60,N);
     outtextxy(20,70,'Bienvenue dans l''equipe!');
     delay(4000);

     repeat
         clrscr;
         menu;
         choix;
     until (A = 'Q');
     begin
         clrscr;
         setfillstyle(1,0);
         bar(0,0,1000,1000);
         setbkcolor(black);

         settextstyle(sansseriffont,horizdir,5);  (*Ecrit un message d''au revoir*)
         setcolor(white);
         outtextxy(100,100,'Au Revoir');
         outtextxy(300,100,N);
         delay(500);

         sound(349);        (*joue un son de victoire pour epater la galerie*)
         delay(200);
         nosound;
         delay(20);
         sound(349);
         delay(200);
         nosound;
         sound(392);
         delay(200);
         nosound;
         sound(349);
         delay(200);
         nosound;
         sound(392);
         delay(200);
         sound(440);
         delay(600);
         nosound;


x1:=-300;                         (*Point de depart du ballon*)
repeat
cleardevice;
setfillstyle(1,brown);            (*choisit la couleur et la texture du ballon *)
fillellipse(x1,300,150,80);       (*Parametre de dimension Ballon*)
setfillstyle(1,white);            (*choisit la couleur et la texture des lignes sur le ballon *)
bar(x1-90,302,x1+90,298);         (*Parametres de dimension lignes*)
bar(x1-60,310,x1-56,290);
bar(x1-30,310,x1-26,290);
bar(x1,310,x1-4,290);
bar(x1+30,310,x1+34,290);
bar(x1+60,310,x1+64,290);
inc(x1,10);
delay(70);

until x1=900;                             (*Quand la position du ballon atteint une position en X de 900, la procedure arrete*)
settextstyle(sansseriffont,horizdir,3);   (*Ecrit un message d''au revoir*)
outtextxy(100,100,'Au revoir ');


case R of         (*lie le nombre de partie jouee gagnee au nombre en lettre*)
0: T:='zero';
1: T:='une';
2: T:='deux';
3: T:='trois';
4: T:='quatre';
5: T:='cinq';
6: T:='six';
7: T:='sept';
8: T:='huit';
9: T:='neuf';
10: T:='dix';
11..1000: T:='Vous avez triche en faisant plus de 10 parties';
end;
Case C of       (*lie le nombre de partie jouee au nombre en lettre*)
0: U:='zero';
1: U:='une';
2: U:='deux';
3: U:='trois';
4: U:='quatre';
5: U:='cinq';
6: U:='six';
7: U:='sept';
8: U:='huit';
9: U:='neuf';
10: U:='dix';
11: U:='onze';
12: U:='douze';
13: U:='treize';
end;
outtextxy(100,120,'Voici votre nombre de victoires');   (*Affiche le nombre de victoire du joueur et le nombre de partie fait*)
outtextxy(200,140,T);
outtextxy(200,160,'sur');
outtextxy(200,180,U);
outtextxy(200,200,'parties');
readln;
end;
end.