PDA

Voir la version complète : [PSP][Tutorial] LUA, les mouvements


jbskateur
02/09/2007, 18h52
Bon on sait par exemple afficher un petit bonhomme ou autre image grâce au tuto précédant, mais comment faire bouger cette image?? :blink: Et bien voici un code que nous allons examiner :--couleur
blanc = Color.new(255,255,255)

perso = Image.createEmpty(32,32)
perso:clear(blanc)

persox=10
persoy=10

statut="normal"
--boucle principale

while true do
screen:clear()
pad = Controls.read()

screen:blit(persox, persoy, perso)

if pad:left() then
persox = persox+3
if persox>10 then
persox=persox-1
end
end

if pad:right() then
persox = persox-3
if persox<470 then
persox=persox+1
end
end

if pad:up()then
persoy = persoy+3
if persoy>10 then
persoy=persoy-1
end
end

if pad:down()then
persoy = y-6
if persoy<256 then
persoy=persoy+1
end
end

screen.waitVblankStart()
screen.flip()
end
On commence par une variable de couleur (vous connaissez, pas besoin de détailler) ensuite vient :
perso = Image.createEmpty(32,32)
perso:clear(blanc)
Si vous traduisez en francais vous obtenez un truc du genre "perso vaut une création d'image vide" et bien, vous n'avez pas tort !
En effet perso = Image.createEmpty nous indique la création d'une image vide dans la RAM au format 32x32 (ce qui est dans la parenthèse)
ensuite vient :
perso:clear(blanc)

Ce qui veut dire que cette image perso sera de la couleur de ma variable blanc.

Oui c'est bien gentil ça mais ça ne m'explique pas les mouvement :ranting:

Pour ma défense je tiens à dire que j'ai introduis ça pour que vous puissiez tester le code ci-dessus sans intégrer d'image :-'

Bon passons au mouvement :

Nous avons créé une variable persox et persoy qui comme vous le devinerez contiendrons les valeurs de la position de notre personnage sur l'écran, on va dire donc que notre personnage apparaîtra au début à 10,10 et donc dans notre boucle principale, on affiche notre image (perso) a persox, persoy:
screen:blit(persox,persoy,perso)

Maintenant comment il va bouger ? Prenons comme exemple la touche gauche :
if pad:left() then
persox = persox+3
if persox>10 then
persox=persox-1
end
end
donc

if pad:left() then ----> si j'appuis sur gauche alors :
persox = persox + 3 on augment de 3 la valeur de persox (et par conséquence, notre image se décale vers la gauche de 3 pixels)

Bah c'est bon mon perso a bougé, pourquoi tu nous a rajouté du code encore ! :ranting:

Et bien :whst: tout simplement parce que au bout d'un moment, notre cher bonhomme sortira de l'écran si il dépasse les 480pixels (voir même avant)
Donc :

if persox>10 then
persox=persox-1

sert à bloquer le personnage.

puis on ferme les deux if :

end
end

Voilà voilà, excusez pour les fautes d'orthographes et si vous avez des questions, n'hésitez pas !

Ass-Itch
02/09/2007, 19h09
Un petit coup de balai vite fait sur les fautes, et hop ;) Bonne continuation.