Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [tutoriel] Le lua FX
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

[tutoriel] Le lua FX

Posté le 27/03/2014 19:34

Ce tutoriel est en cours de construction !
C'est une rampe de lancement au langage Lua adapté à nos chères calculatrices !

Sommaire :
I) Mise en place sur calculatrice
II) Liste des noms réservés
III) Les variables
IV) Les bibliothèques
V) Les librairies
VI) Les notations


I) Mise en place sur calculatrice

Pour pouvoir lire et interpréter le lua sur votre calculatrice:
téléchargez Lua FX, regadez le tuto, puis installez le fichier .g1a dans votre calculatrice Casio à l'aide de Fa 124 et regadez le tuto.

De la documentation est fournit avec des exemples et les add-ins correspondants.

Pour pouvoir programmer sur ordinateur, utilisez lua helper, lua Edit ou bien Edit sur calculatrice. Le format .lua n'est composé que de texte, vous pouvez aussi utiliser un éditeur de texte lambda, mais vous n'aurez pas de coloration syntaxique.

Si vous programmez sur PC, le logiciel Fa 124 permet le transfert des données vers la calculatrice (sur la page FA124 : regardez le paragraphe II puis B mais au lieu de mettre un *.g1e ou *.g1a, mettez "All files" (*.*) et cherchez votre fichier).

II) liste des noms réservés
Le Lua est sensible à la casse, c'est à dire que "Nom" n'est pas pareil que "nom" ou "nOm"
On peut écrire et utiliser n'importe quelle variable dans le programme sauf :

and - break - if - else - elseif - end - false - true - for - do - until -
in - local - nil - not - repeat - then - return - or - while - function


Ces noms réservés vous seront utiles pour les boucles, les conditions, les fonctions, … c'est ce que l'on apelle la sémantique.

III) Les variables

Il existe plusieurs sortes de variable :

nil : cette valeur sert à dire que cette variable ne contient (plus) rien. Vous pouvez donc rendre n'importe quelle variable nil. Par soucis de place en mémoire, il est judicieux de lancer le garbagecollector régulièrement afin de supprimer toutes ces variables inutiles.
Sa déclaration ou attribution se fait :
a=nil


nombre : la variable contient un nombre( équivalent du float en C) [entre 3.4*10^48 et -3.4*10^(-48)]
déclaration :
nb==412 ou nb==4*10^6


table : la variable devient une table (liste ou matrice)
déclaration :
A={} [green]-- on initialise la table[/green]
A[12]=8 [green]-- on met 8 dans la 12eme case[/green]
tab["lvl"]=nil [green]-- il n'y a pas d'erreur[/green]

Une table peut contenir des chaînes de caractères (strings) ou des fonctions, elle n'a pas de taille définie, on peut ajouter une variable à n'importe quel indice, que l'on peut utiliser d'autres choses que des nombres pour accéder à une case du tableau. Si on appelle une case qui n'existe pas, la valeur sera nil.

String : la variable contient un mot ou une phrase. Il prend très peu de place

boléen : la variable contient juste true ou false
déclaration :
A=(1==3) [green]-- A contient false puisque que 1≠3[/green]
A=(y+x)≥z [green]-- A contient true ou false[/green]


userdata : réservé aux fichiers

function : la variable réfère à une fonction de la librairie ou une fonction lua
déclaration :
line=nbdraw.line [green]-- la fonction ligne réfère à la fonction nbdraw.line[/green]

function rectangle(x1,y1,x2,y2)  [green]--rectangle est une fonction lua de 4 paramètres[/green]
line(x1,y1,x1,y2) [green] --dessine le rectangle[/green]
line(x2,y1,x2,y2)
line(x1,y1,x2,y1)
line(x1,y2,x2,y2)
end -[green]- on signale la fin de la fonction[/green]

rectangle(10,10,20,20) [green]-- on rappelle rectangle dans le programme[/green]


Les types de variable :
Chaque variable peut être local, global ou constante.

global : une variable globale est dans tous le programme et peut être récupérée par un autre programme.
déclaration :
y=2 [green]-- variable globale y prend la valeur 2[/green]


local : une variable locale est plus vite appelée qu'une variable gobale mais n'est visible que dans le programme où elle est.
déclaration :
local x=18 [green]-- x sera plus vite appelé que y mais ne reste que dans un bouts de code[/green]


IV) les bibliothèques

Chaque fonction du luaFx appartient à une bibliothèque.

Exemple :
nbdraw.line(x1,y1,x2,y2) [green]-- line appartient à la bibliothèque nbdraw[/green]


