µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Fonction dans les paramètres d'une autre?
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide
Sujet précédent :: Sujet suivant  
Auteur Message
fantassin Gold


Hors ligne

Inscrit le: 22 Jan 2013
Messages: 4

MessagePosté le: Jeu 2 Mai 2013 - 18:20    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Bonjour a tous,


je souhaiterais savoir si il est possible d’appeler une fonction dans les paramètres d'une autre fonction.  Shocked
Concrètement voila mon code:



 
Code:
compteur=1
function CHOIX(xmot, ymot,mot1)
 if compteur==1 and Keys.held.A then
    mot1()
 end
end



xmot et ymot sont les coordonnées du mot
mot1 est le premier mot il est utilisé dans une autre partie de la fonction


A partir de cela comment est-il possible que lorsque compteur==1 et qu'on appuie sur A la fonction du mot1 soit exécutée sachant qu'elle existe


merci d'avance


Revenir en haut
Publicité






MessagePosté le: Jeu 2 Mai 2013 - 18:20    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Jeu 2 Mai 2013 - 18:56    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Une fonction n'est qu'une simple variable, donc oui ceci est logiquement possible.

As-tu essayé ? Si oui, y a t-il une erreur ?

En tout cas, j'ai pas compris ce que tu souhaitait faire concrètement @_@

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Jeu 2 Mai 2013 - 19:48    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Ton code devrait marcher tel quel fantassin gold :p

j'ai failli abrégé ça en Fanta, fuck
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Ah6


Hors ligne

Inscrit le: 14 Jan 2013
Messages: 12
Localisation: France

MessagePosté le: Jeu 2 Mai 2013 - 20:38    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Salut j'étais avec fantassin gold quand il a testé son code et ça met comme erreur que mot1() met pas définit.

Revenir en haut
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Jeu 2 Mai 2013 - 21:09    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

On peut voir le code complet ?

Histoire d'y comprendre un minimum :p

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
Ah6


Hors ligne

Inscrit le: 14 Jan 2013
Messages: 12
Localisation: France

MessagePosté le: Jeu 2 Mai 2013 - 21:15    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

je ne les pas la dsl c'est fantassin gold qui la  Confused

Revenir en haut
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Jeu 2 Mai 2013 - 22:11    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Pour pouvoir être utilisable, une fonction doit passer en argument en temps que variable. Si tu la met en paramêtre avec les () ça marchera pas, la valeur sera celle retrnée par la fonction. En gros tu dois faire:
Code:

func = loadstring("tafonction(paramètres)")
function truc(func)
 func()
 [...]
end

Merciderien Wink
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Jeu 2 Mai 2013 - 22:37    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Citation:
Pour pouvoir être utilisable, une fonction doit passer en argument en temps que variable. Si tu la met en paramêtre avec les () ça marchera pas, la valeur sera celle retrnée par la fonction. En gros tu dois faire:

Code:
func = loadstring("tafonction(paramètres)")
function truc(func)
 func()
 [...]
end

Merciderien


C'quoi cette complication débile avec un loadstring Geeker ?

Puis ce qu'il a fait est tout à fait juste, dans la limite du code qui nous a été montré.

Tareponseétaitinutile Smile

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Jeu 2 Mai 2013 - 23:16    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

C'est pas débile c'est pour faire pls court >< en tout cas, c'est (presque) comme ça que je fais. Si j'ai fais une erreur de lecture, c'est aussi peut-être parce que je suis sur DS (pas très ergonomique) et qu'il est 00h13 . Bonne nuit !
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Quent42340


Hors ligne

Inscrit le: 03 Juin 2009
Messages: 1 388
Localisation: Veauche

MessagePosté le: Jeu 2 Mai 2013 - 23:44    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Code:
compteur=1
function CHOIX(xmot, ymot,mot1)
 if compteur==1 and Keys.held.A then
    mot1()
 end
end


Personnellement, ce code me paraît juste.
Si ça dit que mot1() n'est pas définie y'a quelque chose de bizarre.
Faut juste vérifier que l'initialisation de la fonction mot1() est bien faite.
_________________
Mes projets: https://github.com/Quent42340


Revenir en haut
Visiter le site web du posteur
Papymouge
Modérateur

Hors ligne

Inscrit le: 10 Mai 2009
Messages: 693
Localisation: Vittel (88)

MessagePosté le: Jeu 2 Mai 2013 - 23:49    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Je pense que le problème vient du fait que mot1  et passer en paramètre et du coup devient une simple variable et plus une fonction.
donc pour pouvoir executer la fonction passer à la variable mot1, je ferais un truc avec loadstring du genre : loadstring(mot1)()
_________________
La page de mes projets
L'ancienne page de mes projets


Revenir en haut
Quent42340


Hors ligne

Inscrit le: 03 Juin 2009
Messages: 1 388
Localisation: Veauche

MessagePosté le: Jeu 2 Mai 2013 - 23:53    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Mais arrêtez avec vos loadstring, une fonction EST une variable en Lua, et est gérée comme telle.
Son code tel qu'il nous l'a montré est correct.

Voici un code similaire que j'ai testé et qui est fonctionnel:

Code:
function func()
    print("Hello world")
end

function callf(f)
    f()
end

callf(func)

_________________
Mes projets: https://github.com/Quent42340


