π
<-
Chat plein-écran
[^]

Aide programmation Lua

Pour TI-Nspire OS 3.0 ou ultérieur.

Aide programmation Lua

Message non lude Thuthur78 » 13 Jan 2015, 20:57

Bonjour à tous je suis nouveau sur les forum de Ti Planet et aussi en programmation en Lua. Je ne métrise pas de langages mais j'ai envi d'apprendre. En ce moment je souhaite créer un programme pour les sciences de l'ingénieur sur les amplificateurs opérationnels, non pas que je n'ai pas envi d'apprendre mon cours (meme si ca me servira au controle) mais surtout pour apprendre à coder. J'ai beau chercher sur internet des tutoriels pour apprendre mais pour le Lua ils sont très difficiles à trouver et je ne trouve pas la plupart du temps ce que je cherche.

Sur ce programme j'ai deja réalisé une bonne partie du codage mais en parties séparées, j'aurais besoin de votre aide pour améliorer le code (vous penserez surement que le code est dégueu mais bon je débute) et m'aider à tous relier

1ere partie l'accueil + le menu et l'affichage des différents montages d'ampli
Code: Tout sélectionner
platform.apilevel = '1.0'     
screen = platform.window
W = screen:width()
H = screen:height()

function on.paint(gc)  --j'affiche l'accueil
   local titre = image.new("   ") --j'ai viré les images car trop de caractères (j'utilise le Ti-Nspire Scrpting Tool si vous avez une autre solution je suis preneur)
   local imw = titre:width()
   local imh = titre:height()
   gc:drawImage(titre, (W - imw)/2, (H - imh)/2)
   gc:setColorRGB(255, 255, 255)
   gc:setFont("sansserif", "b", 20)
        local sh2 = gc:getStringHeight("SI")
        gc:drawString("SI", 5, 15+sh2/2)
        gc:setFont("sansserif", "b", 15)
        local sh1 = gc:getStringHeight("sciences de l'ingénieur")
        gc:drawString("sciences de l'ingénieur", 5, 15+sh2/2+sh1/2)
end

function affichage(menuparent,option)  --le menu
if option=="Comparateur" then
  AOPco()
elseif option=="Ampli inverseur" then
  AOPin()
elseif option=="Ampli non-inverseur" then
  AOPnin()
elseif option=="Suiveur" then
  AOPsu()
elseif option=="Trigger" then
  AOPtr()
end
screen:invalidate()
end

Menu = {
{"AOP",
  {"Comparateur",affichage},
  {"Ampli inverseur",affichage},
  {"Ampli non-inverseur",affichage},
  {"Suiveur",affichage},
  {"Trigger",affichage}
}
}

toolpalette.register(Menu)

function AOPco()  --on affiche le comparateur
   function on.paint(gc)
      local imgco = image.new("  ")  -pareil ici
      local imw1 = imgco:width()
      local imh1 = imgco:height()
      gc:setColorRGB(150, 150, 150)
      gc:fillRect(0, 0, W, H)
      gc:drawImage(imgco, (W-imw1)/2, 15)
   end
end

function AOPin()
   function on.paint(gc)
      local imgin = image.new("   ")
      local imw2 = imgin:width()
      local imh2 = imgin:height()
      gc:setColorRGB(150, 150, 150)
      gc:fillRect(0, 0, W, H)
      gc:drawImage(imgin, (W-imw2)/2, 15)
   end
end

function AOPnin()
   function on.paint(gc)
      local imgnin = image.new("  ")
      local imw3 = imgnin:width()
      local imh3 = imgnin:height()
      gc:setColorRGB(150, 150, 150)
      gc:fillRect(0, 0, W, H)
      gc:drawImage(imgnin, (W-imw3)/2, 15)
   end
end

function AOPsu()
   function on.paint(gc)
      local imgsu = image.new("  ")
      local imw4 = imgsu:width()
      local imh4 = imgsu:height()
      gc:setColorRGB(150, 150, 150)
      gc:fillRect(0, 0, W, H)
      gc:drawImage(imgsu, (W-im4)/2, 15)
   end
end

