Mon Snake est très lent
Posté le 26/11/2008 21:02
Bonjour,
Je suis en train de créer un Snake sur ma graph 35+ mais il est très lent.
Pour l'instant j'en suis vraiment qu'au début, je peux juste créer un snake avec un certain nombre de "particules" et le bouger.
Je ne peux pas vous donner le code source mais voila comment ça se passe dans mon programme:
Initialisation de quelques variables et d'une matrice
While 1 (début de la boucle)
Réception de la touche (getkey)
Ajustation de la valeur reçue (ex: si on appuie sur EXE ou 7 rien ne se passe, ya quelque chose que si on appuie sur une des flèches, et faire en sorte que si les coordonnées sortent de l'écran, qu'elles apparaissent de l'autre coté)
Effacement de l'écran
Affichage des particules du snake
WhileEnd (fin boucle)
J'ai repérer l'endroit qui est vraiment lent c'est au niveau de l'affichage de chaque particule.
Voila le morceau de code:
For 1->X to P
If X<P
Then Mat A[X+1,1]->Mat A[X,1]
Mat A[X+1,2]->Mat A[X,2]
Else X=P
H->Mat A[P,2]
L->Mat A[P,1]
Ifend
Locate Mat A[X,1], Mat A[X,2], "O"
Next
Voila quelques explications s'imposent je pense:
P est le nombre de "particules" du snake.
La matrice A est composée de 2 colonnes et de P lignes. Dans la 1ere colonne sont stockées les abscisses (donc entre 1 et 21) et dans la 2eme les ordonnées (entre 1 et 7).
Dans cette matrice les coordonnées de la tête du snake sont stockées à la dernière ligne (à la ligne P autrement dit) et la queue est à la 1ere ligne.
Les variables H et L sont obtenues à la suite de getkey. Ex: si getkey=27 (flèche de droite) alors L+1->L. J'aurais pu mettre à la place Mat A[P, 2] (pour H) et Mat A[P,1] (pour L) mais c'est plus court de faire toutes les ajustations avec H et L et enfin les attribuées dans la matrice. Apèrs je ne sais pas s'il vaut mieux faire quelques bytes de plus et moins de variables ou inversement.
Donc pour toutes les lignes sauf celles de la tête, on replace l'abscisse et l'ordonnée de la ligne par celles d'après.
Enfin on affiche à l'abscisse et l'ordonnée de la ligne X: "O".
Bon pas forcément très clair je pari mais poser moi des questions si y'a un ptit truc que vous comprenez pas svp.
Voila en faite je voudrais donc savoir si c'est normal que ça soit si lent (par exemple si je donne 9 particules au snake c'est très lent) ou si ya un autre manière de faire.
Merci.
Pingu (alias MBM quand j'avais pas encore de compte)
PS: on utilise quoi comme police ou fonction pour mettre du code (ou une citation) ?
PS2: les guillemets ne s'affichent pas apparemment