[tuto] Hello World


Juboc
 Share

Messages recommandés

Bonjour :) Nous allons faire un hello world en Lua pour psp :)

Ouvrez votre bloc-note (basic) ou alors notepad ++ ( beaucoup mieux pour programmer) .

Allez on commence :

En 1ère ligne mettez : green = Color.new(0, 255, 0)

Green étant le nom de l'objet couleur.

Color.new signifie donc, un nouvelle Objet de couleur.

(0, 255, 0) Est la couleur rvb . 0 est le ton du rouge, 255 du vert, et 0 du bleu . Biensur les chiffres sont changeable, pour faire une autre couleur. ( cherchez 'couleur rvb' dans google)

A chaque fois que vous 'appelerez' "green" le texte sera de la couleur que vous aurez déterminer en rvb. ( Ne vous affollez pas, je vais vous expliquer :P)

Puis après la 1 ère ligne vous en sautez une autre et vous mettez :

screen:print(200, 100, "Hello World!", green)

"Screen:print" indique que du texte va être mis a l'écran.

" (200, 100, " indique la position du texte sur l'écran ( la c'est au milieu de l'écran)

"Hello world!" est donc le texte qui va apparaître.

"green" ceci va Dire à la psp d'aller chercher une fonction green plus haut, en l'occurence la 1ère ligne, qui va donc indiquer la couleur du texte.

Sautez une ligne après la deuxième est écrivez :

screen.flip()

Il y a deux types de 'screen buffers': le 1er le 'offscreen buffer' et le 'visible screen buffer'. Ceci signifie que votre texte n'est pas évident jusqu'à ce que vous appeliez screen.flip(), qui échange offscreen Buffer et Visible sceen buffer. ( En gros il faut cette ligne si vous voulez que votre texte apparaîsse :P) J'ai pas très bien compris cette partie, mais si vous êtes fort en anglais :

"There are two screen buffers: one offscreen buffer and one visible screen buffer. All drawing functions goes to the offscreen buffer. This means your print is not visible until you call screen.flip(), which exchanges the offscreen buffer and the visisble screen buffer. This is known as double-buffering. It is implemented as page-flipping (see the wikipedia entry for an explanation), this is the reason for the name “flip”. "

Sautez une ligne , puis copiez cette ligne :

while true do

screen.waitVblankStart()

end

Cette ligne est indispensable .. Le end sert a marquer la fin du script.

Pour expliquer ceci : 'while true do

screen.waitVblankStart()'

Traduisez cela :

"Finnaly the while-loop calls waitVblankStart in an endless loop. If you don’t write something like this at the end, your script finishes and you don’t see the result of your drawing, because if started from Lowser, the Lowser GUI will be displayed and if started as a standalone script the restart question will be displayed. If you don’t write the wait function, but use an empty loop, it will generate much CPU usage, because the wait function gives the kernel the possibility to sleep, until the next vertical retrace blank starts.

"

( Je n'y arrive pas trop) En gros cela forme une boucle de votre script pour pouvoir le voir..

Le code en entier :

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

screen:print(200, 100, "Hello World!", green)

screen.flip()

while true do

screen.waitVblankStart()

end

Enrengistrez-le avec le nom suivant 'script.lua '

Enfin mettez le dans X:/Psp/Game/Hell 1/Applications/Script

Et lancer le lua player dans votre psp :)

Voilà ce que vous verrez :

fetch.php?cache=cache&media=http%3A%2F%2Fwww.luaplayer.org%2Ftutorial%2Fhelloworld.png

--------------------------

Voilà, j'attend vos avis, je l'améliorerer au fur et à mesure : ) (en commençant par traduire les partie en anglais lol)

Voilà c'étais mon 1er tuto, en espérant que sa vous servent :) (Merci iceteax)

Bye :sorcerer:

Lien vers le commentaire
Partager sur d'autres sites

cool merci juboc

Pour les histoire de screen jvous explique vite fais.

Qd on prog en jeu video histoire de gagner en vitesse daffichage et ne po avoir de clignotement des sprites ya deux truc super important qui change la facon de programmer.

Tout dabords l'histoire d'un ecran virtuelle plus communement appeler Buffer.

ici on "affiche" l'image dedans et non a l'ecran, ce Buffer est une zone memoire qui des qu'on applique ce quon apel ici un flip saffiche-->donc gain de temps et aussi on peut mettre son background et ses sprites qui seront afficher dun coups.wawwwww

Ensuite le 2eme truc super important c la synchronisation vertical, sans entrer dans les detail si vous ne voulez po avoir de clignottement de ce que vous allez afficher a lecran faut attendre que la synchro vertical soit fini .

En LUA c grace a la fonction screen.waitVblankStart().

Si vous ne voulez po attendre le prochain tuto de PSPirit qui a pris du temps a demarer c normal on a du virer les glandu comme pliskin(un peu de menage et waiii) , allez voir les prog dispo sur le site et mattez les sources, come ecrit sur le premier tuto que javais fait , elle se trouve dans le fichier a installer PSPirit et porte le nom de script.lua.

voila dsl encore pour les fautes d'orthographes biz :) zzzzzzzzzz

Lien vers le commentaire
Partager sur d'autres sites

et oui etant membre de la team

j'ai encore de la chance moi LOL

j'qi quelques bases de programmation sous PSPide mais pas encore sous LUA

Donc JE M'Y METS

je vais tenter de faire un helloworld plus avancer

Voilou :sorcerer:

PS : surtout que je vais participer au projet de street fighter :ok:

chinese

Lien vers le commentaire
Partager sur d'autres sites

voici un helloworld plus avancé avec un fond d'ecran

