Aller au contenu
971jmd

j'apprend le LUA mai

Recommended Posts

il faut faire return de la variable a et de la variable b.

Là tu ne fais que un retour de a...

 

et pour les exploiter en-dehors de la fonction, il faut affecter le retour de ta fonction a des variables :

 


local MonRetourA
local MonRetourB

MonRetourA, MonRetourB = coco(200,10)

if MonRetourA == 220 then print("uuuuuuu") end
if MonRetourB == ......
if MonRetourA + MonRetourB == ......

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Mon problème est

pour le moment mon code if....  ne prend en charge que R1 qui est la multiplication

 

function Calcul(x, y)
local  r1 = x * y
 local r2 = x + y
  
return r1, r2
end
  
if Calcul (2, 2) == 8 then print("ok pou R1")  ----multiplication 2x2
elseif Calcul (10, 10) == 10 then print("R2 ")  ---- adition 10 + 10
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ok :13: merci

coco que je suis 

function Calcul(x, y)
local  r1 = x * y
 local r2 = x + y
  
return r1, r2
end

 
 r1 =  Calcul(10 , 10)
 r2 = Calcul(2, 2)
  
if r1 == 1000 then print("ok pou R1")
elseif r2 == 4 then print("R2 ")
end

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu ne devrais pas utiliser les même nom de variable dans ta fonction et hors de ta fonction.

Là ça marche grâce au local que tu as mis dans la fonction, sinon... :4:...

Partager ce message


Lien à poster
Partager sur d’autres sites

:wacko:

Comme ça 

 arbre =  Calcul(10 , 10)
 arbre2 = Calcul(2, 2)
  
if arbre == 100 then print("ok pou R1")
elseif arbre2 == 4 then print("R2 ")
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as raison il faut que je sois plus attentif aux variables 

:60:

Partager ce message


Lien à poster
Partager sur d’autres sites

Quand tu programmes, la rigueur dans le choix du nom des variables, ainsi que leur portée, la visibilité des syntaxes et l'indentation est une chose très très importante !

 

là tu es sur des petit bout de code, le jour où tu fais plus gros, tu seras perdu en un rien de temps, et pas capable de debugger....

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Mai avant de commencer un projet je réalise un plan. 
 

j’ai une app sur iOS très pratique pour remettre ses idées en place. 
Il s’agit de: MindNode  

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

Aujourd'hui j'essaye de comprend le fonction et l'utilité des boucles FOR,   while"  et   repeat.

 

J'essaye de réalisée un clignotement avec un modul FIBARO (Value =  1 Value=0 .....)  mai je ne sais pas quelle boucle utilisée..

 

et envoyer un break ou une condition pour STOP

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

pour s'amuser, il te faut un module à faire clignoter, et un autre comme un interrupteur pour l'arrêter/démarrer.

 

après tu fais :

  while le_module_interrupteur = 1 do
    --ton code de pour faire clignoter la lampe
  end

tu mets le module interrupteur en trigger de la scène.

s'il passe à 1, ça va clignoter, si tu le passe à 0, ça va s'arrêter.

Modifié par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

ok je teste 

 

La semaine dernière j'ai crée une fonction pour incrémentée une variable globale, fonction qui fonctionne tresbien

 

est-t-il possible de faire la même chose avec une variable LOCAL  ,

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai fait comme ça mai manque quelque chose 

 

local p = {}
 
function p.variables()
    local variable = 1
 
    variable = variable +1
    return variable
end


 if a == a then  p.variables() end
  
 if p.variables() == 2 then print ("2") end
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aurai souhaité que  : if a == a then  p.variables(valeur)  end

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pour petit code plus simple, pour éviter de crée une variable globale 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

J’essaye d’aider un membre du forum qui cherche à faire une inversion entre s1 et s2 d’un module 

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà ce que j’ai proposé

 

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai testé une fonction comme ça 

 

mai impossible d'exploiter le foncA 

 

si foncA = 20 alors.......ne fonctionne pas 


function foncA (z , x)
   resultat =     z + x
      return  resultat   
end

local a = 100

if a == 100 then  
  foncA (10, 10) 
  print(resultat)
end 


if foncA ()  == 20 then  
  print("ok")
  end 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai trouver 

 

function foncA (z , x)
   resultat_foncA =     z + x
      return  resultat_foncA   
end

if a == a then  
  foncA (20, 230) 
  print(resultat_foncA)
end 

local azerty = resultat_foncA
if resultat_foncA == 250 then  
  print("ok")
  end 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Non je n'ai pas trouver :(

pk    print (foncA(resultat_A_foncA)) me renvoi 10 et 100

 

pour moi print (foncA(resultat_A_foncA))  = 100

et 

print (foncA(resultat_B_foncA))  = 10

function foncA (a , b)
   resultat_A_foncA =     100
   resultat_B_foncA =     10
   
      return  resultat_A_foncA    ,  resultat_B_foncA
end

print (foncA(resultat_A_foncA))

 

Partager ce message


Lien à poster
Partager sur d’autres sites

En gros je n'arrive à dissocier les deux argument  

 

avec un seul argument ça fonctionne 

 

function foncA (z )
   arg_A =     z 
      return  arg_A   
end


local aze = 10
if aze == 10 then   foncA (2) 
  print(arg_A)
end 


if arg_A == 2 then  print("ok youppp")
  end

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

tu te mélanges à nouveau les pins eau avec les variables ! 

 

tu transmets, lors de l'appel de la fonction, un argument qui est le retour de la fonction !

 

et tu du coup tu n'utilises pas a et b dans ta fonction !

Partager ce message


Lien à poster
Partager sur d’autres sites

Si je souhaite affecter une valeur 2 à l’argument A :

1>>>>   if  ......  then foncA (2) 

ou

2>>>>   if ....... then resultat_A_foncA (2)

 

Et pour la lire 

3>>>>.    If  resultat_A_foncA = 2 then.....

ou

4>>>>.     if fonc_A = 2 then ......

 

il y a une heure, 971jmd a dit :

Non je n'ai pas trouver :(

pk    print (foncA(resultat_A_foncA)) me renvoi 10 et 100

 

pour moi print (foncA(resultat_A_foncA))  = 100

et 

print (foncA(resultat_B_foncA))  = 10


function foncA (a , b)
   resultat_A_foncA =     100
   resultat_B_foncA =     10
   
      return  resultat_A_foncA    ,  resultat_B_foncA
end

print (foncA(resultat_A_foncA))

 

function foncA (z)
Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

×