Recherche du déplacement fluide du serpent

Elodie:

Actuellement les carrés bougent en un seul bloc, pour résoudre ce problème, je suis partie sur notre première piste, à savoir donner au second carré les anciennes coordonnées du premier carré, et sur la même idée, le troisième carré prendrait les coordonnées du second carré. Mais il s’est très vite avéré difficile d'attribuer les coordonnées du premier carré au second. J'ai donc commencé par le dernier carré qui prendra les coordonnées du précédent et le premier carré prendra la direction indiquée par le joueur.

Cela donne:

if (frameCount % 10 == 0) {

if (a == true){ v2=v;  v=y;  y=y-20;  h2=h; h=x;  } else {y=y;v=v;v2=v2;}  // le carre se deplace automatiquement dans la direction donnée : haut

 

if (b == true){ v2=v;  v=y;  y=y+20;  h2=h;  h=x; } else {y=y;v=v;v2=v2;}  // le carre se deplace automatiquement dans la direction donnée : bas


if (c == true){ h2=h;  h=x;  x=x-20;  v2=v;  v=y; } else {x=x;h=h;h2=h2;}  // le carre se deplace automatiquement dans la direction donnée : gauche

 

if (d == true){ h2=h;  h=x;  x=x+20;  v2=v;  v=y; } else {x=x;h=h;h2=h2;}  // le carre se deplace automatiquement dans la direction donnée : droite

}

 

Alors que précédemment nous avons:

if (a == true){ y=y-20;   v=y+20;h=x; v2=v+20;h2=x; } else {y=y;v=v;v2=v2;}

if (b == true){ y=y+20;   v=y-20;h=x; v2=v-20;h2=x; } else {y=y;v=v;v2=v2;}

if (c == true){ x=x-20;   h=x+20;v=y; h2=h+20;v2=y; } else {x=x;h=h;h2=h2;} 

if (d == true){ x=x+20;   h=x-20;v=y; h2=h-20;v2=y; } else {x=x;h=h;h2=h2;}

Puis, pour harmoniser le programme avec ce quee j'ai touvé, j'ai aussi changé le code pour l'animation de fin, ainsi, meme lorsque l'on perd, le serpent a un mouvement fluide lorsqu'il tourne autour de la grille de jeu en avancant aussi de case en case, avec le code suivant :

   // la chaine de carrés tourne autour de la grille :
if (frameCount % 5 == 0) {
if(x>=330 )  { v2=v;  v=y;  y=y-20;  h2=h;  h=x; }
if(x<=10  )  { v2=v;  v=y;  y=y+20;  h2=h;  h=x; }
if(y<=10  )  { h2=h;  h=x;  x=x-20;  v2=v;  v=y; }
if(y>=330 )  { h2=h;  h=x;  x=x+20;  v2=v;  v=y; }
}

 

Alors que précédemment nous avons:

// la chaine de carrés tourne autour de la grille :
if(x>=330 )  { y=y-2;x=x;v=y+20;h=x;v2=v+20;h2=x; }
if(x<=10   )  { y=y+2;x=x;v=y-20;h=x;v2=v-20;h2=x;  }
if(y<=10   )  { x=x-2;y=y;h=x+20;v=y;h2=h+20;v2=y; }
if(y>=330 )  { x=x+2;y=y;h=x-20;v=y;h2=h-20;v2=y; }

Ainsi, nous obtenons ces images lorsque le serpent tourne autour de la grille :