System.usbDiskModeActivate()green = Color.new(0, 255, 0)time = 0pi = math.atan(1) * 4background = Image.load("background.png")while true do	screen:blit(0, 0, background, 0, 0, background:width(), background:height(), false) 	x = math.sin(pi * 2 / 360 * time) * 150 + 192.5	screen:print(x, 100, "Hello World!", green)	time = time + 1	if time >= 360 then  time = 0	end 	screen.waitVblankStart()	screen.flip() 	pad = Controls.read()	if pad:start() then  break	endend

Pour ajouter le fond d'ecran il vous faudra juste rajouter

background = Image.load("background.png")

et éditer ceci :

while true do	screen:blit(0, 0, background, 0, 0, background:width(), background:height(), 

Il vous faudra mettre une image du nom background.png dans le meme repertoire 480*272

Modifié par psgman
Lien vers le commentaire
Partager sur d'autres sites

Merci, mais vous connaiser le script ki permet de faire clignoter ?

Ps : ce code est excellent c l'hotlage ki ya ds lua player :

background = Image.createEmpty(480, 272)

clockOfs = 150

clockWidth = 100

clockTextPosition = 85

clockBigMarkWidth = 7

clockSmallMarkWidth = 3

x0 = clockOfs

y0 = clockOfs - clockWidth

pi = 4*math.atan(1)

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

for i=0,60 do

x1 = math.sin(pi-i/60*2*pi) * clockWidth + clockOfs

y1 = math.cos(pi-i/60*2*pi) * clockWidth + clockOfs

background:drawLine(x0, y0, x1, y1, color)

xv = (x1 - clockOfs) / clockWidth

yv = (y1 - clockOfs) / clockWidth

if math.mod(i, 5) == 0 then

  xt = xv * clockTextPosition + clockOfs

  yt = yv * clockTextPosition + clockOfs

  value = math.ceil(i / 5)

  if value == 0 then

  value = 12

  end

  background:print(xt, yt, value, color)

  xv = xv * (clockWidth - clockBigMarkWidth) + clockOfs

  yv = yv * (clockWidth - clockBigMarkWidth) + clockOfs

  background:drawLine(x1, y1, xv, yv, color)

else

  xv = xv * (clockWidth - clockSmallMarkWidth) + clockOfs

  yv = yv * (clockWidth - clockSmallMarkWidth) + clockOfs

  background:drawLine(x1, y1, xv, yv, color)

end

x0 = x1

y0 = y1

end

background:print(4, 4, "os.date: ", color)

background:print(4, 14, "digital: ", color)

while not Controls.read():start() do

screen:blit(0, 0, background, 0, 0, background:width(), background:height(), false)

time = os.time()

dateString = os.date("%c", time)

screen:print(84, 4, dateString, color)

dateFields = os.date("*t", time)

hour = dateFields.hour

if hour < 10 then

  hour = "0" .. hour

end

min = dateFields.min

if min < 10 then

  min = "0" .. min

end

sec = dateFields.sec

if sec < 10 then

  sec = "0" .. sec

end

screen:print(84, 14, hour .. ":" .. min .. ":" .. sec, color)

hour = dateFields.hour

if hour > 12 then

  hour = hour - 12

end

hour = hour + dateFields.min / 60 + dateFields.sec / 3600

x = math.sin(pi-hour/12*2*pi) * clockWidth / 3 * 2 + clockOfs

y = math.cos(pi-hour/12*2*pi) * clockWidth / 3 * 2 + clockOfs

screen:drawLine(clockOfs, clockOfs, x, y, color)

min = dateFields.min + dateFields.sec / 60

x = math.sin(pi-min/60*2*pi) * clockWidth + clockOfs

y = math.cos(pi-min/60*2*pi) * clockWidth + clockOfs

screen:drawLine(clockOfs, clockOfs, x, y, color)

x = math.sin(pi-dateFields.sec/60*2*pi) * clockWidth + clockOfs

y = math.cos(pi-dateFields.sec/60*2*pi) * clockWidth + clockOfs

screen:drawLine(clockOfs, clockOfs, x, y, color)

screen.waitVblankStart()

screen.flip()

end

Modifié par crackjerem
Lien vers le commentaire
Partager sur d'autres sites

dautre source sont aussi dispo sur PSPirit comme le fond avec sprite anime , le cube 3d et la mini preview de street fighter SPTIRIT.

Donc si vous voulez les mater( les code aussi wii) bah vous verrez quil ny a rien de sorcier la dessus(qques competence en prog de jeu st les bienvenue qd meme)

Lien vers le commentaire
Partager sur d'autres sites

dans le cube en 3d, quel est la partie du code qui indic la taille d'un point? et j'aimerai savoir si l'on peut facilement remplacer un point par du texte, une forme ou autre...

ps: apperemment c'est du C non? car j'étudie le C++ mais si c'est pas la bonne voie... :fouf:

Lien vers le commentaire
Partager sur d'autres sites

les pixels sont generer par l'instruction screen:pixel et a une taille predefinie 1 pixel quoi au coordonnee x,y, donc pour changer la taille tu devai tou au plus creer plusieur pixel par sommet calculé.

tu peux remplacer les points par du texte mais qd ton carré va se retourner ds tous les sens ton texte lui restera droit.

si tu as le temps amuse toi a relier les point corectement, c rigolo.(taura un bo vrai cube cette fois)

tu peux aussi t'amuser a remplacer les point par des sprites de forme ronde, histoire que qd ca tourne on voit po que ca merde.

Voila et c po du c++ c du LUA mais ca ressemble a du c++ et a du visual basic etc.... bref a un langage de prog et c tous les meme c pkoi g compris comment lutiliser. :P

bizzzz.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share