On peut déclarer un alias de fonction lorsque l'on s'en sert souvent dans le programme. Cet alias permet d’accéder plus rapidement aux fonction et réduire le nom de la fonction : on peut donc les personnaliser.

Exemple :
line=nbdraw.line [green]-- la fonction devient un alias[/green]
... code
line(x1,y1,x2,y2) [green]-- dessine avec la fonction nbdraw.line[/green]

wait=misc.wait [green]-- fonction d'attente[/green]
... code
wait(x) [green]-- utilise la fonction misc.wait()[/green]


Mais key(numero_de_la_touche) n'a pas vraiment de bibliothèque car c'est une fonction instantanée incluse dans l'add-in luaFX.

V) les librairies

Dans un programme lua, on peux appeler un autre programme avec des fonctions et/ou des variables.

Il faut donc créer une librairie que le programme principal lira et ajouter :
def="module exemple"
au début de la librairie puis avec le code suivant inclus dans la programme principal, on peut appeler les fonctions qui sont dans cette librairie comme si elles étaient déclarées dans le programme principal.

le code
Cliquer pour enrouler

local print = nbdraw.print

f,err = misc.modload ( "nom_de_la_lib") [green]-- le nom doit faire moins de 8 caractères[/green]
if f == nil -- si il y a erreur, f = nil
then
  print(err) [green]-- err contient le message d'erreur[/green]
end [green]-- affiche l'erreur lors du chargement du fichier[/green]
f() [green]-- execute le fichier (et donc defini les fonctions et les variables globales qui deviennent accessibles)[/green]


VI) les notations

Vous aurez peut être remarqué comment sont mis les commentaires :

