PSP SOFTWARES ENVIE D'APPRENDRE A PROGRAMMER EN LUA? - Tutoriaux Gx-mod
Logo name
Menu
Navigation

. Accueil



> PSP SOFTWARES ENVIE D'APPRENDRE A PROGRAMMER EN LUA?

Sommaire

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:

user posted image

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 [\"http://psparadize.free.fr/download/XtreamLua_astuce.rar\" 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.

CODE
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 :

user posted image

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

user posted image

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".

CODE
text = "Mon premier programme en lua par benja32"

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

CODE
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 :

user posted image

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 :

CODE
-- couleur (les commentaires sont repéré par deux tirets en début de ligne)
rouge = Color.new (255,0,0)
-- text
text = "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 :

user posted image

Voici le code source complet :

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

Téléchargez le code source complet [\"http://psparadize.free.fr/download/script/cours2.rar\" 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.

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

Après on va aller chercher le background

CODE
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:

CODE
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:

CODE
screen:blit (0,0,background)

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

Resumé du code :

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é) :

user posted image

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:

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

et

CODE
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:

CODE
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.

user posted image

code source :

CODE
-- couleur
bleu = Color.new (0,0,255)
-- image
background = Image.load ("images/background.png")
--text
text = "XtreamLua est un site proposant"
text2 = "plusieurs cours de programmation en lua"

--boucle conditionnelle
while true do
screen: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 [\"http://psparadize.free.fr/download/script/cours3.rar\" 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 :

CODE
--text
croix = "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 :

CODE
--couleur
rouge = (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 :

CODE
--boucle principale
while true do

screen:clear()
pad = Controls.read()

Voici le code complet, analysez le, je vous l'explique en fin de citation user posted image :

CODE
--text
croix = "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"
--couleur
rouge = Color.new(255,0,0)

--boucle principale
while true do

screen:clear()
pad = Controls.read()

if pad:cross() then
screen:print(10,10,croix,rouge)
end

if pad:circle() then
screen:print(10,20,rond,rouge)
end

if pad:square() then
screen:print(10,30,carre,rouge)
end

if pad:triangle() then
screen:print(10,40,triangle,rouge)
end

if pad:l() then
screen:print(10,50,L,rouge)
end

if pad:r() then
screen:print(10,60,R,rouge)
end

if pad:select() then
screen:print(10,70,select,rouge)
end

if pad:start() then
screen:print(10,80,start,rouge)
end

if pad:up() then
screen:print(10,90,haut,rouge)
end

if pad:down() then
screen:print(10,100,bas,rouge)
end

if pad:left() then
screen:print(10,110,gauche,rouge)
end

if pad:right() then
screen:print(10,120,droite,rouge)
end

screen.waitVblankStart()
screen.flip()
end

Bon voyons un petit peu tout ça! Prenons l'exemple de la touche "start", ce qui donne le code suivant:

CODE
if pad:start() then
screen: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:

user posted image

Téléchargez le code source complet [\"http://psparadize.free.fr/download/script/cours4.rar\" 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.

CODE
--images
background = 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 :

CODE
--position de depart
positionY = 210
positionX = 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 :

CODE
if pad:left() then
statut = "left"
x = x+3
end

if pad:right() then
statut = "right"
x = x-3
end

if statut == "left" then screen:blit(positionX, positionY, marioleft)
end
if 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 :

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

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 :

CODE
if pad:left() then
statut = "left"
x = x+3

if positionX>10 then
positionX=positionX-1
end
end

if pad:right() then
statut = "right"
x = x-3

if positionX<462 then
positionX=positionX+1
end
end

Prenons les lignes rajoutées à la fonction left :

CODE
if positionX>10 then
positionX=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 :

CODE
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 :

user posted image

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 user posted image d'autre viendrons s'ajouter par la suite, n'hésité pas à poser des questions si vous en avez user posted image

a++ benja32

Dernière modification de cette page le 26 septembre 2007 à 14:12.
  Cette page a été consultée 4 500 fois. 

Reproduction interdite sans autorisation - Copyright © Gx-Mod - Déclaration CNIL 831.

IpbWikiPowered by MediaWiki