Programme du jeu snake en turbo pascal

mab2008 Messages postés 11 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'ai besoin d'un coup de main concernant le programme ( projet ) du jeu snake.
merci.
Configuration: Windows 2003
Internet Explorer 6.0

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    J'ai fait il y a déjà quelque temps un programme sur le polynôme d'interpolation de Lagrange, je te le met tel quel, sans chercher à l'améliorer ni rien...
    program InterpolationLagrange; {$R+}
    
    const nmax=100;
    const epsilon=1e-6;
    type tableau=array[0..nmax-1] of real;
    
    procedure Demander(var a,b:tableau;var n:integer);
    var i:integer;
    begin
    write('Degre n-1 du polynome P = '); readln(n);
    writeln;
    writeln('Pour tout i, P(Ai)=Bi, tous les Ai doivent etres deux a deux distincts');
    writeln;
    for i:=0 to n-1 do
        begin
        write('Pour A',i+1,' = '); readln(a[i]);
        write('On a B',i+1,' = '); readln(b[i]);
        writeln;
        end;
    end;
    
    function Apparait(v:real;var t:tableau;a,b:integer):boolean;
    var k:integer;
    begin
         for k:=a to b do
             if t[k]=v then exit(true);
    result:=false;
    end;
    
    function Injectif(var t:tableau;n:integer):boolean;
    var k:integer;
    begin
         for k:=0 to n-2 do
             if Apparait(t[k],t,k+1,n-1) then exit(false);
    result:=true;
    end;
    
    procedure InitConstant(var P:tableau;n:integer;c:real);
    var k:integer;
    begin
    P[0]:=c;
    for k:=1 to n-1 do P[k]:=0;
    end;
    
    procedure MulParBin(var P:tableau;n:integer;c0,c1:real);
    var k:integer;
    begin
    for k:=n-1 downto 1 do P[k]:=c0*P[k]+c1*P[k-1];
    P[0]:=c0*P[0];
    end;
    
    procedure Ajouter(var P,Q:tableau;n:integer);
    var k:integer;
    begin
    for k:=0 to n-1 do P[k]:=P[k]+Q[k];
    end;
    
    procedure Lagrange(var P,a,b:tableau; n:integer);
    var i,j:integer;
    var Q:tableau;
    begin
    InitConstant(P,n,0);
    for i:=0 to n-1 do
        begin
        InitConstant(Q,n,b[i]);
        for j:=0 to n-1 do
            if i<>j then MulParBin(Q,n,-a[j]/(a[i]-a[j]),1/(a[i]-a[j]));
        Ajouter(P,Q,n);
        end;
    end;
    
    procedure Afficher(var P:tableau;n:integer);
    var k:integer;
    begin
    write(P[0]:0:5);
    for k:=1 to n-1 do write(' + ',P[k]:0:5,'.X^',k);
    writeln; writeln;
    end;
    
    function Valeur(var P:tableau;n:integer;x:real):real;
    var k:integer;
    begin
    result:=P[n-1];
    for k:=n-2 downto 0 do
        result:=x*result+P[k];
    end;
    
    procedure Verifier(var P,a,b:tableau;n:integer);
    var k:integer;
    var result:boolean;
    begin
    writeln;
    result:=true;
    for k:=0 to n-1 do
        if abs(Valeur(P,n,a[k])-b[k])>epsilon then begin result:=false; break end;
    if result then writeln('Le polynome a ete calcule correctement')
              else writeln('Une erreur s''est produite, le polynome calcule est incorrect');
    writeln('(verification effectue a ',epsilon,' près)');
    writeln;
    end;
    
    var a,b,P:tableau;
    var n:integer;
    begin
    while true do
          begin
          Demander(a,b,n);
          if Injectif(a,n) then break;
          writeln('Attention les Ai ne sont pas tous distincts !');
          end;
    writeln;
    Lagrange(P,a,b,n);
    Afficher(P,n);
    Verifier(P,a,b,n);
    writeln; write('Fin du programme. Appuyer sur Entree'); readln;
    end.
    En ce qui concerne ton deuxième problème essaie ça :
    const n=10;
    
    type Tab=array[1..n] of real;
    
    function Calcul(x0:real; i:integer; x:Tab):real;
    var k:integer;
    begin
    result:=1;
    for k:=1 to n do
        result:=result*(x0-x[k])/(x[i]-x[k]);
    end;
    --
    La confiance n'exclut pas le contrôle 
    11
  2. dj_m
     
    bon pas de problème voila : http://www.programmersheaven.com/download/16989/download.aspx. tu trouvera snake mais un peut compliqué, il faut passé a la motification. bon courage merci mi algérie 2eme années informatique
    1
  3. norddinah
     
    Bonjour,
    j'aimerai bien avoir la code source de l'interpolation lineaire en utilisant la methode de Lagrange sur Turbo pascal.

    En plus de ca, je ne sais pas comment programmer en pascal cet algorithme:
    l[i] =(x-x[1])(x -x[2])....(x -x[i-1])(x -x[i+1])........(x -x[n])/((x[i]-x[1])(x[i] -x[2])....(x[i] -x[i-1](x[i] -x[i+1])........(x[i] -x[n]))

    IL s'agit du programme en pascal !
    Merci d'avance
    1