code_sur_la_ligne[green]-- commentaire ne prenant qu'une ligne[/green]
code [green]--[[ commentaire sur plusieurs lignes
...
on met ce que l'on veut dedans]]--[/green]



Tenmatx Hors ligne Membre Points: 996 Défis: 2 Message

Citer : Posté le 30/03/2014 12:24 | #


Tu te lances dans un tutoriel sur un langage peu connu de la communauté, donc je pense qu'il faudrait plutôt t'encourager au lieu de te faire toutes ces remarques .
Mes programmes de maths
Mes programmes de maths

Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Mes meilleurs jeux
Mes meilleurs jeux

Jeu gagnant des 48h CPC n°12

Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 12:26 | #


mais ce n'est pas grave
au contraire, on progresse de ses erreurs
In Arch, I trust ! And you ?
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 30/03/2014 12:56 | #


-florian66- a écrit :
au moins il n'y a que lui qui s'acharne sur moi

Florian66, tu devrais faire preuve de modestie, tu pousses les administrateurs à la sanction et ton comportement à notre égard nous déplait beaucoup malgré nos avertissements.
Tenmatx a écrit :
Tu te lances dans un tutoriel sur un langage peu connu de la communauté, donc je pense qu'il faudrait plutôt t'encourager au lieu de te faire toutes ces remarques .

Je suis entièrement d'accord avec toi.

Toutefois, un tutoriel rempli de fautes n'est pas attractif et ne donne pas envie d'être lu. Toute l'équipe soutient les initiatives, tout comme j'avais personnellement soutenu le LuaFX auparavant (mise en avant sur la page d'accueil et le forum, liste des fonctions luafx, gestion des fichiers .lua et lc, catégorie spécifique dans les programmes...). En effet, j'y voyais un langage a mi-chemin entre le C et le Basic Casio. Cependant, le LuaFX n'a jamais percé, vous trouverez un 48h CPC dedié à ce langage, et en fouillant le forum, vous trouverez des membres qui ont aussi voulu le (re)lancer. Dont Louloux pour ne pas le citer.

Il y a un juste équilibre entre donner des conseils et des remarquer afin d'améliorer le tutoriel, et devoir repasser derrière du fait d'un nombre trop important de fautes. Avec ce tutoriel vous avez l'ambition de relancer un langage, je ne me trompe pas ? Donc, faites un effort sur l'écriture pour gagner en crédibilité. C'est tout ce qu'on vous demande.
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 13:18 | #


Merci Totoyo (encore une autre fois ) de me le faire remarquer mais quand j'ai dit :
-florian66- a écrit :
au moins il n'y a que lui qui s'acharne sur moi
j'ai oublié la virgule ce qui devrait donner :
au moins, (pour les 30 fautes !) il n'y a que lui qui s'acharne (peut être exagéré) sur moi
je veut dire par là, que Louloux me fait des remarques plutôt négatives sur les fautes ( je sais je ne ferais jamais parti du CPML) tandis que les autres n'en font pas.
In Arch, I trust ! And you ?
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 30/03/2014 13:44 | #


Tu peux peut être faire une première partie sur la mise en place du Lua sur la calculatrice, enfin, ce qui'il faut, comment ça fonctionne en gros, enfin, je ne sais pas si c'est un tutoriel voué à être complet (une rampe de lancement vers le Lua) ou juste sur les aspects de la programmation... Enfin, sinon, bonne initiative et continue !
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 13:45 | #


je peut mettre : comment le mettre sur calculatrice ?
merci Nemhardy
In Arch, I trust ! And you ?
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 30/03/2014 13:57 | #


Ça peut être bien comme tuto mais en effet il faut que tu t'appliques et que tu y passes un peu de temps
Après faudrait faire une partie sur la syntaxe et notamment les commentaire parce que tu mets direct:
blabla -- Sert a ça

Mais on sais pas vraiment si c'est une notation normalisée
En tout cas bonne chance

Totoyo a écrit :
Florian66, tu devrais faire preuve de modestie, tu pousses les administrateurs à la sanction et ton comportement à notre égard nous plait beaucoup malgré nos avertissements.


édit totoyo : c'est pour voir si vous lisez :-p
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 13:59 | #


Je comprends pas le sens de " notation normalisé "
In Arch, I trust ! And you ?
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 30/03/2014 14:04 | #


ben par exemple pour le C, la notation des commentaires est "//" pour une ligne , "/*" pour un bloc , en basic c'est " ' " pour une ligne ...
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 14:07 | #


pour le lua c'est : "--"
In Arch, I trust ! And you ?
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 30/03/2014 14:13 | #


Justement, ce n'est écrit nulle part dans le tutoriel, alors le lecteur lambda ne le sait pas
spécifie le dans les conventions d’écriture et cela marchera très bien
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Pseudopourri Hors ligne Membre Points: 182 Défis: 9 Message

Citer : Posté le 30/03/2014 14:45 | #


On peut coder en Lua avec un bloc note (pour psp en tout cas c'est possible).
je code en...
je code en:

-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby

Il faut savoir que je ne maitrise pas parfaitement tout ces langages

[/spoiler]
Remerciment

Ma calto: graph 75
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 14:50 | #


oui normalement tu peux sous le format .lua quand tu enregistres

Ajouté le 30/03/2014 à 14:57 :
et tu peux l'ouvrir avec bloc note et le sdk lua
In Arch, I trust ! And you ?
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 30/03/2014 15:41 | #


De toute manière, le code Lua n'est que du texte (comme pour beaucoup de langages), non ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 15:41 | #


oui ce n'est que du texte
In Arch, I trust ! And you ?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 30/03/2014 18:55 | #


petits ajouts a faire: tu ne différencie pas assez les variables globales et locales (le locales ne peuvent être utilisées que dans le bloc dans le quel elle ce situent, et celle globales dans tout un programme ou même être accessible par une autre programme)

autre chose: il y a le commentaire d'une ligne -- = //, mais il existe aussi le bloc commentaire --[[ = /* et ]] = */
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 19:16 | #


Je tient en compte tes remarques pertinentes
J'ai juste une question sur l'utilisation des librairies :
Je sais pas trop comment utiliser la librairie INPUT tu sais comment faire ?
In Arch, I trust ! And you ?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 30/03/2014 19:26 | #


j'ai oublié comment on utilise les libs en lua désolé
je vais devoir me replonger dedans un petit coups si je veux donner un coup de main
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 30/03/2014 19:37 | #


Ah oui ça serait vachement bien parce que je ne connais pas toutes les possibilités du lua.
In Arch, I trust ! And you ?
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 25/05/2014 18:14 | #


-florian66- a écrit :
On peut déclarer une fonction, en général, lorsque l'on s'en sert souvent dans le programme.

Un exemple avec certaines fonctions.
Exemple :

line=nbdraw.line -- la fonction devient une variable
... code
line(x1,y1,x2,y2) -- cela dessine avec la fonction nbdraw.line

wait=misc.wait -- fonction d'attente
... code
wait(x) -- cela utilise la fonction misc.wait()



hum, déclarer une fonction, c'est la créer avec function mafonction() {} non ? Là, ce serait plutôt créer un alias (enfin je crois)
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 25/05/2014 18:16 | #


ben moi ça marche avec par exemple
line=graydraw.line


il y a du code puis
line(1,1,128,64,4) -- 4 est la couleur
refresh


EDIT :je n'utilise pas les bons termes
In Arch, I trust ! And you ?

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 61 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd