Omnimaga

Calculator Community => [FR] Section Francophone => [FR] Programmation Axe Parser => Topic started by: trotithuthur on September 18, 2011, 05:33:10 am

Title: réutiliser GDB ?
Post by: trotithuthur on September 18, 2011, 05:33:10 am
Bonjour à tous, un nouveau problème vient à moi... Est-il possible de supprimer (ou changer...) un pointeur statique? Par exemple (le problème):

Code: [Select]
:If A=1
:[...]->GDB1
:End
:If A=2
:[......]->GDB1
:End

(Les [...] représente des codes hexa corrects)
Le problème est que lors de la compilation, j'obtiens une erreur Dupplicate sur le 2eme GDB...
Comment parer cela? A part stocker le 2eme code dans GDB2 etc...
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 18, 2011, 07:46:56 am
Est-il possible de supprimer (ou changer...) un pointeur statique?
Mots-clés dans la question: pointeur statique.
C'est un pointeur statique, pas une variable. Donc, non, ton code est inconcevable.

Pourrais tu développer un peu plus ce que tu veux, pour trouver une solution plus adaptée ?
Genre donner l'hex code présent dans chaque [] et dire ce que tu veux en faire, par exemple (sprite,...).
Title: Re: réutiliser GDB ?
Post by: trotithuthur on September 18, 2011, 08:12:04 am
Désolé, en fait, il s'agit de code pour des map, et donc par exemple A est le numéro du niveau,et chaque niveau une map différente, mais je crois avoir parer le problème, en utilisantdes fonctions, je réécris l'affichage de la map un GDB= 1 niveau, et j'appelle la fonction dans la partie déplacement du personnage par exemple.
Je ne sais pas si j'ai été assez clair... :/
En gros (très gros...):
Code: [Select]
:Repeat getkey(15)
:code déplacement
:If A=1
:sub(N1)
:End
:If A=2
:sub(N2)
:End
:End
:Lbl N1
:[...]->GDB1
:sub(AFF)
:Return
:Lbl N2
:[...]->GDB2
:sub(AFF)
:Return
:Lbl AFF
:code affichage map
:Return
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 18, 2011, 08:16:56 am
Problème: la routine AFF, comment elle sait avec quel pointeur elle doit afficher ?
Est-ce que tous les hex codes que tu mets dans tes GDB font la même taille ? Si oui, quelle taille ?
Title: Re: réutiliser GDB ?
Post by: trotithuthur on September 18, 2011, 08:33:39 am
Oui il font tous la meme taille, exemple:

Code: [Select]
[000000000000]->GDBX
[011011000110]
[011010111100]
[011100011100]
[011011111110]
[011111111110]
[011111111110]
[000000000000]
Mais je pense en effet au probleme de la fonction aff... je pense que je vais mettre ce code dans les fonctions N1... Parce que le pointeur à besoin d'être connu... donc bon, sinon on peut blinder la fonction AFF de conditions, mais ça revient au même, une fonction d'affichage différente pour chaque GDB...
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 18, 2011, 09:57:45 am
Oui il font tous la meme taille
:w00t:
Solution simple:

mets ceci au debut de ton code (en remplaçant les corneries que j'ai mises par les vraies données de tes niveaux).

.level1
[000000000000]->GDB1
[011011000110]
[011010111100]
[011100011100]
[011011111110]
[011111111110]
[011111111110]
[000000000000]
.level2
[000000000000]
[011011000110]
[011010111100]
[011100011100]
[011011111110]
[011111111110]
[011111111110]
[000000000000]
.etc


Puis affecte le numero du niveau à une variable, par exemple N.
Au début, N=0 et tu es au niveau 1.
Puis tu passes au niveau suivant avec N++. Donc N=1 et tu es au niveau 2.
En fait, N=niveau-1.

Pour la routine AFF, fait en fonction du pointeur N*48+GDB1.
Si je sais compter, cela devrait marcher.
Title: Re: réutiliser GDB ?
Post by: trotithuthur on September 18, 2011, 10:09:07 am
Merci! Effectivement j'avais penser à un truc comme ça, pour le choix de la 'partie' du GDB, je mettais GDB1+8, etc... x)
Tu es sur du 48? Je mettrai plutôt 96...?
EDIT:j'ai du me gourer ailleurs, mais j'obtiens la bonne map avec 48, et 96...  ::)
RE-EDIT: tu as raison,c'est bien 48, au temps pour moi, donc merci, ça marche parfaitement :)
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 18, 2011, 10:17:42 am
Tu es sur du 48? Je mettrai plutôt 96...?
RE-EDIT: tu as raison,c'est bien 48, au temps pour moi, donc merci, ça marche parfaitement :)
C'est 48 et pas 96 car pour faire un nombre en hexa, il faut 2 chiffres. Donc tu as compté 96 chiffres mais il y a 48 nombres ;)
Title: Re: réutiliser GDB ?
Post by: trotithuthur on September 18, 2011, 10:23:18 am
Oui voilà 8*16, divisé par 2 :)
Encore merci ;)
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 18, 2011, 10:29:07 am
De rien :) moi aussi j' ai dû poser des questions un jour, donc j'aime bien rendre la pareille.
Title: Re: réutiliser GDB ?
Post by: Wellen on September 19, 2011, 02:45:47 pm
*bump*

Et si les codes hexa ne sont pas tous de la même taille ?
Title: Re: réutiliser GDB ?
Post by: Hayleia on September 20, 2011, 10:43:21 am
Dans ce cas, tu es dans la m peux faire ceci

[code hex 1]→GDB1
[code hex 2]→GDB2
[code hex 3]→GDB3
.etc
{GDB1,GDB2,GDB3,etc}→Str1


et le pointeur au debut du niveau se trouve à {Str1+N}, c'est-à-dire que pour accéder au premier octet du niveau actuel, tu fais {{Str1+N}}, et pour accéder au second octet du niveau actuel, {{Str1+N}+1}.
Cela devrait fonctionner théoriquement.
Crédits: Ceci m'a été inspiré par Aichi, pas tout à fait dans ces circonstances mais quand même.

En fait, tu stockes tous les pointeurs GDB à partir de Str1
Title: Re: réutiliser GDB ?
Post by: Wellen on September 20, 2011, 12:21:18 pm
Dans ce cas, tu es dans la m
:w00t:

Merci, je teste dès que j'en arrive à la partie-là de mon programme, je donnerai des nouvelles.
Title: Re: réutiliser GDB ?
Post by: noelthebest on October 08, 2011, 07:49:19 am
Ça sent le zContest ! :rire mechant:
Title: Re: réutiliser GDB ?
Post by: Wellen on October 08, 2011, 09:07:58 am
Ça sent surtout le nécropost O.O

Oui, c'est pour stocker les niveaux de Lost :)