Revenir en haut
Visiter le site web du posteur
Papymouge
Modérateur

Hors ligne

Inscrit le: 10 Mai 2009
Messages: 693
Localisation: Vittel (88)

MessagePosté le: Ven 3 Mai 2013 - 00:44    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

oui oui je m'excuse, j'ai fait un test similaire au tient de mon coté et resultat souhaité sans erreur.
Je suis desolé d'avoir répondu bêtement et d'avoir fait des tests après... pas malin cette façons de faire, du coup je suis obligé de poster 2 fois pour me contredire en plus :-/ 


Donc à vérifié pourquoi ça marche pas pour fantassin gold, est ce que la fonction n'est pas écrasée à un moment dans ton code, ou déclarée à un mauvais niveau en local, ou autre. 
_________________
La page de mes projets
L'ancienne page de mes projets


Revenir en haut
fantassin Gold


Hors ligne

Inscrit le: 22 Jan 2013
Messages: 4

MessagePosté le: Ven 3 Mai 2013 - 09:58    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

Coucou les gens,
merci d'avoir été nombreux à répondre et comme demandé je vais mettre le code en entier mais avant quelque explication:
 cette fonction me servira comme son nom l'indique pour faire un choix. Le but est d'encadrer par un rectangle rouge le premier mot à certaines coordonnées et lorsqu'on descend le rectangle rouge descend aussi.
petit exemple: dans mon menu de départ j'ai 3 rectangles plein les uns en dessous des autres, centré, de même taille.
 

 Lorsqu'on allume Nouvelle partie est entouré par le rectangle rouge, si on descend c'est Continuer... pareille si on appuie sur Up



 
Citation:
screen.drawFillRect (SCREEN_DOWN,78,33,178,53,blanc)
screen.drawFillRect (SCREEN_DOWN,78,86,178,106,blanc)
screen.drawFillRect (SCREEN_DOWN,78,139,178,159,blanc)
screen.print (SCREEN_DOWN,90,38,"Nouvelle partie",noir)
screen.print (SCREEN_DOWN,90,91,"Continuer",noir)
screen.print (SCREEN_DOWN,90,144,"Option",noir)









Voila et j'ai voulu m'attaquer a plus dur  Twisted Evil  
mais j'y arrive pas Rolling Eyes
Je voulais faire que lorsque l'on appuie sur A la ds exécute la fonction du mot encadré
voila mon code complet de cette fonction:



 
Citation:
compteur=1
function CHOIX(xmot,ymot,mot1,mot2,mot3,ecartx,ecarty)
  if Keys.newPress.Down then
compteur=compteur+1
  end
  if Keys.newPress.Up then
compteur=compteur-1
  end
  if compteur==1 then
screen.drawRect(SCREEN_DOWN ,xmot, ymot, xmot+string.len(mot1)*6+4, ymot+13, rouge)
  elseif compteur==2 then
screen.drawRect(SCREEN_DOWN, xmot, ymot+ecarty, xmot+string.len(mot1)*6+4+ecartx, ymot+13+ecarty, rouge)
 elseif compteur==3 then
screen.drawRect(SCREEN_DOWN, xmot, ymot+2*ecarty, xmot+string.len(mot1)*6+4-ecartx, ymot+13+2*ecarty, rouge)
  end
  if compteur==1 and Keys.held.A then
mot1()
  elseif compteur==2 and Keys.held.A then
mot2()
  elseif compteur==3 and Keys.held.A then
mot3()
  end
  if compteur<=1 then
compteur=1
  end
  if compteur>=3 then
compteur=3
  end
end








En rouge c'est la ou je sais pas quoi mettre ça fonctionne pas mot1() n'est pas défini.
On a essayé avec Ah6 de mettre en paramètre une variable et qui dans la fonction CHOIX cette variable prend comme valeur la fonction voulu mais toujours rien Crying or Very sad  

Petite chose a savoir, a chaque fois que j'utilise cette fonction j'ai 3 rectangles deja fait comme on la vu plus haut avec mon menu
et à elseif compteur==3 then 
 ...
j'ai mis -ecartx car la seule fois ou je vais utiliser ecartx c'est lorsque mes rectangles seront décalés selon x ici:



 
Citation:
function DIFFICULTE()
 screen.drawFillRect (SCREEN_DOWN,10,20,110,40,blanc)
 screen.drawFillRect (SCREEN_DOWN,150,90,260,110,blanc)
 screen.drawFillRect (SCREEN_DOWN,10,160,110,180,blanc)
 screen.print (SCREEN_DOWN,40,27,"Facile",rouge)
 screen.print (SCREEN_DOWN,180,97,"Moyen",rouge)
 screen.print (SCREEN_DOWN,40,167,"Difficile",rouge)
end









Voila si il y a d'autres incompréhension n'hésitez pas, merci beaucoup de votre aide 


Revenir en haut
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Ven 3 Mai 2013 - 10:06    Sujet du message: Fonction dans les paramètres d'une autre? Répondre en citant

je vois pas trop de différences entre loadstring() et une déclaration normale de fonction ... à part la taille ! Pour 1 fonction dans une autre, autant utiliser loadstring() ... Dites-moi si je me trompe, mais pour moi, le résultat est le même !
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 03:48    Sujet du message: Fonction dans les paramètres d'une autre?

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com