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=f80f0ed48c6f91f4a49665e3d35712aeMé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

[vJass] Régénération/Dégénération
Aller à la page Précédente  1, 2
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 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: 04/04/12 16:48    Sujet du message: Citer

Vaut-il mieux que je laisse la fonction comme ça ou faire un truc comme je vais l'expliquer, qui permet de gagner en efficacité, mais avec une limite de regen/degen :
Je crée une TableArray array que j'utilise de cette manière :
Jass:
globals
    private TableArray t[X]
endglobals

function AddUnitRegeneration takes unit u, unit c, integer id, real degen returns nothing
    local integer i = GetUnitUserData(c)
    if t[i] == 0 then //Si la table n'est pas créée, on la crée
        set t[i] = TableArray.create()
    endif

    if t[i].has[id][0] then //Si l'unité a déjà des dégénérations
        set t[i].integer[id][0] = t[i].integer[id][0] + 1 //Nombre de degen = Nombre de degen + 1
        set t[i].real[id][t[i].integer[id][0]] = degeneration.create() //On stock dans le prochain emplacement vide la struct
    else //Sinon on initialise l'emplacement 0 et la struct
        set t[i].integer[id][0] = 1
        set t[i].real[id][1] = degeneration.create()
    endif
    //...
endfunction


Bon, ça réduit la complexité pour toutes les fonctions et la fonction HasUnitRegeneration aurait une complexité de O(1). Mais pour les autres la complexité serait de O(n) avec n = le nombre de degen sur l'unité et non le nombre de degen total comme ça l'était. Le problème c'est qu'il y aurait une limitation de dégénération par unité (que l'on pourrait paramétrer). Bon, c'est pas un gros problème puisque ça dépassera jamais 100 mais bon...
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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

MessagePosté le: 04/04/12 22:31    Sujet du message: Citer

Je n'ai jamais utilisé de Table 2D, si vraiment j'en ai besoin j'utilise simplement directement une hashtable.
Cela dit c'est vrai que la complexité a été réduite, mais ca me fait penser à du code spaghetti.
M'enfin j'ai vraiment la flemme de me pencher dessus plus que cela.
_________________
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: 25/04/12 16:57    Sujet du message: Citer

Grosse optimisation du code (enfin, l'optimisation se fera ressentir seulement s'il y a beaucoup de régénération sur la carte, sinon, ça ne change rien).
Puisqu'il y a encore ce problème de balise, il suffit de citer mon premier poste pour obtenir le code (si ça intéresse quelqu'un Wink).
_________________
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 -> Fonction Jass Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2
Page 2 sur 2

 
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