Page 1 of 3

un goto

Unread postPosted: 09 Feb 2009, 11:25
by Emyl
enfin voila je voudrais savoir comment faire un goto qui évolue
je m'explique : soit X le niveau du joueur, je voudrais que le monde qui l'entoure évolue (change) selon X
quelque chose du genre :
Code: Select all
Goto x
Lbl x=1
...
Lbl x=3
...
Lbl x=2
...

bien entendue, ce qui marqué plus haut ne marche pas.
je voudrais contourner le :
Code: Select all
If x=0:Goto 0
If x=1:Goto 1
If x=2:Goto 2
...
Lbl 0
Lbl 1
Lbl 2


je rappelle que je suis sur 84+ et 83+
merci d'avance ^^

Re: un goto

Unread postPosted: 09 Feb 2009, 11:34
by critor
Heureux de voir que tu te lances enfin dans la programmation.

Malheureusement, je ne crois pas que ce soit possible... Les Lbl/Goto sont justement des étiquettes figées (statiques).


Peux-tu préciser ce que tu veux faire?

Il y a peut-être une solution contournant les Goto... (boucles, sous-programmes, tests...)


Si c'est pour faire un menu, je fais exactement comme tu as fait...

Re: un goto

Unread postPosted: 09 Feb 2009, 16:40
by Bisam
Ne peut-on pas faire quelque chose du genre :

Code: Select all
goto expr(string(x))

Re: un goto

Unread postPosted: 09 Feb 2009, 18:07
by critor
Y'a pas de fonction string() sur 83/84 qui convertir un nombre en une chaîne...

Ensuite, je pense que l'interpréteur Basic ne fera aucune évaluation à droite d'une commande Goto ou Lbl.

Re: un goto

Unread postPosted: 09 Feb 2009, 18:10
by tama
ouép et je doute que sur 89 ça marche
par contre p'tet que goto #x devrait marcher ... sur 89 (c'est l'indirection, ça existe pas sur 83+/84+)
enfin là n'est pas le sujet

Re: un goto

Unread postPosted: 09 Feb 2009, 20:16
by ced78fr
je vois pas trop le problème mais bon... un if avec une condition (genre telle valeur sur une variable) ?

Re: un goto

Unread postPosted: 09 Feb 2009, 20:41
by critor
Il trouve ça trop lourd à écrire, voilà tout...

Peut-être aussi qu'il a bien plus que 3 conditions...

Re: un goto

Unread postPosted: 09 Feb 2009, 21:12
by Emyl
ben oui il y en aurait des dizaines, voir peut être un peu plus :)

je pense en effet créer des sous-programmes, mais ça fera toujours
Code: Select all
If X=0:prgm0
If X=1:prgm1
If X=2:prgm2
If X=3:prgm3
If X=4:prgm4
...

ce n'est pas une perte de place ? on ne pourrais pas faire du genre (encore ^^) un peu du même genre que ce que proposait Bisam :
Code: Select all
X-str1
prgm(str1)

Re: un goto

Unread postPosted: 09 Feb 2009, 21:35
by critor
Très bien de penser à gagner de la place dès tes "débuts" en programmation. Tu iras loin!

Ce que tu demandes, lancer un programme à partir d'une chaîne de caractères est possible, mais uniquement en assembleur.

Ne prends pas peur: on te demande pas de programmer en assembleur...
Si c'est ce que tu veux, on doit pouvoir te trouver rapidement un petit utilitaire assembleur tout fait qui fait ça sur 83+ et 84+.


Le seul truc dommage (selon ce que tu veux faire) est que tu perds alors la compatibilité avec les calculatrices de type 83/82Stats/82Stats.fr.
Il faudrait donc faire une 2ème version, en remplaçant le programme assembleur par un autre (et qui peut-être ne fonctionnera pas tout-à-fait pareil... donc quelques modifications avant et après son lancement peuvent être nécessaires...)

Re: un goto

Unread postPosted: 10 Feb 2009, 12:08
by Emyl
ok je vais chercher. Mais chaque sous programme risque de prendre pas mal de place, et de plus on n'en n'utilise qu'un à la fois. On ne peut pas archiver les programmes en mettant
Code: Select all
Archive prgm0
peut-on le faire en basic ?