Programme du jeu snake en turbo pascal

mab2008 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
j'ai besoin d'un coup de main concernant le programme ( projet ) du jeu snake.
merci.
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
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
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