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:
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 :
Cliquez sur "Définir les couleurs personnalisées >>" voici la fenêtre que vous obtiendrez :
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 :
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 :
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é) :
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.
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 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:
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 :
Téléchargez le cours complet (code source + images) ici
a++ benja32
|
|
Dernière modification de cette page le 26 septembre 2007 à 14:12. Cette page a été consultée 3 439 fois. |