Logo name
Menu
Navigation

. Accueil



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

Sommaire

[modifier] 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.

[modifier] 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]

[modifier] 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]

[modifier] 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]

[modifier] 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


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