software.wikisort.org - Langage_de_programmation

Search / Calendar

Micro Lua DS est une implémentation aujourd'hui open-source pour la Nintendo DS du langage de programmation Lua de la même manière que celle qui existe pour la PSP avec Lua Player. Elle se base sur la bibliothèque de dessin conçue par Brunni, la µLibrary, dont elle tire par ailleurs son nom.

Micro Lua DS
Date de première version 2008
Auteur Risike
Développeur Risike, Reylak et la communauté Micro Lua DS
Dernière version 4.7.2 (5 janvier 2014)
Influencé par Lua, µLibrary
Système d'exploitation Nintendo DS, Nintendo DSi, Nintendo 3DS
Licence GNUGPL version 3
Site web Forum officiel

Historique



Développement


Micro Lua est un projet initialement développé par Risike à partir de . Le , celui-ci rend son travail open source, ne souhaitant plus continuer le développement. Micro Lua est alors repris par la communauté.

Il est à noter que le projet de la µLibrary a été abandonné par Brunni au moins à partir de la fin de l'année 2010[1], c'est pourquoi MicroLua maintient sa propre version.

Courant , la gestion du projet est transférée de GoogleCode à SourceForge, amenant une réflexion sur la direction à prendre et posant plus clairement les objectifs du développement de Micro Lua.


Versions


Seules les versions majeures sont répertoriées ici. Toutes les révisions sont disponibles sur le dépôt SourceForge de Micro Lua.

1.0 bêtaPremière version
1.0.1Correction de bug mineure à propos de la gestion des exceptions
2.0 bêtaNombreuses améliorations de performance, gestion native des fichiers INI et amélioration de la gestion des exceptions
2.0 bêta 2Correction d'un exemple
3.0 pre-releaseCette version destinée aux membres du forum apporte, outre de nombreuses corrections de bugs, le support du Wifi et des fonctionnalités rumble ("vibration") et motion ("mouvement"), et une meilleure implémentation du son.
3.0 finaleVersion publique de la 3.0, corrige quelques bugs par rapport à la pre-release
4.0Amélioration de la gestion de la mémoire et du Wifi, ajouts aux capacités de dessin (couche alpha), accès aux informations stockées dans la console
4.1Modification du système de la transparence alpha, diverses corrections de bugs, changement du logo de l'exécutable DS
4.2Changements dans les constantes ; constitue une version finale après les diverses versions bêta de la 4.1
4.5Ajoute les fonctionnalités du Nifi (connexion DS à DS directe), change le shell officiel
4.6Donne le contrôle du clignotement de la DEL et améliore le mode de débogage et l'affichage des écrans d'erreur
4.7Intégration de l'Embedded File System, correction du bug de l'heure des 3DS, nombreuses améliorations sous-jacentes

À venir


Le projet latent des améliorations de MicroLua est de compléter l'éventail des fonctionnalités, notamment par l'ajout du microphone ou la lecture de fichiers audio dans des formats plus courants. D'un point de vue technique, l'idée a été émise de faire évoluer la syntaxe générale vers une orientation objet (à l'exemple de la gestion de Timers ou des Sprites). Il est aussi prévu de migrer l'ensemble du code de l'interpréteur en C (actuellement, une partie des fonctionnalités est codée en Lua).

L'utilisation du middleware LuaJIT est envisagée, afin d'améliorer significativement les performances du langage Lua.


Syntaxe générale


Micro Lua se basant sur le langage Lua, il ne sera détaillé ici que des exemples d'utilisation de Micro Lua. De plus, ces informations ne sont pas exhaustives; l'API complète peut être trouvée ici.


Hello world


-- Condition usuelle afin de quitter la boucle principale "infinie" du programme lors d'une pression sur le bouton Start
while not Keys.newPress.Start do

-- Mise à jour des contrôles
Controls.read()

-- Affiche "Hello world!" sur l'écran du haut, dans le coin supérieur gauche
screen.print(SCREEN_UP, 0, 0, "Hello world!")

-- Commande la mise à jour des écrans
render()

end

L'ensemble de la boucle, de la fonction Controls.read() et render() constitue la structure de base d'un code avec Micro Lua.


Affichage de formes primaires



Lignes

screen.drawLine(ecran, x1, y1, x2, y2, couleur)

Micro Lua définit un type personnalisé servant à stocker une information de couleur : le type Color.


Rectangles

Les coordonnées indiquées sont respectivement celles du coin supérieur gauche et du coin inférieur droit.

-- Rectangle vide
screen.drawRect(ecran, x1, y1, x2, y2, couleur)

-- Rectangle plein
screen.drawFillRect(ecran, x1, y1, x2, y2, couleur)

-- Rectangle dégradé
-- Les couleurs correspondent à chaque coin du rectangle, de haut en bas et de gauche à droite
screen.drawGradientRect(ecran, x1, y1, x2, y2, couleur1, couleur2, couleur3, couleur4)

Images


Micro Lua, tout comme la µLibrary, distingue les deux mémoires générales de la Nintendo DS : la mémoire vidéo, désignée par VRAM, et la mémoire principale, qui correspond à RAM. Les images peuvent être chargée indifféremment dans l'une ou l'autre des mémoires, mais l'affichage depuis la VRAM est plus efficace. Micro Lua supporte les types GIF, PNG et JP(E)G.

-- Chargement d'une image dans la VRAM
img = Image.load(cheminFichier, VRAM)

-- Affichage de l'image
-- Il est possible de n'afficher qu'une partie de l'image, à partir des coordonnées internes sourceX et sourceY, sur largeur/hauteur pixels
screen.blit(ecran, x, y, img[, sourceX, source Y, largeur, hauteur])

-- Rotation d'une image
-- Les coordonnées sont celles du centre de la rotation (par défaut, le centre de l'image)
Image.rotate(img, angle [, xCentre, yCentre])

-- Agrandissement / réduction d'une image
Image.scale(image, longueur, largeur)

Contrôles


La gestion des contrôles se fait via des conditions sur les variables suivantes :


Fonctionnalités


Outre les dessins et la gestion des contrôles vus ci-dessus, Micro Lua intègre de nombreuses autres fonctionnalités :


Notes et références


  1. Brunni explique que la µLibrary n'est plus maintenue (post du 12/12/2012) : http://www.playeradvance.org/forum/showthread.php?t=37119

Voir aussi



Liens externes






Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии