probleme lua

Une question sur la programmation TI-Nspire? Ce foum est là pour vous aider.

probleme lua

Messagepar florian le 25 Août 2011, 10:48

bonjour,

Après avoir lu les tutoriels sur le site inspired lua ,j'ai plusieurs questions sur la programmation:

1/Est-ce qu'il y a une fonction qui permet a l'utilisateur d'entrer une chaine de caractère et de la stocker dans une variable?
2/Comment faire pour que le programme .lua soit convertis en .tns et comment l'envoyer ensuite sur la calculatrice sur la calculatrice?
(je suis sous l'os 3.02)

merci
florian
 
Messages: 3
Inscrit le: 25 Août 2011, 10:35

Re: probleme lua

Messagepar Levak92 le 25 Août 2011, 12:55

Bonjour,

1) Pour l'instant, les boites de dialogue de l'OS ne sont pas supportées en Lua, il faut recoder toi même ce principe.
C'est sûr que dans l'état actuel des choses quand on te dit "recoder", ça peut paraître très lointain... Pour avoir une souplesse de programmation en Lua sur TI-Nspire, il faut avoir réfléchi à son implémentation. De quel type de programme s'agit-il ? (jeu, programme pour maths/physique/chimie, cours et formulaire ..). A ma connaissance il y a deux manières de gérer un programme, et je crois que je vais en faire un tutoriel pour inspired-lua histoire que tout le monde ne repose pas la même question.

La première est de loin la plus élémentaire : une variable qui nous indique dans quel mode nous sommes : mode = "play", mode = "menu" ...
Ensuite, dans le code de chacun des éléments, on fait une condition sur le mode :

function on.paint(gc)
if mode == "play" then
.....
elseif mode == "menu" then
.....
end
end


La deuxième est une extensiblilisation de la première car il faut considérer tout élément dessinable à l'écran comme un objet. Si tu as regardé les tutoriels de Inspired-Lua, tu dois comprendre ce que cela veut dire. Ensuite, il suffit de considérer une liste de ces objets et le principal problème sera de savoir comment gérer ces objets, notamment, comment gérer les évènements de l'API Lua de la TI-Nspire, c'est à dire, faire des "redirections" :

function on.paint(gc)
obj[currentObjId]:paint(gc)
end

où bien sûr chacun de tes objets à une méthode paint(gc) qui lui est propre.

Comme cela tu peux gérer des boites de dialogue en définissant les évènements on.paint, on.backspaceKey, on.clearKey, on.charIn, on.enterKey, on.escapeKey et une variable qui te servira de tampon.

Je te laisse regarder mon code pour Request.lua
Levak92
 
Messages: 321
Inscrit le: 02 Juin 2010, 23:03
Localisation: France

Re: probleme lua

Messagepar florian le 25 Août 2011, 20:26

Merci d'avoir répondu aussi rapidement. Je vais regarder ton code.

Mais il me reste toujours la deuxième question : :D
2/Comment faire pour que le programme .lua soit convertis en .tns et comment l'envoyer ensuite sur la calculatrice sur la calculatrice?
(je suis sous l'os 3.02)
florian
 
Messages: 3
Inscrit le: 25 Août 2011, 10:35

Re: probleme lua

Messagepar Levak92 le 26 Août 2011, 02:56

florian a écrit:Merci d'avoir répondu aussi rapidement. Je vais regarder ton code.

Mais il me reste toujours la deuxième question : :D
2/Comment faire pour que le programme .lua soit convertis en .tns et comment l'envoyer ensuite sur la calculatrice sur la calculatrice?
(je suis sous l'os 3.02)


Oops, dans mon élan j'ai oublié de relire.

Tu as Luna (outil développé par ExtendeD) ou bien l'outil préliminaire de développement officiel couplé avec le logiciel TI-Nspire Computer Software.
Autrement dit, si tu n'as pas la licence de TI-Nspire Computer Software ou si tu n'aimes pas cliquer et préfère l'invite de commande, autant d'orienter vers Luna qui est multi-plateformes.

Ceci est le choix restrictif pour la contrainte "3.0.2".

Dans un autre registre, il y en a plein, dont l'éditeur oncalc : oclua
Les autres :
Lua2TNS (albertho)
LuaToTns (Adriweb)
makeTNS (JayTe)
etc...
Levak92
 
Messages: 321
Inscrit le: 02 Juin 2010, 23:03
Localisation: France

Re: probleme lua

Messagepar florian le 27 Août 2011, 16:02

Merci pour toute tes réponses.
J'ai un peu de mal à comprendre ton code, qu'est-il censée faire exactement?
florian
 
Messages: 3
Inscrit le: 25 Août 2011, 10:35

Re: probleme lua

Messagepar Levak92 le 28 Août 2011, 05:12

florian a écrit: qu'est-il censée faire exactement?


Comme son nom l'indique "Request" va créer un objet screen (que mon gestionnaire d'écran va prendre en charge) qui permet de demander une variable tout comme la commande Request en TI-Basic sur TI-Nspire.


Ma classe Screen permet de gérer des "écrans" indifféremment. Chaque écran, lorsqu'il est au premier plan, prend le contrôle des évents (du type on.charIn) laissant les autres figés.

C'est comme si on programmait plusieurs programmes en Lua. Remplace tous les Request: par on. et tu as (à quelques détails près) un programme à part entière qui affiche un rectangle avec une zone de saisie, un titre, etc ...

Une fois que l'on a validé l'entrée, la fonction passée en argument lors de l’instanciation est exécutée afin de garder un code clair est structuré.

Un exemple de création :
Code: Tout sélectionner
Request("Easy from Seed", "Enter the seed number", "", 5, "num", function(num) initGrid("easy", num)  end)


Ce code permet également de gérer des popups de type Text en TI-Basic. Il suffit de construire une instance de Request avec certains arguments à nil.

Exemple :
Code: Tout sélectionner
Request("Error", errorMsg, nil, 0, nil, function() end)
Levak92
 
Messages: 321
Inscrit le: 02 Juin 2010, 23:03
Localisation: France

Re: probleme lua

Messagepar tyann le 28 Août 2011, 10:20

Bonjour à tous
C'est effectivement un concept interressant qui mériterait un tuto bien détaillé pour les débutants comme moi.
Je ne comprends pas dans ce listing que font Pullscreen() et initVKB(paramètres).
Merci d'avance.
Et j'espère que TIBANK aura bientot un remplaçant.
tyann
 
Messages: 7
Inscrit le: 28 Août 2011, 10:12

Re: probleme lua

Messagepar Levak92 le 28 Août 2011, 15:21

tyann a écrit:Je ne comprends pas dans ce listing que font Pullscreen() et initVKB(paramètres).



Pullscreen() et Pushscreen(screen) sont des fonctions qui me permettent respectivement de dépiler et empiler des écrans dans la pile d'écrans. L'écran qui est au sommet de la pile est celui qui a le contrôle des évènements du type on.charIn(). En contre partie, tous les écrans sont dessinés (on.paint(gc)).

initVKB(type) est simplement un clavier virtuel pour le Nspire-Document-player car ce dernier ne capture pas les pressions du clavier, il faut donc faire tout à la souris. Tu peux l'oublier, c'est vraiment pas le plus important.
Levak92
 
Messages: 321
Inscrit le: 02 Juin 2010, 23:03
Localisation: France


Retourner vers Aide au développement sur TI-Nspire



Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron

© Copyright 2008 - Tous droits réservés.