function AOPtr()
   function on.paint(gc)
      local imgtr = image.new(
      local imw5 = imgtr:width()
      local imh5 = imgtr:height()
      gc:setColorRGB(150, 150, 150)
      gc:fillRect(0, 0, W, H)
      gc:drawImage(imgtr, (W-im5)/2, 15)
   end
end


2eme partie est pour écrire un résultat
Code: Tout sélectionner
screen = platform.window
input = "?"  --on défini input

function on.paint(gc) --on défini le crayon puis on crée un string avec input
   gc:setPen("medium", "smooth")
   gc:setColorRGB(0, 0, 255)
   gc:drawString("R1 = "..input.." R", 8, 10, "top")
end

function on.charIn(touche) --je lis la touche sur laquelle j'appui
   if input == "?" then
      input = touche   --c'est pour enlever le ? au début, pour toute modif ceci n'est pas nécessaire tout comme celle qui redéfinie input = ? a la fin
      screen:invalidate()
   else
      if touche == "k" then -- si la touche est k on multipli par 1000
         input = input.."000"
      elseif touche == "M" then -- si la touche est M on multipli par 1000000
         input = input.."000000"
      else
         input = input..touche  --sinon on allonge la string avec la touche sur laquelle on vient d'appuyer
      end
      screen:invalidate() --on raffraichi l'écran
   end
end

function on.backspaceKey()  --si on appui sur dell on efface
   input = string.usub(input, 0, -2)
   screen:invalidate()
   if input == "" then -- si input est vide il vaut "?"
      input = "?"
      screen:invalidate()
   end
end


3eme partie pour sélectionner la zone dans laquelle on va écrire
Code: Tout sélectionner
screen = platform.window
valeur = 1  --valeur equivaut au numero du rectangle
noir = {0, 0, 0}
bleu = {240, 176, 1}
c1, c2, c3 = unpack(bleu), unpack(noir), unpack(noir)  --juste pour définir les couleurs au debut sinon il crash

function on.paint(gc)  --on dessine trois rectangle
   gc:setPen("medium", "smooth")
   gc:setColorRGB(c3)
   gc:drawRect(15, 20, 70, 30)
   gc:setColorRGB(c2)
   gc:drawRect(15, 50, 70, 30)
   gc:setColorRGB(c1)
   gc:drawRect(15, 80, 70, 30)
   gc:setColorRGB(unpack(noir))
   gc:drawString("valeur = "..valeur, 250, 35)  --j'écris la valeur du rectangle dans un coin pour moi (sera enlevé dans version finale)
end

function on.arrowKey(fleche)  --je controle la selection avec les fleches
   if fleche == "up" then
      valeur = valeur+1
      if valeur > 3 then
         valeur = valeur-1  --le numero du rectangle ne peut pas dépasser 3
      end
      screen:invalidate()
      selection()
   elseif fleche == "down" then
      valeur = valeur-1
      if valeur < 1 then  --le numero ne peut pas aller en dessous de 1
         valer = valeur+1
      end
      screen:invalidate()
      selection()
   end
end

function selection()  --a chaque valeur on defini les couleurs de chaque rectangle celui selectionné sera en bleu
   if valeur == 1 then
      c1, c2, c3 = unpack(bleu), unpack(noir), unpack(noir)
   elseif valeur == 2 then
      c1, c2, c3 = unpack(noir), unpack(bleu), unpack(noir)
   elseif valeur == 3 then
      c1, c2, c3 = unpack(noir), unpack(noir), unpack(bleu)
   end
end


je vous remerci d'avance pour votre aide et si vous voulez lorsque je l'aurai fini je pourrais le mettre a disposition de tout le monde.
Avatar de l’utilisateur
Thuthur78
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 33.3%
 
Messages: 3
Inscription: 13 Jan 2015, 20:20
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: TS-SI

Re: Aide programmation Lua

Message non lude issolah75 » 23 Jan 2017, 10:01

salut ,

j'aimerais savoir si tu as réussie a résoudre la programmation car je suis intéressé par ton programme

merci de me contacté par mail : ismael.Allouche@gmail.com
Avatar de l’utilisateur
issolah75Premium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 4.2%
 
Messages: 12
Inscription: 22 Avr 2016, 22:32
Localisation: paris 19
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: bac+3

Re: Aide programmation Lua

Message non lude Ti64CLi++ » 23 Jan 2017, 13:23

Si tu as envie d'apprendre le Lua, pour te faire tes propres programmes, un tuto très complet et très bien est disponible sur developpez : http://wxlua.developpez.com/tutoriels/lua/general/cours-complet/
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Aide programmation Lua

Message non lude Adriweb » 23 Jan 2017, 13:29

Aussi, cf. viewtopic.php?p=205689#p205689 pour des choses spécial Nspire
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb


Retourner vers Nspire-Lua

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
903 utilisateurs:
>891 invités
>7 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)