Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=06da12782363a5a1c58062fdb4902d30Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Gestion des instances de struct
Aller à la page Précédente  1, 2, 3, 4, 5
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels -> En validation
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1843
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 01/02/13 18:57    Sujet du message: Citer

y-aurait-il d'autres choses à modifier ?
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1783
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 02/02/13 10:32    Sujet du message: Citer

Oui.

Déjà, tu n'as pas compris ce que TB t'a dit à propos de la méthode "Create". Tu l'as bien renommé mais ça ne suffit pas.
Il faut également renommer la méthode "CrtPatrol" en "create" pour la même raison et enlever ce conseil sur "inspirez-vous de CreateTimer". Les méthodes n'ont pas ce problème d'avoir des noms en conflit avec d'autres, puisque la syntaxe indique clairement au pré-compilateur de quelle méthode il s'agit. Une méthode est mise en "private" uniquement parce que l'auteur de la librairie ne veut pas qu'on puisse l'utiliser en dehors de la structure.

Et la méthode qui permet la création d'une instance doit s'appeler "create", c't'une norme du vJass suivie par tout le monde (et indiquée dans le manuel).

Ensuite, je trouve qu'il faudrait faire un petit paragraphe pour expliquer en quoi cette façon de faire a des avantages et des inconvénients par rapport à l'utilisation de TimerUtils.

Exemple d'utilisation de TimerUtils :
Secret:

Jass:
library Machin recquires TimerUtils // TimerUtilsEx plutôt, d'ailleurs

     struct Nom
          //les composants de la struct
          private timer t

          method destroy takes nothing returns nothing
                call ReleaseTimer( this.t )
                call this.deallocate()
          endmethod
         
          private static method Nom2 takes nothing returns nothing
               local thistype this = GetTimerData( GetExpiredTimer() )
               // Actions à exécuter en boucle pour une instance
          endmethod

          static method create takes /* ce que tu veux*/ returns thistype
                local thistype this = thistype.allocate()
               
                set this.t = NewTimerEx( this )
                call TimerStart( this.t, 0.01, true, function thistype.Nom2 )
               
                return this
          endmethod
     endstruct
endlibrary




C'est tout ce que je vois en ce qui me concerne.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1843
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 02/02/13 21:02    Sujet du message: Citer

Tirlititi a écrit:
Oui.

Déjà, tu n'as pas compris ce que TB t'a dit à propos de la méthode "Create". Tu l'as bien renommé mais ça ne suffit pas.

bin en mêm temps tb explique le minimum syndicale donc j'comprend jamais ses conseils ><
Citation:
Il faut également renommer la méthode "CrtPatrol" en "create" pour la même raison et enlever ce conseil sur "inspirez-vous de CreateTimer". Les méthodes n'ont pas ce problème d'avoir des noms en conflit avec d'autres, puisque la syntaxe indique clairement au pré-compilateur de quelle méthode il s'agit. Une méthode est mise en "private" uniquement parce que l'auteur de la librairie ne veut pas qu'on puisse l'utiliser en dehors de la structure.

Et la méthode qui permet la création d'une instance doit s'appeler "create", c't'une norme du vJass suivie par tout le monde (et indiquée dans le manuel).

s'pas de ma faute si sapeur ne l'explique pas dans son tuto u_u. à ce moment la c'est à lui de le rajouter comme mon tuto est une extension du sien... et moi je modifierais (sans l'expliquer).

Citation:
Ensuite, je trouve qu'il faudrait faire un petit paragraphe pour expliquer en quoi cette façon de faire a des avantages et des inconvénients par rapport à l'utilisation de TimerUtils.

Exemple d'utilisation de TimerUtils :
Secret:

Jass:
library Machin recquires TimerUtils // TimerUtilsEx plutôt, d'ailleurs

     struct Nom
          //les composants de la struct
          private timer t

          method destroy takes nothing returns nothing
                call ReleaseTimer( this.t )
                call this.deallocate()
          endmethod
         
          private static method Nom2 takes nothing returns nothing
               local thistype this = GetTimerData( GetExpiredTimer() )
               // Actions à exécuter en boucle pour une instance
          endmethod

          static method create takes /* ce que tu veux*/ returns thistype
                local thistype this = thistype.allocate()
               
                set this.t = NewTimerEx( this )
                call TimerStart( this.t, 0.01, true, function thistype.Nom2 )
               
                return this
          endmethod
     endstruct
endlibrary




C'est tout ce que je vois en ce qui me concerne.


... bin moi je propose un système, après les gens font ce qu'ils veulent... j'veux bien expliquer l'avantage mais si ce système existe c'est que celui la aussi a les siens... et vu toutes les possibilités de système qui existe pour faire à peu près la même chose, si j'devais le faire pour chacun d'entre eux j'en aurait pour le mois.
j'vais le faire mais j'vois pas réellement l'intérêt de le faire pour un et pas pour tous les autres.
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1783
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 02/02/13 21:15    Sujet du message: Citer

Parce que "chaque façon de faire a ses avantages et ses inconvénients" a pour corollaire "pour chaque situation donné, il existe une façon de faire qui est meilleure que les autres".

Et ce serait bien de donner l'idée à tes lecteurs du genre de situation dans lesquelles ta méthode est mieux que les autres.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 03/02/13 12:40    Sujet du message: Citer

Jass:
method destroy takes nothing returns nothing
    local integer i = this.i

A quoi elle sert cette variable locale Rolling Eyes.

Sinon je pense que pour un tuto, tu devrais mettre des noms plus explicites que I et i (je sais, je suis mal placé pour dire ça).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1843
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 07/02/13 23:07    Sujet du message: Citer

Tirlititi a écrit:
Jass:
          static method create takes /* ce que tu veux*/ returns thistype
                local thistype this = thistype.allocate()
               
                if thistype.last == 0 then
                    set thistype.last = this
                    set this.prev = this
                    set this.next = this
                    // call TimerStart peut être mis là.
                else
                    set this.prev = thistype.last
                    set this.next = thistype.last.next
                    set thistype.last.next.prev = this
                    set thistype.last.next = this
                    set thistype.last = this
                endif

                return this
          endmethod


petite question, ceci :
Jass:
           if thistype.last == 0 then
                set thistype.last = this
                set this.prev = this
                set this.next = this
            else
                set this.prev = thistype.last
                set this.next = thistype.last.next
                set thistype.last.next = this
                set thistype.last = this
            endif

n'est pas suffisant ?
Jass:
                    set thistype.last.next.prev = this

revient à faire
Jass:
                set thistype.last = this

ou alors j'ai mal compris le principe
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1783
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 08/02/13 00:08    Sujet du message: Citer

Oui, tu as bien compris le principe, mais non ce n'est pas suffisant.
Il suffit pas d'avoir un principe, il faut aussi le mettre en œuvre.

Secret:

Je te laisse méditer là-dessus Cool


_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1843
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 08/02/13 23:02    Sujet du message: Citer

en faite c'est nul en jass ce genre de truc oO à chaque modification d'une instance faut mettre à jours les maillons de la chaines environnant !! archi pas pratique... alala il manque que des pointeurs au vjass Smile
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7142
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 09/02/13 00:59    Sujet du message: Citer

Bouah, suffit de faire le code une fois, puis de copier/coller.
Je ne pense pas me tromper en disant qu'une liste chainée est rarement (jamais ?) implémenté de façon native dans un langage.
Et il existe des codes en vJass (sur hiveworkshop ou autre) permettant que la gestion interne de la linked list soit (plus) transparent.

Pour les pointeurs tu en utilises déjà, en gros tous les handle.
Maintenant oui on ne pas pointer sur un entier, et de même on ne peut pas choisir si on passe un paramètre par "référence" ou par "valeur", c'est inhérent au type même du paramètre, mais là on parle des lacunes du jass, c'est donc très difficile, voir impossible d'ajouter cela au vJass, de façon utile et raisonnable en tout cas (je n'ai pas vraiment réfléchit à la question néanmoins)
Le return bug permettait d'utiliser des pointeurs pour tous les types hormis integer, boolean, et peut être real.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 1959
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 09/02/13 10:39    Sujet du message: Citer

Troll-Brain a écrit:
Je ne pense pas me tromper en disant qu'une liste chainée est rarement (jamais ?) implémenté de façon native dans un langage.

http://www.cplusplus.com/reference/list/list/?kw=list
http://msdn.microsoft.com/fr-fr/library/he2s3bh7(v=vs.80).aspx
http://dlang.org/phobos/std_container.html#.SList
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7142
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 09/02/13 11:33    Sujet du message: Citer

Je voulais dire implémenté directement dans le langage, en tant que type, pas inclus dans les library standard (j'aurais du le préciser).
Est ce le cas dans ce que tu donnes en lien ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 16/02/13 12:03    Sujet du message: Citer

Troll-Brain, faut que tu m'expliques pourquoi tu veux pas rendre tout ça automatique avec un module :
Jass:
module Stack //Je sais pas comment l'appeler :P
    readonly static thistype array stack
    readonly static integer count = 0
    readonly integer inx = 0
    method index takes nothing returns nothing
        if inx != 0 then
            return
        endif
        set count = count + 1
        set inx = count
        set stack[inx] = this
    endmethod
    method deindex takes nothing returns nothing
        if inx == 0 then
            return
        endif
        set stack[inx] = stack[count]
        set stack[count] = 0
        set stack[inx].inx = inx
        set  inx = 0
    endmethod
endmodule


Comme ça, en une seule ligne on a tout Smile.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7142
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 16/02/13 12:24    Sujet du message: Citer

Parce que c'est super simple et court comme code, suffisamment pour l'inliner, ce qui ne justifie pas le "requirement", après stoi qui voit, je ne prétend pas détenir la vérité absolue et universelle hein.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels -> En validation Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2, 3, 4, 5
Page 5 sur 5

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com