Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
Posté le: 29/01/13 00:01 Sujet du message: |
|
|
Sapeur just powned TB :p
Du coup j'attend plus que l'avis de tirlititi pour la validation _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises |
|
Revenir en haut |
|
|
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...)
|
Posté le: 29/01/13 02:12 Sujet du message: |
|
|
Parce que je ne pouvais pas rester sur un epic fail j'ai fait une version avec une linked list :
Jass: | library
globals
//quelques constant private
private constant real PERIOD = 0.03
endglobals
struct Nom
private thistype prev
private thistype next
private static thistype last = 0
// les composants de la struct
method destroy takes nothing returns nothing
call this.deallocate() // l'instance est bien détruite, donc recyclée
set this.prev.next = this.next
set this.next.prev = this.prev
set thistype.last = this.prev
endmethod
private static method nom2 takes nothing returns nothing
//celle qui exécutera les instances une à une
local thistype this = thistype.last
local thistype last = this
if this == 0 then
return
endif
loop
set this = this.next
//les actions à exécuter pour chaque instance : this
// on peut détruire this sans problème
call this.destroy()
exitwhen this == last
endloop
endmethod
static method create takes /* ce que tu veux*/ returns thistype
local thistype this = thistype.allocate()
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
return this
endmethod
static method onInit takes nothing returns nothing
call TimerStart(CreateTimer(),PERIOD,true,function thistype.nom2)
endmethod
endstruct
endlibrary |
Cela dit je l'ai fait pour le fun , j'ai bien conscience que contrairement à l'autre solution c'est plus difficile à retenir par coeur, et faut réfléchir, surtout pour construire la method create.
Je ne l'ai pas testé il peut y avoir des erreurs. Et oui il y a des éléments perfectibles. _________________
Le violet, c'est moche.
Dernière édition par Troll-Brain le 29/01/13 12:29; édité 5 fois |
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 29/01/13 11:50 Sujet du message: |
|
|
Oui, oui, Sapeur avait raison (enfin, comme je l'ai dit, ça évite ta méthode pour trouver le "i" en bouclant sur toute la struct à chaque fois qu'on détruit une instance, Full).
Après, la double-linked list, moi je suis pas habitué à en utiliser, mais ça a ses avantages et ça m'a l'air de demander le même nombre de variable, donc c'est vraiment selon les goûts de chacun.
Par contre, je pense pas que ça fonctionne comme c'est fait là, TB ^^.
Déjà, le static "last" est initialisé à 0 et ce n'est pas une instance valide. Ça pose quand même plusieurs problèmes (l'instance 1 sera mal initialisée, par exemple). Je propose ça pour ".create()" :
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 |
Ensuite, ta loop se termine directement ^^. Je propose ça pour la loop (à priori, si le timer n'est lancé que quand il y a au moins une instance, on a pas besoin du "if") :
Jass: | private static method nom2 takes nothing returns nothing
//celle qui exécutera les instances une à une
local thistype this = thistype.last
local thistype last = this
if last == 0 then
return
endif
loop
set this = this.next // Pour faire en sorte que le "thistype.last" soit le dernier de la boucle
// au cas où il serait détruit.
//les actions à exécuter pour chaque instance : this
// on peut détruire this sans problème
call this.destroy()
exitwhen this == last
endloop
endmethod |
Pour le ".destroy", je crois qu'on n'a pas non plus d'autre choix que de gérer la destruction de la dernière instance à part :
Jass: | method destroy takes nothing returns nothing
if this.next == this then
set thistype.last = 0
// call PauseTimer ici
else
set this.prev.next = this.next
set this.next.prev = this.prev
set thistype.last = this.prev
endif
call this.deallocate() // je préfère le mettre à la fin par principe ^^
endmethod |
Je précise que c'est tout autant pas testé que le tien ^^. _________________
|
|
Revenir en haut |
|
|
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...)
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 29/01/13 14:01 Sujet du message: |
|
|
Petit test du code que tu as mis pour te dire pourquoi j'ai fait des modifications :
Étape 0 :
- last = 0
- last.next = 0
- last.prev = 0
Étape 1 (création d'une instance h1) :
- h1.prev = 0
- h1.next = 0
- 0.prev = h1
- 0.next = h1
- last = h1
Donc là, on voit déjà que ça se comporte comme si y'avait 2 instances valides : h1 et 0 (alors que 0 n'a pas été initialisé et est invalide comme instance de struct).
Étape 2 (création d'une instance h2) :
- h2.prev = h1
- h2.next = 0
- h1.prev = 0
- h1.next = h2
- 0.prev = h2
- 0.next = h1
- last = h2
Et l'instance "0" reste dans la liste circulaire... _________________
|
|
Revenir en haut |
|
|
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...)
|
|
Revenir en haut |
|
|
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
Posté le: 29/01/13 17:10 Sujet du message: |
|
|
Donc mon tuto est validé ou pas ? >< _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises |
|
Revenir en haut |
|
|
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...)
|
Posté le: 29/01/13 17:58 Sujet du message: |
|
|
fulldragon a écrit: | Donc mon tuto est validé ou pas ? >< |
T'as pas honte d'interrompre notre conversation ? _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Cho'gall Floodeur prématuré
Inscrit le: 05 Nov 2010 Messages: 696 Sujets: 56 Spécialité en worldedit: Cartes Melee
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 29/01/13 18:40 Sujet du message: |
|
|
Hum, hum. Vlad t'a fait remarqué des fautes d'orthographe au début de la page 2, on est à la fin de la page 4 et tu ne les as toujours pas corrigées?
_________________
|
|
Revenir en haut |
|
|
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...)
|
|
Revenir en haut |
|
|
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
Posté le: 29/01/13 18:49 Sujet du message: |
|
|
j'aurais pu vous proposé une liste chainée non circulaire mais après réflexion j'me suis dit que c'était pas très intéressant au vu de ce que je voulais faire avec, et du but de ce tutoriel.
Tirlititi a écrit: | Hum, hum. Vlad t'a fait remarqué des fautes d'orthographe au début de la page 2, on est à la fin de la page 4 et tu ne les as toujours pas corrigées?
|
je vois même pas où il trouve une faute dans "apparaitre"...
et "j'ai mi" a été corrigé. _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises |
|
Revenir en haut |
|
|
Vladadamm Floodozaurus
Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
|
Posté le: 29/01/13 19:21 Sujet du message: |
|
|
C'est apparaître, pas apparaitre...
EDIT Tirlititi : post modéré _________________
|
|
Revenir en haut |
|
|
Tirlititi
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
|
Posté le: 29/01/13 19:30 Sujet du message: |
|
|
Citation: | Gestion des instances de struct |
Citation: | chaque instance sauvegardée dans la structure |
Citation: | chaque cycliste a ses propres caractéristiques |
Citation: | une boucle passant en revue |
Citation: | gérer des actions exécutée par un utilisateur |
Citation: | C'est vers ces cas là |
Citation: | J'ai mis dans les method_ create et destroy le minimum syndical qui doit apparaitre. |
Citation: | Et sinon t'expliques pas pourquoi on est obligé de mettre tout ça ? |
Citation: | Pour ce qui est des variables que j'ai déjà mis, elles sont indispensables |
Citation: | en plus d'être indispensables elles sont généralement suffisantes. |
Citation: | c'est elle qui sera appelée au cours de la map. |
Citation: | Elle est donc là |
Citation: | C'est à ce moment là que le timer est utile, celui-ci |
Citation: | puisque la method contient une boucle passant en revue toutes les instances de structure_ |
Citation: | Fais un exemple sinon ils vont se faire c**** |
Citation: | À la différence que cette method n'est pas static |
Citation: | la struct est susceptible de leak |
Citation: | Ce qui donne ce que j'avais déjà mis là haut : |
Citation: | J'te conseille de revenir vite fait sur le membre privé. |
Citation: | la case de notre tableau This qui s'est libérée |
Citation: | La case libérée étant le numéro d'instance de l'instance supprimée... C'est là qu'on va s'en servir. |
Citation: | mettre à jour_ le numéro d'instance de l'instance déplacée |
Citation: | à ce moment là [...] à ce tour là |
Citation: | Imaginez ce problème |
Citation: | surtout la method create en fait_ |
Citation: | la propriété de fonction banale rattachée |
Pinaise, qu'est-ce que c'est génial de faire remarquer leurs erreurs aux autres !
...
Non, en fait c'était horrible. Je le referai plus jamais, de reprendre les fautes d'un post aussi long ><.
J'ai pas considéré comme fautes les absences de négation ni les accords des mots anglais (mais parfois t'accordes, parfois pas, faudrait choisir).
Après, l'orthographe n'est pas la seule chose à revoir, mais ce sera pour un autre jour pour moi... (c'est des détails, le tuto est plutôt bien) _________________
|
|
Revenir en haut |
|
|
kungfu-sheep Anomalie floodiforme
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
|
Posté le: 29/01/13 19:47 Sujet du message: |
|
|
je t'accorde que pour le coup j'ai pas super bien rédigé ce tuto.... (d'habitude j'y attache beaucoup plus d'importance mais l'inspiration me fuit depuis quelques temps)
pour ces fautes d'orthographes... mea culpa ^^
édit : tout corrigé... merci tir pour cette relecture ^^" _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises |
|
Revenir en haut |
|
|
|