mercredi 23 janvier 2013

[Instant Prog] Lua et Löve

Je ne saurais dire si ce n'est que très sobre, ou juste moche...
"What is Löve?" - Maurice Guégan, auteur de Mari0.

Salut à tous! Ce soir, ça va parler de programmation, ça fait un peu trop longtemps que je n'en ai pas parlé...


Pour résumer, je me suis un peu remis au Lua pour tester deux-trois trucs, notamment le moteur graphique LÖVE, vu que Mari0 s'en sort pas si mal question performances. Donc j'installe Löve, je rajoute le lien de l'exe dans le %PATH% (utile pour faire love *machin*), et je m'y attaque!

(Addendum : je teste ici le marqueur d'expansion, ce billet est un peu long)


Je ne pense absolument pas que le Lua a été au départ conçu pour l'OO (orienté objet, C++/Java/Python like quoi), vu sa syntaxe assez soft et permissive (pas besoin de ";", mais on peut  toujours les mette). Voir du Lua OO me dérange un peu, car j'ai été très habitué au LuAFX de Vebveb, interpréteur pour Casio GRAPH 100(+) (oui, je sais...) assez limité, qui se retrouvait à être du Basic, mais plus simplifié et rapide.

Qu'en est-il de Löve? Löve fonctionne sur un même système de threads (fonctions qui tournent indépendamment du processus principal) comme le ferait XNA (C# pour Windows/X360), ou bien Slick (Java, pour PCs et Android, même si encore en bêta) : une fonction update et une fonction render, avec des callbacks (fonctions appelées que lors d'un évènement) "mousePressed", ou bien "keyPressed", par exemple.

La structure est bien pensé, mais il me manque une chose chère à Slick : la gestion intégrée des shapes. Ne pas pouvoir créer un Rectangle pour voir si un objet le croise sans à refaire tout le bousin est assez ennuyeux, c'est un truc bien pratique :/ (je risque fort de refaire mon moteur de platformer, car j'ai compris comment j'en pourrais tirer profit)

Pour tester le machin, je me suis un peu demandé ce que je pourrais faire: un platformer? Lol, non. Un sokoban comme je sais si bien faire? Plein le dos d'en faire à tire larigot... Bon allez, je vais faire un Picross, histoire de changer. (la flemme d'expliquer, allez jeter un coup d'oeil sur la page wiki, qu'on en finisse).
J'avais déjà fait un mignon petit picross en Basic Casio, qui supportait toute taille de grille, et qui chargait automatiquement les indications en fonction de la grille en elle-même, pour économiser la place de stockage de grilles.
Je commence d'abord par afficher la grille. Je commence à utiliser de plus en plus foreach, j'espère que ce machin est plus optimisé qu'un banal for. La gestion des indications est relativement simple à faire, vu que j'ai déjà réfléchi dessus :-°, mais le petit truc qui va commencer à m'ennuyer est de pointer le curseur de la souris correctement, et vu que je ne peux stocker une liste avec des objets Rectangle pour vérifier ensuite sur lequel je pointe plus tard par flemme de me renseigner sur les objets en Lua, bah j'improvise : une fonction assez pourrave, mais pour le coup, ça tient, et visiblement, ça gère de multiples tailles de grille! Chouette!

On se retrouve donc avec un autre embryon de jeu, un picross, fait en Lua, qui... marche? J'ai pas encore ajouté la vérification de victoire -_-"

Bon allez, j'arrête de divaguer, je vous laisse, mon test est toujours à la traîne, ça change pas à d'habitude, mais j'réfléchis pour quelques idées...

1 commentaire: