benja32

[tuto Lua] Envie D'apprendre La Programmation Lua ?

Messages recommandés

Cours n°1: Introduction à la programmation.

Bonjour! Bienvenue dans ce premier cours de programmation lua, consacré aux bases de la programmation.

Pour commencer vous devez savoir que vous n'avez pas besoin de programme spécial pour coder en lua! le bloc-note suffit largement (n'oublier surtout pas d'enregistrer votre code en .lua et non en .txt) mais il existe un environnement de développement propre au lua.

LuaIDE est très facile d'utilisation, voici un screenshot du programme en question:

luaide.jpg

Télécharger LuaIDE

Bon maintenant que vous savez rendre votre code lisible par le lua player, je vais vous expliquer comment l'utiliser et je vais vous donner une astuce!

Tout d'abord, je vais vous expliquer comment fonctionne lua player, télécharger la version 0.20 pour firmware 1.5 ICI

Maintenant placer luaplayer et luaplayer% dans le dossier game de votre memory stick.

Ensuite je vais vous montrer comment installer un script lua pour le lire par la suite avec luaplayer.

Dans le dossier luaplayer, se trouve un dossier Applications, dedans se trouve aussi plusieurs jeux, programme en lua deja présents dans le lua player. admettons que vous avez créé un jeux de voiture qui s'appelle "r-rally" et vous voulez le lire avec le lua player, pour ca créez un dossier "r-rally" dans Applications et mettez votre script lua MAIS je rappelle que le script doit être nommé "index.lua".

Voici la hiérarchie a respecter:

PSP -->game -->luaplayer%

-->luaplayer -->Applications -->r-rally -->index.lua

Maintenant vous n'avez plus qu'à lancer luaplayer via le menu jeux de votre psp.

Un peu plus haut je vous avais parlé d'une astuce, je vais vous expliquer en quoi elle consiste!

je ne sais pas vous mais moi quand je fais un jeu en lua je trouve plus beau et plus facile de le lancer directement via le menu jeu de la memory stick que de passer par le luaplayer, oui me direz vous mais comment !?

C'est facile tout d'abord télécharger CECI . Une fois téléchargé et extrait vous vous retrouvez avec jeulua et jeulua%, vous devez vous demander ce que c'est? Et bien je vais vous expliquer: l'eboot contenu dans jeulua est l'eboot du luaplayer 0.15, il va vous servir à lancer votre script lua sans passer par l'interface du luaplayer, mais comment?

En fait c'est très simple, il suffit de placer votre script lua dans le dossier jeulua et de le nommer script.lua et non plus index.lua. Maintenant dès que vous le lancerez, vous arriverez directement sur votre jeux ou programme lua!

Voila le premier cours est déjà fini!! Rendez-vous au numéro 2.

Cours n°2: Affichage de texte à l'ecran.

Bonjour

bienvenue dans le second cours de XtreamLua, nous allons vous apprendre au fil des cours comment programmer en lua.

Pour ce cours, nous allons commencer à afficher du texte sur l'écran, il faut tout d'abord définir une couleur dans une première variable.

rouge = Color.new(255,0,0)

Vous pouvez constater que j'ai donné le nom "rouge", j'aurais très bien pu l'appeler grenadine ou n'importe quel autre nom. Ensuite il y a "Color.new", n'oubliez surtout pas de mettre le "c" de "color" en majuscule sinon vous aurez un très beau message d'erreur. Enfin nous arrivons a la partie "(255,0,0)" ceci est le code de la couleur rouge, je vais vous montrer comment trouver les codes pour toute les couleurs que vous voulez.

Ouvrez paint puis cliquez sur "Couleurs" ensuite sur "Modifier les couleurs", vous obtiendrez une fenêtre comme celle-ci :

01.JPG

Cliquez sur "Définir les couleurs personnalisées >>" voici la fenêtre que vous obtiendrez :

02.JPG

Sur cette fenêtre, j'ai sélectionné la couleur rouge comme dans mon exemple et vous pouvez constater en bas à droite qu'apparaît le code de ma couleur "rouge".

Bon maintenant que vous savez définir une couleur on va passer au texte, on va définir une nouvelle variable que l'on va appeler "text" mais on aurait très bien pu lui donner le nom "intro".

text = "Mon premier programme en lua par benja32"

Voila, maintenant que les deux variables sont définies on va afficher le texte à l'écran.

screen:print (150,100,text,rouge)

Bon, maintenant je vais vous expliquer cette ligne de code, sûrement inconnue pour vous, "screen:print" est la fonction pour afficher du texte sur l'écran de la PSP. Ensuite vous devez vous demander ce que sont les deux chiffres, vous devez savoir que la PSP a un écran de 480pixel de longueur et 272pixel de hauteur, regardez cette image si vous ne comprenez toujours pas :

TaillePSP.jpg

Revenons en à nos moutons, 150 est l'endroit ou le texte va commencer sur la longueur de la PSP et 100 est l'endroit ou le texte va commencer sur la hauteur.

Donc maintenant nous avons ce code :

-- couleur (les commentaires sont repéré par deux tirets en début de ligne)rouge = Color.new (255,0,0)-- texttext = "Mon premier programme en lua par benja32"

Maintenant, nous devons ajouter la fonction "screen.flip()".

Cette fonction permet d'intervertir l'état des deux tampons, on parvient donc à faire apparaître le texte à l'écran mais cela ne dure qu'une fraction de seconde.

Pour laisser le texte en continue nous devons introduire une boucle conditionnelle :

"while true do" répète une action tant que la condition est remplie ( c'est-à-dire que tant que ‘while’ est respecté, l’opération s’effectuera) , ensuite on met screen.waitVblankStart() suivit de end pour dire que le code est terminé.

=> ‘end’ sert à ‘fermer’ le ‘while’ et screen.waitVblankStart() devra être présent a la fin de tous vos programmes. En général, essayez de ne pas le mettre plus d’une fois par code, vous risquez des erreurs !

Voici une image de ce que vous obtenez :

03.png

Voici le code source complet :

-- couleurrouge = Color.new (255,0,0)-- texttext = "Mon premier programme en lua par benja32"while true doscreen:print (150,100,text,rouge)screen.flip()screen.waitVblankStart()end

Téléchargez le code source complet ici

Cours n°3: Comment afficher des images.

Bonjour, bienvenue dans ce troisième cours, aujourd'hui nous allons apprendre comment afficher une image, voir plusieurs, sur l'écran de la PSP puis rajouter du texte par dessus.

Tout d'abords vos photo doivent être au format .png et ne pas

dépasser 480X272 (la taille de l'ecran PSP).

Ensuite on va affichr un background (fond d'ecran) puis rajouter

du texte dessus.

Bon pour commencer on va mettre une variable "bleu": plus

besoin d'explications, vous connaissez maintenant.

bleu = Color.new (0,0,255)

Après on va aller chercher le background

background = Image.load ("background.png")

Image.load permet de charger l'image, n'oublier pas de mettre le "i" de image en majuscule.

Je suppose que vous vous demandez où placer l'image, vous

devez la mettre à côté de votre script.lua

Si vous voulez faire un dossier images pour mettre toutes les

images de votre homebrew vous devrez charger l'image comme ça:

background = Image.load ("images/background.png")

Bon maintenant que l'on a fait ça, on va mettre la fonction pour permettre d'afficher l'image sur l'écran, pour cela on va utiliser screen:blit

donc ce qui va donner:

screen:blit (0,0,background)

Les coordonnées 0,0 sont utilisées pour mettre un background.

Resumé du code :

bleu = Color.new (0,0,255)background = Image.load ("images/background.png")screen:blit (0,0,background)

Voici ce qui va apparaitre à l'ecran (la PSP est l'image que j'ai utilisé) :

background.png

Maintenant ont va afficher du texte a l'écran donc sur l'image, je vais vous donner un petit truc mais qui est super important si vous voulez voir vos texte à l'ecran!

prenons 2 exemples:

screen:print ( 100, 00," La psp est une console portable génial", rouge)screen:blit (0,0,background)

et

screen:blit (0,0,background)screen:print ( 100, 00," La psp est une console portable génial", rouge)

Je crois que vous avez compris que l'exemple numero deux est le bon car si vous faites l'exemple numero 1, le texte sera afficher avant l'image donc l'image "recouvrira" le texte et il ne sera pas perçu a l'écran.

Continuons notre code, nous allons afficher comme texte ceci:

text = "XtreamLua est un site proposant"text2 = "plusieurs cours de programmation en lua"screen:print ( 100,100, text, bleu)screen:print ( 100, 120, text2, bleu)

Voila je crois que vous avez compris le système, voici le code source complet et un screenshot du résultat final.

04.png

code source :

-- couleurbleu = Color.new (0,0,255)-- imagebackground = Image.load ("images/background.png")--texttext = "XtreamLua est un site proposant"text2 = "plusieurs cours de programmation en lua"--boucle conditionnellewhile true doscreen:blit (0,0,background)screen:print ( 100,100, text, bleu)screen:print ( 100, 120, text2, bleu)screen.flip()screen.waitVblankStart()end

Télécharger le code source complet ici

Cours n°4: Reconnaissance des touches.

Bienvenue dans ce cours numero 4.

Aujourd'hui nous allons créer la reconnaissance des touches de votre psp.

Pour commencer notre programme, nous allons définir quelques morceaux de textes :

--textcroix = "La touche enfoncée est la croix"rond = "La touche enfoncée est le rond"carré = "La touche enfoncée est le carré"triangle = "La touche enfoncée est le triangle"select = "La touche enfoncée est select"start = "La touche enfoncée est start"L = "La touche enfoncée est L"R = "La touche enfoncée est R"gauche = "La touche enfoncée est gauche"droite = "La touche enfoncée est droite"haut = "La touche enfoncée est haut"bas = "La touche enfoncée est bas"

Nous allons définir une couleur, la rouge par exemple :

--couleurrouge = (255,0,0)

Ouvrons la boule principale, plaçons l'instruction

screen:clear(), elle va effacer l'écran en permanance, ensuite, créeons une variable (pad) qui contiendra la fonction Controls.read(), cette fonction est utilisée pour stocker l'écoute des boutons dans la variable pad :

--boucle principalewhile true doscreen:clear()pad = Controls.read()

Voici le code complet, analysez le, je vous l'explique en fin de citation ;) :

--textcroix = "La touche enfoncée est la croix"rond = "La touche enfoncée est le rond"carre = "La touche enfoncée est le carre"triangle = "La touche enfoncée est le triangle"select = "La touche enfoncée est select"start = "La touche enfoncée est start"L = "La touche enfoncée est L"R = "La touche enfoncée est R"gauche = "La touche enfoncée est gauche"droite = "La touche enfoncée est droite"haut = "La touche enfoncée est haut"bas = "La touche enfoncée est bas"--couleurrouge = Color.new(255,0,0)--boucle principalewhile true doscreen:clear()pad = Controls.read()if pad:cross() thenscreen:print(10,10,croix,rouge)endif pad:circle() thenscreen:print(10,20,rond,rouge)endif pad:square() thenscreen:print(10,30,carre,rouge)endif pad:triangle() thenscreen:print(10,40,triangle,rouge)endif pad:l() thenscreen:print(10,50,L,rouge)endif pad:r() thenscreen:print(10,60,R,rouge)endif pad:select() thenscreen:print(10,70,select,rouge)endif pad:start() thenscreen:print(10,80,start,rouge)endif pad:up() thenscreen:print(10,90,haut,rouge)endif pad:down() thenscreen:print(10,100,bas,rouge)endif pad:left() thenscreen:print(10,110,gauche,rouge)endif pad:right() thenscreen:print(10,120,droite,rouge)endscreen.waitVblankStart()screen.flip()end

Bon voyons un petit peu tout ça!

Prenons l'exemple de la touche "start", ce qui donne le code suivant:

if pad:start() thenscreen:print(10,10,start,rouge)end

On a utilisé la boucle conditionnelle if-then-end. Je vais vous traduire cette ligne de code en language litteral :

"Si le bouton start est enfoncé, alors affichez aux coordonnées 10, 10 le message "La touche enfoncée est start" en rouge.

Voila, je suppose que vous avez compris le principe de reconnaissance de touche sur la psp :)

un screenshot du programme en action:

10.png

Téléchargez le code source complet ici

Cours n°5: Votre premier jeu LUA.

Bonjour, bienvenu dans ce cours numero 5

Pour bien compendre ce que je vais vous apprendre, vous devez avoir bien lu les 4 cours précédents!

Aujourd'hui je vais vous apprendre les bases pour créer un "mario like", et oui je suis sur que vous avez toujours rêver de programmer un jeux et bien vous pourrez le faire après ce cours ;)

Tout d'abord, chargeons les images dont on aura besoin pour notre jeux.

--imagesbackground = Image.load("background.png")marioleft = Image.load("marioleft.png")marioright = Image.load("marioright.png")

"Background" étant le fond d'écran, "marioleft" est l'image de mario regardant vers la gauche et "marioright" celui regardant vers la droite.

Pour le moment rien de bien compliqué, je rappelle une fois de plus que vous pouvez changer le nom de l'image et de la variable.

Maintenant nous allons créer deux variables donnant la position de départ de notre mario, "positionY" étant la largeur de la psp et "positionX" la longeur :

--position de departpositionY = 210positionX = 30

Ensuite nous devons définir les touches de notre psp, nous allons utilisé la même méthode que dans le cours n°4 mais bien évidement, avec quelques nouveautés :

if pad:left() thenstatut = "left"x = x+3endif pad:right() thenstatut = "right"x = x-3endif statut == "left" then screen:blit(positionX, positionY, marioleft)endif statut == "right" then screen:blit(positionX, positionY, marioright)end

Je vais vous expliquer les lignes de codes que je viens d'ajouter, la premiere vous la connaissez, mais vous devez vous demander pourquoi j'ai mis x = x+3 et x = x-3 !? Et bien c'est très simple. Tout d'abord nous devons donner la valeur zero a x donc:

x = 0.

Quand on actionne la touche gauche ou droite, mario ce promènera sur notre écran et avancera de 3 pixel, plus on augmente les pixels, plus mario ira vite!. Maintenant je vais vous expliquer en quoi consiste les statuts.

En premier on va définir les deux statuts que l'on a besoin,

"if statut == "left" then screen:blit(positionX, positionY, marioleft)".

Fe traduis cette ligne de code en language litteral, ce qui donne "si le statut est égal à gauche, alors affiche la positonX,positionY et marioleft".

On fais exactement la même chose pour le statut de droite, vous avez maintenant compris en quoi consiste la création des statuts.

Biensur, il existe d'autre méthode mais je trouve que celle ci est la plus facile et c'est celle que j'ai apprise à mes début. Je vais vous montrer ce qui se passe sans l'utilisation de statut :

if pad:left() thenscreen:blit(positionX, positionY, marioright)x = x+3end

Quand ont appuira sur la touche de gauche, mario ira vers la gauche mais quand ont lachera toutes les touches, le personne disparaitra.

Si vous essayer votre jeu maintenant, votre mario pourra ce balader de droite à gauche et de gauche à droite évidemment, mais nous avons plusieurs problèmes :

- quand mario arrive aux extrémités de l'ecran, il disparait tout simplement de notre psp.

- il n'y a pas de fond d'écran et le décord ne défile pas, un peu dommage pour un mario :P

Tachons de résoudre le premier problème, nous allons ajouter quelques lignes de codes :

if pad:left() thenstatut = "left"x = x+3if positionX>10 thenpositionX=positionX-1endendif pad:right() thenstatut = "right"x = x-3if positionX<462 thenpositionX=positionX+1endend

Prenons les lignes rajoutées à la fonction left :

if positionX>10 thenpositionX=positionX-1

Cela signifie que notre mario sera bloqué à 10 pixel du bord de l'écran gauche, si par exemple vous voulez le bloquer à 3 pixel, remplacer le 10 par un 3.

Maintenant résolvons le deuxieme probleme! Voici le code a rajouter :

screen:blit(x, 0, background)screen:blit(x+480, 0, background)screen:blit(x-480, 0, background)if x == -480 or x == 480 then x = 0 end

Ces 4 lignes signifie que il y aura un défilement du background de 480 vers la gauche et de 480 vers la droite selon le déplacement éffectuer.

Voici une image du jeu finit :

mariolua.png

Téléchargez le cours complet (code source + images) ici

Voilà c'est ici que s'achève la première raclée de cours :P d'autre viendrons s'ajouter par la suite, n'hésité pas à poser des questions si vous en avez ;)

a++

benja32

Modifié par benja32

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut, je te remerci pour ton super topic moi qui cherchais des explications pour créer du .lua :ok:

Partager ce message


Lien vers message
Partager sur d'autres sites

génial, je lis ca avec attention des que je peux, merci beaucoup!

Partager ce message


Lien vers message
Partager sur d'autres sites

je viens de lire un peu c vraiment pas mal du tout, bravo

Partager ce message


Lien vers message
Partager sur d'autres sites

Ma question est relativement simple :

Pour laisser le texte en continue nous devons introduire une boucle conditionnelle :

"while true do" répète une action tant que la condition est remplie ( c'est-à-dire que tant que ‘while’ est respecté, l’opération s’effectuera)

Tu dis que while introduit une boucle contitionnelle. Mais où est la condition dans le "while true do" ?

En C++ par exemple on a

while (variable != 5) {

où "(variable != 5)" est la condition à remplire.. tant que "variable" n'égale pas 5, la boucle s'effectue.

En pseudo code "[while] [true] [do]" ca donnerait "[Tant que] [est vrai] [faire]"... mais il manque pas quelque chose du genre "[Tant que] [CECI] [est vrai] [faire]"?

Merci!

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut,

ici, la condition que tu cherches se trouve dans le mot-clé "true"... condition qui sera toujours vraie.

Pour le compilateur, écrire la chose suivante:

while(true)

revient à écrire ceci:

while(true==true)

Il s'agit donc dans ce cas d'une boucle infinie, étant donné que "true" sera toujours égal à.... "true" ^_^

Ceci s'applique également au C/C++, ainsi qu'à bon nombre d'autres langages.

C'est plus clair pour toi?

++

gradew

Partager ce message


Lien vers message
Partager sur d'autres sites

Bonsoir,

Merci pour ce tutoriel.

Une question: que signifie "inverser les deux tampons" avec la fonction screen.flip() ? Et surtout à quoi cela sert-il?

Partager ce message


Lien vers message
Partager sur d'autres sites

moi j'ai une question

mario en general il saute partout

pour le faire sauter il faut faire

if pad:up() then

P1y = P1y + 70 then

P1y = P1y - 70

end

c'est sa??

et aussi

mario reste au dessu des brique

la il passe a traver

comment on fait

merci de me repondre

alex,

Partager ce message


Lien vers message
Partager sur d'autres sites
moi j'ai une question

mario en general il saute partout :sorcerer:

pour le faire sauter il faut faire

if pad:up() then

P1y = P1y + 70 then

P1y = P1y - 70

end

c'est sa??

et aussi

mario reste au dessu des brique

la il passe a traver

salut alex

J ai trouver se qu il te faut moi aussi je suis debutant et

J ai lu un cour sur les'collision' tu te demande se que sais

Je te lais le decouvrire par toi meme tu vera ces exactement

Dont tu as besoin. m est des blocs de colision ou se trouve les carre et

un pour le perso

Voici l adresse a visiter:www.xtreamlua.com/wikido...php?idzcours_n_10_les_collision

comment on fait

merci de me repondre

alex,

Partager ce message


Lien vers message
Partager sur d'autres sites

Bonjour,

Est-il possible d'utiliser des librairies style open_Glide, gl_glide de visual C++ avec Lua?

Ces librairies sont à la base des jeux en 3D ( Tomb raider, wolf ...)

Y a t'il des fonctions similaires?

Je possède une PSP Go, mais je suis novice dans ce monde psp.

La PSP Go utilise t'elle ces fichier Lua?

Merci

Partager ce message


Lien vers message
Partager sur d'autres sites
Est-il possible d'utiliser des librairies style open_Glide, gl_glide de visual C++ avec Lua?

Non

Y a t'il des fonctions similaires?

Peut être, mais elle ne seront pas aussi "compliqué" d'utilisation, enfin je doute qu'elles existent!

Je possède une PSP Go, mais je suis novice dans ce monde psp.

La PSP Go utilise t'elle ces fichier Lua?

Non elle ne l'est utilise pas, il faut un interpréteur, mais de toute manière tu a une PSPGo donc tu ne pourra rien en tiré du coté "underground"!

Partager ce message


Lien vers message
Partager sur d'autres sites

Raaalala, j'ai envie de m'y remettre..

J'avais fait un petit utilitaire en Lua qui permettait de tester le fonctionnement des touches et du joystick (PadTester).

J'me suis fait "chippé" l'idée x)

Partager ce message


Lien vers message
Partager sur d'autres sites

bonjour

moi j'ai une question

Je met dans le dossier "jeulua" "script.lua", "l'image" qui va avec le script il y a deja "EBBOT" comme le dit le tuto.

Mais quand je vais sur la psp dans jeu "memory stick" il y a "XtreamLua" je clique X mai ça me met "Démarrage du jeu impossible.Les données sont endommagées."

Pouvez vous m'aider .

Partager ce message


Lien vers message
Partager sur d'autres sites
bonjour

moi j'ai une question

Je met dans le dossier "jeulua" "script.lua", "l'image" qui va avec le script il y a deja "EBBOT" comme le dit le tuto.

Mais quand je vais sur la psp dans jeu "memory stick" il y a "XtreamLua" je clique X mai ça me met "Démarrage du jeu impossible.Les données sont endommagées."

Pouvez vous m'aider .

Vieux tuto, il est probablement fait pour kernel 1.50.

Jette un oeil ici http://www.xtreamlua.com/wiki/doku.php

;)

A+

Partager ce message


Lien vers message
Partager sur d'autres sites

Bonjour tout le monde,

Tout d'abord merci a l'auteur pour ce tuto :ok:

Je remonte le sujet car j'aurais quelques questions (aucun rapport avec la programmation psp je sais ...) :

Pour faire simple je compte programmer en lua des applications android / iphone avec corona SDK ( j'ai pas trouvé de section plus adapter)

-Je cherche un editeur de texte avec autocompletion ( j'ai pu voir lua glider IDE à 50$ mais je ne sais pas ce qu'il vaut et si ça vaut le coup d'investir, ou alors en open source Scite mais tellement compliqué à installer lol et pas de package qui ne sont pas outdaté )

-Je voudrais aussi savoir les logiciel qui existait pour faciliter la mise en scène des animations

-Pour finir les forums existant concernés par cette programmation mis a part corona labs forum

Je sais que c'est flou, mais si un programmeur passe par là, pourrait-il m'éclairer un peu ?

Merci d'avance chinese

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut,

En ce qui concerne la programmation sur PSP en général et PSP lua en particulier, le site-forum Xtreamlua est bien pratique. Personnellement, il m'a bien aidé.

J'écris sur Notepad++ pour lua, c'est bien mais pas top je l'avoue.

Pour le lua android je ne savais pas que c'était possible mais peut-être que sur le site donné ci-dessus pourra plus t'aiguiller.

Partager ce message


Lien vers message
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant