Bonjour à tous,
Je viens chercher conseil car je rencontre un petit problème, et à la force d'avoir le nez dedans je n'y vois plus rien.

J'ai codé un snake (cpp + sdl). Je suis parti d'un algo que j'avais fais pour la gestion du serpent. Mais une fois codé est apparu un problème.

Mon serpent est composé de 'case' (des bitmap de 5*5 pix). Quand le snake mange une pomme une case est alors ajouté.

Mon algo actuel de gestion du serpent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
int tab_snake[][];//variable globale
 
méthode initialiser_serpent(position_x_de_départ, position_y_de_départ, nombre_case_serpent)
 
début
       pour i allant de 0 a nb_case
              tab_snake[i][0] = position_x_de_départ;
              tab_snake[i][1] = position_y_de_départ;
              position_x_de_départ = position_x_de_départ + 5;
      fin pour
fin
par exemple un tableau créé pourrait être:
200 | 150
205 | 150
210 | 150
215 | 150
220 | 150

Ca me donne un serpent composé de 5 bitmap au coordonnées du tableau.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
méthode déplacer_serpent(int direction, int nb_case)
début
    for(int i = nb_case-1; i > 0; i--)
    {
        tab_snake[i][0] = tab_snake[i-1][0];
        tab_snake[i][1] = tab_snake[i-1][1];
    }
 
    if(direction == 0)
    {
		tab_snake[0][0] = tab_snake[0][0] - 5;
    }
    if(direction == 1)
    {
		tab_snake[0][0] = tab_snake[0][0] + 5;
    }
    if(direction == 2)
    {
		tab_snake[0][1] = tab_snake[0][1] - 5;
    }
    if(direction == 3)
    {
		tab_snake[0][1] = tab_snake[0][1] + 5;
    }
fin
explication:
Ma méthode déplacer_snake va dans un premier temps faire basculer une ligne n a une ligne n+1 et ensuite en fonction de la direction mettre a jour la tete du serpent (tab_snake[0][0] et tab_snake[0][1]).

Enfin dans ma boucle de rendu j'affiche tab_snake a chaque tour de boucle.

Tous ca fonctionne bien. Seulement je n'avais pas pensé à la vitesse.... et oui ca va tres tres tres vite. Alors j'ai tenter des baisser le fps, mais en passant a 20 fps par exemple le rendu est médiocre (pas assez fluide) et cette solution n'est pas propre.

Ici je suis tributaire de la taille des mes bitmap pour la vitesse du snke en fait.

j'èspère avoir été clair, comment modifié la vitesse de mon snake (autrement dit ses coordonnées) tout en gardant mon ratio de 5pix....

merci à vous