Juboc Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 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 ) 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 ) 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 : -------------------------- 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 Lien vers le commentaire Partager sur d'autres sites More sharing options...
rabzaman Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 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 More sharing options...
psgman Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 (modifié) pour ajouter le mode usb il suffit d'ajouter ceci tout en haut : System.usbDiskModeActivate() Modifié 25 octobre 2005 par psgman Lien vers le commentaire Partager sur d'autres sites More sharing options...
80Y Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 slt bah tout simplement pour ce premier tuto on comprend vite SIMPLE CLAIR PRECIS et surtout EFFICACE Lien vers le commentaire Partager sur d'autres sites More sharing options...
80Y Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 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 PS : surtout que je vais participer au projet de street fighter Lien vers le commentaire Partager sur d'autres sites More sharing options...
psgman Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 (modifié) 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é 25 octobre 2005 par psgman Lien vers le commentaire Partager sur d'autres sites More sharing options...
crackjerem Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 (modifié) 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é 25 octobre 2005 par crackjerem Lien vers le commentaire Partager sur d'autres sites More sharing options...
heyachi Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 Merci beaucoup à vous, j'étudie le C++ je pense me rediriger sur le C vu qu'il a l'air plus utilisé en Lua merci encore ;-) Lien vers le commentaire Partager sur d'autres sites More sharing options...
rabzaman Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 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 More sharing options...
heyachi Posté(e) 25 octobre 2005 Share Posté(e) 25 octobre 2005 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 More sharing options...
rabzaman Posté(e) 26 octobre 2005 Share Posté(e) 26 octobre 2005 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. bizzzz. Lien vers le commentaire Partager sur d'autres sites More sharing options...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant