Catégorie :
SupportForum :
TI-82 STATS.frVues : 973
Réponses : 11
Type : discussion
Etat : réponses autorisées
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
ERR:MEMOIRE dans un programme
aleo le 19/05/2010 à 22:19
J'ai fais un programme, en graph, pour un petit jeu de plate-forme.
J'utilise une boucle infinie while.
le probleme, c'est que plus on joue, plus le programme ralentie, jusqu'au moment fatal (après 115 bouclage) ou le ERR:MEMOIRE apparait.
Comment faire pour eviter cette erreur ?
info sur ce que contient la boucle :
-code touche pour le mouvement
-test avec le pxl-test pour le deplacement
Merci
Aleolinkakro le 19/05/2010 à 22:38
Peut-être que les goto/label ralentissent moins, on ne sais jamais, si while fait du récursif...
Quel genre de variables sont utilisées ? Et sont elles réutilisées au fur et à mesure ?Sangohan38 le 20/05/2010 à 19:30
Essaye de supprimer au maximum les If/Then/else de ton programme.
Idem pour les labels qu'il faudrais remplacer par des boucles.
Sinon, tu peut essayer d'utiliser des sous programmes.
Sangohan38aleo le 20/05/2010 à 21:39
C'est pareil avec le goto. Si mes souvenir sont bon, les etiquettes font15x bouclage avant de craché.
les commandes sont allégées un max.
je quitte la boucle de déplacement pour les sauts (jeu de plateforme) et la pesanteur.
Reel appercus de la boucle :
j'éteinds le pxl jouer
code touche
dépacement :(if k=... et A!=1 et A!=51 et pxl-test-(...)!=1:x+1->

fois 3 pour le depacement droite gauche + dessente accelerer[!= : different]
La commande de saut :if k =...:goto...
je ralume le pxl
puis la pesanteur : goto...
end
voila en gros
plus la boucle "boucle" (-__-"), plus elle devient lente.
linkakro le 21/05/2010 à 19:11
Je crains que la longueur du If soit la principale cause.
Et comme a dit sangohan38, il est préférable d'utiliser des sous-programmes au lieu de goto extérieures. (par exemple ta gestion de la pesanteur)aleo le 23/05/2010 à 17:32
J'ai supprimer la commande pour tomber plus vite. J'ai gagné un peu de temps avant le moment du crash.
J'utiliserai un sous programme, et vous dirai si sa marche
Merci !Persalteas le 25/05/2010 à 22:16
sur le mode d'emploi de la calculette, errMémoire dans un prog est signalé quand une boucle ne rencontre pas de fin.
par exemple, un if qui mettrait trop longtemps à rencontrer son End bloquerait.
c'est également valable si tu as:
Code
LblA
patatipatata
While 0
patatipatata
If truc=machin:Goto A
patatapatati
End
Le while ne renconte pas le End dans le cas ou truc=machin.
c'est valable aussi quand tu remplace le Goto par l'éxécution d'un autre prog.
aleo le 26/05/2010 à 17:04
Donc il faut que j'évite les boucles infini, et en faire deux pour le déplacement ?
C'est l'un des solutions qu'il faut que j'essaye.
J'ai remarqué aussi que plus je fait des programmes, plus moins la boucle "boucle".
AleoSangohan38 le 27/05/2010 à 19:36
Citation
plus moins la boucle "boucle".
Euh, elle boucle plus où moins ta boucle?
Si c'est moins, c'est normal vu que tes progs prennent de la mémoire et que cette même mémoire est utilisée par tes programmes.
Pour essayer d'alléger, vu que tu utilise des pxl-test, met les dans des variables pour tes conditions.
Sangohan38
aleo le 27/05/2010 à 22:16
Je tien a m'excuser... Le "plus moin" était de trop.
Sangohan, je ne voie pas trop comment faire, vue que je suis tombé sur le pxl-test en bidouillant...
merciSangohan38 le 28/05/2010 à 22:49
Si tu utilise plusieur fois le même pxl-test, stock le dans une variable.
Exemple:
Code
If pxl-test(0,0)=1:1->A
If pxl-test(0,0)=0:2->A
devient:
pxl-test(0,0)->B
If B=1:1->A
If B=0:2->A
En gros, tu remplace juste le pxl-test(0,0,) par une variable.
Sangohan38
aleo le 30/05/2010 à 21:48
Sangohan, jai un autre solution, qui me fais gagner du bouclage.
Ma démarche :
Au lieu déteindre un pixel au début et de le rallumer a la fin de boucle, je me suis de faire tout en condition.
J'ai gagné ainssi beaucoup de "bouclage" ^^ Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.