PDA

Voir la version complète : [PSP][Tutorial] LUA, les bases partie 2


jbskateur
01/09/2007, 19h31
Ca y est ? Vous maîtrisez les éléments du tuto précédent ? Alors voilà la suite qui vous sera certainement utile ;)!

Pour commencer, nous allons parler de la gestion des images puis comment se servir des touches de la psp !

LES IMAGES

Pour commencer je précise que vos images doivent être au format PNG.

L'affichage d'une image ressemble de très près à l'affichage de texte, nous utiliserons screen:blit et voici comment :

Imaginons que notre image se nomme image.png et qu'elle est dans le même dossier que notre script lua, voici comment procéder:

Pour commencer, comme avec les couleurs, avant de rentrer dans la boucle principale (while true do), on va nommer une variable, cette variable est :

Image.load

Donc pour créer notre variable (qu'on va appeler image1 dans cet exemple), on met :

image1 = Image.load("image.png")

Si vous voulez charger votre image depuis un dossier pour que votre homebrew soit plus propre (comme ca vous n'avez pas 20 images dans le dossier de votre script), il faut mettre ceci dans vos variables :
Code:

image=Image.load ("nom-du-dossier-contenant-l'image/nom-de-l'image.png")

Attention le dossier contenant votre image dois être dans le dossier contenant votre script.

Notre variable étant créée, il nous reste à la placer sur l'écran, pour cela, on utilise screen:blit(x,y,nomdelavariable)

Donc si on suit l'exemple précédant et que l'on souhaite coller l'image, disons à 100 en abscisses et 50 en ordonnées, on mettra :
screen:blit(100,50,image1)
Voici un exemple de code source où on marquerait "Mon premier programme en LUA" et une image en dessous :
--variable couleur

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

--variable image

image1=Image.load("image.png")

--boucle principale

while true do

screen:print(100,10,"Mon premier programme en LUA",bleu)
screen:blit(100,50,image1)

screen.waitVblankStart()
screen.flip()
end

Note : pour mettre une image en fond d'écran du programme, on la place a x=0 et y=0 exemple:
screen:blit(0,0,image1) et elle doit faire dans ce cas 480x272 pixels.

Voila pour les images :), passons aux commandes :

LES COMMANDES

Je vais commencer par vous coller un code source que nous étudierons :

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

while true do

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

screen:print(200,10,"Mon programme",blanc)

if pad:cross() then
screen:print(10,100,"je press le bouton croix",bleu)
end

screen.waitVblankStart()
screen.flip()
end

Alors quoi de neuf docteur? :D

Et bien pour commencer la fonction screen:clear() sert à nettoyer votre ecran de tout ce qui s'y trouvait avant.
Donc nous mettons screen:clear() juste apres while true do pour que ca rentre dans la boucle et juste avant votre screen:print,screen:blit,... pour que ceux-ci soit affichés sans que quelque chose ne vienne se mettre en dessous.

Ensuite viens "pad = Controls.read()" il sert à indiquer que à partir de là, on "lit" les touches de la psp pour recevoir éventuellement une instruction et l'instruction que j'ai mis dans ce code est :

if pad:cross() then
screen:print(10,100,"je presse le bouton croix", bleu)
end

Traduction --> if pad:cross() ---> si la touche croix est enfoncée --> screen:print(10,100,"je presse le bouton croix",bleu) --> on affiche a 10,100 " je presse le bouton croix "
et le "end" termine l'instruction.

pour le bouton carré , c'est: if pad:square()
pour le bouton rond , c'est: if pad:circle()
pour le bouton triangle , c'est: if pad:triangle()
pour le bouton croix , c'est: if pad:cross()
pour le bouton start , c'est: if pad:start()
pour le bouton select , c'est: if pad:select()
pour le bouton L , c'est: if pad:l()
pour le bouton R , c'est: if pad:r()
pour le bouton haut , c'est: if pad:up()
pour le bouton bas , c'est: if pad:down()
pour le bouton droite , c'est: if pad:right()
pour le bouton gauche , c'est: if pad:left()

Voilà pour ce tuto, si vous avez des questions, n'hésitez pas.