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:
par exemple un tableau créé pourrait être:
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
200 | 150
205 | 150
210 | 150
215 | 150
220 | 150
Ca me donne un serpent composé de 5 bitmap au coordonnées du tableau.
explication:
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
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
Partager