π
<-
Chat plein-écran
[^]

Aide programmation Lua

Pour TI-Nspire OS 3.0 ou ultérieur.

Aide programmation Lua

Unread postby 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: Select all
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: Select all
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: Select all
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.
User avatar
Thuthur78
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 87.5%
 
Posts: 3
Joined: 13 Jan 2015, 20:20
Gender: Not specified
Calculator(s):
Class: TS-SI

Re: Aide programmation Lua

Unread postby 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
User avatar
issolah75Premium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 4.2%
 
Posts: 12
Joined: 22 Apr 2016, 22:32
Location: paris 19
Gender: Not specified
Calculator(s):
Class: bac+3

Online

Re: Aide programmation Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 71.8%
 
Posts: 3155
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

Re: Aide programmation Lua

Unread postby Adriweb » 23 Jan 2017, 13:29

Aussi, cf. viewtopic.php?p=205689#p205689 pour des choses spécial Nspire
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 51.6%
 
Posts: 12625
Images: 1081
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb


Return to Nspire-Lua

Who is online

Users browsing this forum: No registered users and 5 guests

-
Search
-
Featured topics
Concours TI-Planet-Casio de rentrée 2019. 3 défis pour plus d'une 15aine de calculatrices graphiques et nombre de goodies sortant de l'ordinaire ! :D
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
594 utilisateurs:
>555 invités
>33 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)