| Aide pour mon snake :s |
| Auteur |
Message |
snap
Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
|
Posté le : Sam 04 Jui 2011, 11:39
|
|
|
Ben voila. J'ai fait un snake... Enfin j'ai essayé. Il marche pour l'instant mais il va pas assez vite. En fait il est super lent même^^ Alors je voudrais savoir pourquoi XD Voila le prog
Snake :
| Code |
:EffDessin
:Menu("Snake","jouer",J,"Quitter",Q
:lbl Q
:Stop
:lbl J
:0 -> Xmin : 94 -> Xmax
:0 -> Ymin : 62 -> Ymax
:FonctOff
:AxesNAff
:Verticale 0
:Verticale 94
:Horizontale 0
:Horizontale 62
:6 -> dim(LSNA
:6 -> dim(LSNB
:2 -> dim(LSNC
:Remplir(1,LSNA
:Remplir(1,LSNB
:30 -> LSNA(1
:40 -> LSNB(1
:lbl 1
:If LSNA(1)=B et LSNB(1)=A: S+1 -> S Pour le score.
:Entaléat(1,93 -> A
:Entaléat(1,61 -> B
:Pt-On(A,B
:If S>0: dim(LSNA)+2 -> dim(LSNA
:If S>0: dim(LSNB)+2 -> dim(LSNB
:While 1
:For(C,dim(LSNA)-1,1,-1
:LSNA(C -> LSNA(C+1
:End
:LSNA(1)+LSNC(1 -> LSNA(1
:For(C,dim(LSNB)-1,1,-1
:LSNB(C -> LSNB(C+1
:end
LSNB(1)+LSNC(2 -> LSNB(1
:Pt-On(LSNB(1),LSNA(1
:PT-Off(LSNB(dim(LSNB)),LSNA(dim(LSNA
:CodeTouche -> K
:If K:Remplir(0,LSNC
:If K=21: Pause
:If K=24: LSNC(2)-1 -> LSNC(2
:If K=25: LSNC(1)+1 -> LSNC(1
:If K=26: LSNC(2)+1 -> LSNC(2
:If K=34: LSNC(1)-1 -> LSNC(1
:If LSNA(1)=B et LSNB(1)=A : Goto 1
:End
|
J'ai pas encore mis les test pour perdre mais vu que c'est deja lent sans, ce sera horrible avec ^^
---------------------- Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes 
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr |
 |
|
| |
noelthebest
Autorisation : Membre
Nb de messages : 69
Inscrit le : Ven 11 Mar 2011, 17:03
|
Posté le : Sam 04 Jui 2011, 12:03
|
|
|
Je pense que tu pourrais encore optimiser au niveau de le gestion des évènements (autrement dit, au niveau des codetouches ). 
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 04 Jui 2011, 13:56
|
|
|
La pire des causes de ralentissement à long terme est le "Goto 1" à l'intérieur d'une boucle "while 1".
L'autre raison principale est qu'une de ces boucles For déplace les valeurs de toute la liste. Plus il y a de valeurs dans la liste et plus c'est lent.
Il y a plusieurs façons de remplacer ce For mais certaines sont des usines à gaz.
-- Les valeurs de la liste ne bougent pas, mais une position de référence est constamment modifiée. Il y a de nombreuses façon d'obtnir ça. If, formules.
-- Utilise un petit bug de ti : SortA(L1,L2) ou TriCroi déplace toutes les valeurs de la liste L2 d'un cran si L1 est uniforme (genre vide).
On peut aussi stocker deux valeurs dans une même liste avec ent et partDéc. Ainsi une seule boucle effectue le double de travail.
Tu devrais utiliser deux variables plutôt que d'utiliser la liste LSNC, car les listes sont plus lentes que les variables.
----
Je serai certainement plus précis quand je trouverai le temps d'écrire un article sur ce domaine.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Sam 04 Jui 2011, 14:27
|
|
|
Met déjà la verrification de repas dans la boucle pricipale (sans le goto) et sinon, si tu n'arrive pas à accélérer sufisament, au lieux de constituer ton serpent de carrés de 1*1 pixels, fais le avec des 2*2 pixels. Sinon, remplace peut-être aussi les listes personalisées par des liste standart, je crois que c'est un peu plus rapide.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
snap
Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
|
Posté le : Sam 04 Jui 2011, 14:45
|
|
|
J'ai pas très bien compris pour le bug ti avec Tricroi. J'ai test de mettre
Tricroi(L3,L1 avec L3 vide mais il me met erreur.
Sandro : C'est ce que je comptais faire mais faudrait deja que je l'accelere un petit peu avant de voir sa
---------------------- Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes 
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 04 Jui 2011, 14:55
|
|
|
Je me suis mal exprimmé : vide signifiait pleine de zéros.
Mais bien sûr les listes doivent avoir la même dimmension.
Note que le défilement produit par TriCroi ne se fait que dans un sens 
C'est plus rapide qu'un For mais pas toujours aussi rapide que les référentiels.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Sam 04 Jui 2011, 14:57
|
|
|
si tu double les dimentions du serpent, il avancera presque 2 fois plus vite (car il progressera de 2 pixels à chaque coup au lieux d'un seul.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
snap
Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
|
Posté le : Sam 04 Jui 2011, 14:58
|
|
|
Pas bête pas bête... ^^
Linkakro, Sa ne marche pas pourrait tu mettre un code du bug? Je dois surement avoir fait une erreur
---------------------- Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes 
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 04 Jui 2011, 15:27
|
|
|
| Code | {0,0,0}->L1
{1,2,3}->L2
TriCroi(L1,L2 |
L1={0,0,0}
L2={2,3,1}
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
snap
Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
|
Posté le : Sam 04 Jui 2011, 15:57
|
|
|
J'ai test et sa marche pas :p sa donnerai quoi dans mon programe ce que ta mis?
---------------------- Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes 
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 04 Jui 2011, 16:39
|
|
|
Cela devrait décaler toutes les valeurs de la liste vers le début.
Pour l'instant ton programme prévoie de les décaler vers la fin.
Le défaut de cette astuce est qu'elle nécessite de modifier d'autres choses du programme.
Ce bug fonctionne sur 82, 83, 83+. Pas testé sur les autres.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |