1

J'ai quelques questions par rapport à la programmation sur TI 84+ Silver édition : Premièrement, dans les menus j'ai vu deux fonctions qui ne sont ni éxpliquer sur le livret ni autre part : la fonction "OpenLib(" et la fonction "ExecLib". Est-ce que ça a un rapport avec les librairies ? Deuxièmement, quand je tape "randInt(1,4)->E" Il me marque OVERFLOW alors que sur ma TI 82 STATS il ne me le marque pas. Ca me parait bizarre.

2

Le randInt(1,4)->E qui fait un overflow c'est assez bizzard...
Regarde si dans l'écran de calcul randInt(1,4) fonctionne bien... (mais normalement..)
Sinon, le problème peut venir du fait que tu n'a plus de ram, ou que la variable E est corrompu..essaye voir avec une autre variable smile

Pour OpenLib et execlib , ce ne sont pas des fonctions rajoutées par des porgrammes en asm que t'a toi-même installé ?
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

3

Non, OpenLib et ExecLib était deja dans ma TI 84 plus silver édition quand je l'ai acheter. Sinon j'ai essayer avec d'autre variables pour randInt( mais ça ne veux toujours pas marcher... Et l'écran de calcul marche bien.

4

Pour randInt, t'a sur que le problème se situe là ? ( p-t sur la ligne d'avant ou d'après, non ? tu peux poster le contexte si tu veux smile )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

5

Enfaite c'est pour gérer le mouvement aléatoire d'une sprite. Voilà le contexte :

While 1
randInt(1,4)->E
If E=1:Then:Y+16->Y:End
If E=2:Then:Y-16->Y:End
If E=3:Then:X+16->X:End
If E=4:Then:X-16->X:End
[...]
End

Sinon personne n'a d'idée en ce qui concerne OpenLib et ExecLib ?

6

Si tu veux mon avis personnel (intuitif), il arrive que ton sprite dépasse de l'écran lorsque tu l'affiche, d'où l'overflow. Tu peux corriger ça par exempleen faisant un coup de modulo. (soit arithémtiquement à la main, soit avec des If X >= .. then 1->X ou if X >= .. then (X-..)->X )

Si t'affiche ton sprtie en fin de boucle ( tu affiche le sprite à la main ou avec une lib ?), c'est possible que le 'curseur' revienne en début de boucle suivante
Pour le savoir, il y a une méthode simple: juste après que ça ait planté, vérifie (écran de calcul) que les valeurs de X et Y soient bonnes ( après, ça dépend si t'affiche en pixel ou en point)

Ha sinon, je peux pas m'empécher:
randInt(1,4)->E
If E=1:Then:Y+16->Y:End
If E=2:Then:Y-16->Y:End
If E=3:Then:X+16->X:End
If E=4:Then:X-16->X:End 


gagnera à devenir:

Y+16randInt(-1,1)->Y:End
X+16randInt(-1,1)->X:End 


mais tu aura également le déplacement nul et le déplacement en diagonal.
Pour éviter le déplacement nul, on peut toujours faire un truc comme:
16*(2randInt(0,1)-1)

On peut également éviter le déplacement en diagonal, soit au prix d'un If (c'est lent un If wink ), soit en bricolant encore un peu plus, mais en alourdissant le code (je fais une version lisible, c'est optimisable):

randInt(1,4)->E
Y + (1-Int(E/3))*16*(2*E-3) ->Y
X + Int(E/3)*16*(2E-7) -> Y

ce qui revient strictement à ton code au niveau (distribution des) possibilitées. (équiréparti gauche/droite/haut/bas)
Un rapide commentaire, mais j'ai la flemme:

Int(E/3) vaut 1 lorsque E vaut 3 ou 4 et 0 lorsque E vaut 1 ou 2. Je reprends presque ton organisation:
E=1: Y - 16 -> Y,
E=2: Y+16->Y ,
E=3: X-16->X,
E=4: X+16->X

(1-Int(E/3)) vaut donc 0 pour E=3 ou 4 et 1 pour E=1,2.

En mettant respectivement ces termes en facteur des expression, on incrémente soit X soit Y mais pas les deux à la fois.
Le reste, c'est du bricolage our obtenir à chaque fois le couple (-16,+16) à partir d'un couple (1,2) ou (3,4)


«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

7

Heu... Je pense pas que ce soit un problème de sprite qui dépasse l'écran parce que même avec d'autre jeux (notament Metroid 1) il me met OVERFLOW dès le début. Sinon je vais réfléchir à ton code parce que comme c'est sur TI 84 + SE ça ne RAM pas beaucoups.

edit : Finalement j'ai fait un reset complé et ça à l'air de marcher. Y'a plus qu'a éspèrer que ça me le refasse pas cheeky

8

Hum, si ça tombe....tu n'avait pas des plots actifs ? (et sinon, même sur 84+ lorsque tes programmes devienent gros, ça peut ramer.. )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

9

Arf, ça me la encore fait. La seul solution que j'ai c'est un reset de la RAM sick Et puis comme j'ai tout reseter, à mon avis c'est pas un probème de plots actifs. Aufaite, j'ai pas l'intention de faire un gros pogramme c'est juste un truc pour tester l'affichage des sprites (après on verra bien si j'en fait quelque chose...).

10

nan mais autant apprendre à bien coder dès le début pasque sinon cheeky

Sinon t'a des trucs archivés ? (des fonctions, ché pas...) qui pouraient s'afficher ?
( donc bon t'a rien à perde à vérifier les plots tongue ça peut pas s'archiver ces trucs ? )
t'a utilisée d'autres programmes entre deux ?
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

11

Et lorsque tu fais Goto sur l'ERR OVERFLOW ca t'emmene pile sur la ligne du RandInt ?
<-- et à votre gauche une superbe peinture pointilliste du XVIe siècle #sisi# représentant - vous l'aurez deviné - une banane ...
http://www.ti83plus.online.fr/home.php...

12

Oui, ça me montre pile randInt( d'ailleur sur l'écran de calcul quand je tape randInt(1,2 il me met aussi OVERFLOW. Et oui, j'ai quelques programmes qui s'utilisent entre eux, mais bon, j'ai remarquer que ça me le fesai souvent que j'utilisai la librairie ZAPI donc je vais faire xLIb. En plus, je n'est rien d'archiver car j'ai reseter toute la TI (RAM+Archive).

13

sur l'écran de calcul quand je tape randInt(1,2 il me met aussi OVERFLOW

C'est bizzard otn truc quand même... (ça a changé depuis le ./3 ? tongue )
effectivement, exepté qqch d'un peu corrompu, je ne vois pas trop de raison "normales" en Ti-basic permettant d'expliquer ça.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

14

Heu... Quand je disait "l'écran de calcul marche bien" je voulai dire que lorsque je tape 1+2 il me mettai bien 3 et non pas autre chose. Enfin, à mon avis ça peut vennir de ZAPI, mais bon, je vais tester avec xLIB dès que je peut et je vous dirai si j'ai encore ce problème.

15

Quand je disait "l'écran de calcul marche bien" je voulai dire que lorsque je tape 1+2 il me mettai bien 3 et non pas autre chose.

Haaa cheeky
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.