Bienvenue invité ( Connexion | Inscription )
|
![]() ![]() |
5-04-2007, 13:14
Message
#1
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 84 Inscrit : 10-10-05 Membre no 25990 |
Cours n°1: Introduction à la programmation.
![]() Bonjour les gueux L'univers de la DS commence a grandir c'est pourquoi beaucoup de personne vont vouloir contribuer à cette grande communauté. DS Lua vous permet de créer (en codant) vos jeux sans trop de connaissances en la matière c'est pourquoi j'ai décidé de faire un tutorial pour vous permettre de le comprendre très facilement. Je ferais sûrement une série de tutoriaux en fonctions de l'évolution des versions. J'ai beaucoup de connaissances dans la programmation, cela est donc facile pour moi, mais je vais vous l'expliquer simplement de manière à ce que même les personnes qui n'ont jamais fait de programmation ne soient pas perdus. De plus je vous conseille de connaître les bases de la programmation car je ne vais pas en parler en détails. Pour commencer vous aurez besoin de quelques logiciels pour pouvoir utiliser DS Lua. Vous aurez bien sûr besoin d'une nintendo DS et d'un kit flash. Le Lua est un langage interpreté donc il n'a pas besoin d'être compilé mais dans le cas de la DS vous devez le packeter dans un fichier ROM pour que ça marche. Je vous expliquerais ça plus tard. Logiciel dont vous avez besoin: -DS Lua Player (dernière version 0.5 au moment où je suis en train d'écrire), trouvable ici. -Je vous conseil fortement de vous procurer un émulateur. Dualis est le meilleur dans la matière, téléchargez la dernière version ici. Il supporte le son, le style,le double screen, impressionnant hein ? – un environnement de développement: Crimson Editor, téléchargez le ici. Bon nous avons donc tous nos programmes de base pour nous permettre de créer notre première application: "hello world". Une multitude de possibilités s'offrent devant nous, C'est parti !! Comment lancer votre script.lua avec l'émulateur et la nintendo ds: Pour lancer votre code lua sans compacter en une ROM utiliser la version cf avec l'émulateur dualis, pour cela allez dans file et cliquez sur load and exécute, une fenêtre apparaît. Sélectionner le dossier release-cf de dslua et lancer DSLua.nds. Quand cela est fait une interface apparaît sur la partie basse de l'écran de l'émulateur, avec les flèches directionnelles sélection cf puis appuyer sur X pour rentrer dedans, ensuite cliquer sur scripts et lancer votre script.lua que vous aurez préalablement mis dans ce dossier. Voilà vous savez maintenant comment utiliser le DSlua version CF qui est le plus utilisée selon vos linker, mais ia c'est vous qui devez savoir lequel est compatible Maintenant je vais vous montrer comment utiliser la version GBSF. Tout d'abord, placez votre script.lua dans le dossier scripts (dans le dossier du luaplayer GBFS bien sûr) ensuite cliquez sur PACK.bat. Une fois fais, lancez dualis cliquez sur load and execute et lancer DSLUA-PACK.nds qui se trouve dans le dossier bundle (c'est ce fichier qui a été créer quand vous avez lancé PACK.bat. Il contient votre script.lua), nous le compactons dans un .nds car certain linker ne peut lancer seulement les fichiers compacter dans une rom. L'étape suivante est optionnelle et n’est utile que si vous utilisez le Crimson Editor. Donc, si vous utilisez Crimson Editor, vous pouvez configurer un macro pour compresser automatiquement votre rom et la lancer en tant que test. Evitez d'avoir d'autre tâche de fond dans windows pendant que vous programmer. Maintenant fait ce qui suit : 1. Ouvrez Crimson Editor 2. Cliquez sur "Tools" puis "Preferences" 3. Selectionnez "User Tools" 4. Dans le menu text , saisissez "DS Lua Run", dans Command, cliquez sur le boutton browser (...) et selectionnez votre fichier PACK.BAT (le répertoire initial est le répertoire où se trouve votre PACK.BAT . Enfin, cliquez sur "Hot Key" et appuyez sur le bouton que vous voulez lui associer. D'habitude j'utilise F5 ou F9. Enlevez (décocher) "Close on Exit" et vérifiez bien que "Save before execute" est coché. Et enfin cliquez sur OK. Quand vous souhaiterez tester votre jeu, vous pourrai le faire en appuyant sur la touche associé à "hotkey", donc, si vous aviez choisi F9 par exemple, en appuyant sur F9 cela sauvera le fichier et lancera le fichier PACK.BAT. Voilà maintenant rendez-vous au cour n°2 pour commencer a programmer Cours n°2: Hello World. Dans ce cour, nous allons apprendre à créer notre propre programme. Votre premier programme sera un "Hello World", qui sera affichée sur l'écran du haut en jaune. Commençons par créer un nouveau fichier dans lle dossier script appelé "helloworld.lua". Ensuite ouvrez le avec votre éditeur de texte ou de code que vous utilisez. Nous avons besoin de taper le code pour pouvoir mettre le code sur l'écran du haut: CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) Nous avons posé une variable SCREEN_TOP en haut du programme cela est plus pratique. Maintenant que l'écran est en gros "installé/monté" il est temps de taper un peu de texte. Cela peut être réalisé en utilisant une simple fonction appelée PrintXY().Cette fonction vous permettra de faire apparaître du texte sur n'importe quel écran et dans n'importe quel endroit. Vous pouvez le faire en utilisant ce code: CODE BGBotText:PrintXY( 1, 1, "Hello World!" ) BGTopText:PrintXY( 1, 1, "Hello World!" ) La ligne du haut sert à afficher Hello World sur l'écran( nous allons donc l'utiliser) et la deuxième à l'afficher en bas. Mais auparavant pour l'afficher en bas il faut taper les codes d'installation de l'écran, mais pour le bas non pour l haut comme nous l'avons fait précédemment. Vous devrez donc obtenir ceci: CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGTopText:PrintXY( 1, 1, "Hello World!" ) Vous vous demandez sûrement à quoi correspondent les 1 et pourtant je suis sûr que vous en connaissez la provenance et dès que je vais vous le dire vous aller faire un grand AHH! et vous dire que c'est très logique. Les 1 correspondent en fait aux coordonnées du texte ( vous avez vu ça au lycée et même au collège avec les repères des droites, etc).Et bien ici c'est la même chose qu'un repère l'écran de la DS est comme ceci avec un repère à l'envers: ![]() J'espère que vous avez compris le fonctionnement Maintenant lancez le programme même s'il n'est pas fini est bien sur il ne marche pas réellement.Il ramène directement au menu principale sans que vous ayez le temps de voir le texte.Nous avons donc besoin de trouver un moyen pour mettre le programme en pause afin de voir le texte s'afficher.Nous allons donc mettre un systeme qui attendra que vous pressiez un bouton pour revenir au menu principal. Le code est le suivant: CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGTopText:PrintXY( 10, 12, "Hello World!" ) DSLua.WaitForAnyKey() Voici le résultat sur la nintendo ds: ![]() Bien! Maintenant lancez le et vous devriez voir Hello World au centre de l'écran du haut. Remarquez bien que j'ai changé les chiffres dans cet exemple pour que le texte soit centré. Ah oui maintenant je suppose que vous voulez rajouter un peu de couleur pour donner un aspect plus vivant à votre texte CODE BGTopText:SetColor( 4 ) BGTopText:PrintXY( 1, 1, "Votre texte" ) Le nombre dans BGTopText:SetColor() dit à DSLua quelles couleurs il doit utiliser.Je suis généreux je vous donne donc le code des couleurs: CODE # Couleur 0 Noir 1 Rouge 2 Vert 3 Bleu 4 Magenta 5 Cyan 6 Jaune 7 Gris clair 8 Gros foncé Les nombres que vous mettrez dans la fonction énoncée précédemment correspondront à la couleur en face de celui-ci (tableau). Je vous rappelle que notre but était de faire apparaître Hello World en jaune, centré sur l'écran du haut de votre DS et qui revient au menu principal quand vous pressez n'importe quel bouton voici donc le code final: CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGTopText:SetColor( 6 ) BGTopText:PrintXY( 10, 12, "Hello World!" ) DSLua.WaitForAnyKey() Voila vous avez réalisé votre premier programme sur votre DS !! Félicitation !! Je vais vous maintenant vous montrer comment on fait la même chose, mais avec les deux écrans à la fois.Je vous donne juste le code avec les explications après les -- qui ne sont pas lues par DSLua. Ceci permet au programmeur de mieux se retrouver dans ses codes et au lecteur de mieux comprendre a quoi le code sert. Je suppose qu’étant très forts vous avez déjà compris le fonctionnement de ces fonctions. Place au code !! Voici le résultat sur la nintendo ds: ![]() CODE -- "installer" les deux écrans pour afficher le texte SCREEN_TOP = 1 SCREEN_BOTTOM = 0 BGTopText = Screen.LoadTextBG() BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) Screen.Initialize( SCREEN_BOTTOM, BGBotText ) -- Programmez des variables pour le texte de l'écran du haut textcolor = 6 text = "Hello World!" x = 10 y = 12 BGTopText:SetColor( textcolor ) BGTopText:PrintXY( x, y, text ) BGBotText:SetColor( 6 ) -- 6 correspond au jaune (voir tableau) BGBotText:PrintXY( 10, 12, "Hello World!" ) -- 10, 12 devrait centrer le texte. DSLua.WaitForAnyKey() -- attendez que le texte s'affiche puis pressez une touche pour quitter. Cour n°3: Les conditions. Les instructions "If" sont des bout de code qui sont executé que si une certaine condition est remplie. Exemple de condition : CODE if name == "bob", if a < 4, if answer == "correct".... Voici comment vous devez écrire une intruction : CODE SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) language = DSLua.Language() if language == 1 then BGBotText:PrintXY( 1, 1, "Hello!" ) end if language == 2 then BGBotText:PrintXY( 1, 1, "Bonjour!" ) end DSLua.WaitForAnyKey() On peut traduire les lignes de code ci dessus par : Afficher "Hello!" si la DS est en anglais, ou "Bonjour!" si elle est en francais. Vous devriez comprendre comment faire une simple instruction avec "if" maintenant. Rapelez vous, que lorsque vous assimilez 2 variables, ou nombre il faut utiliser ==. Et quand vous assignez une valeur à une variable il faudra utiliser, =. Ne les mélanger pas! Mais le == vérifie juste que les deux valeurs sont égal, alors qu'en est-il si l'on veut vérifier qu' une valeur est plus grande que l'autre ou si deux valeur sont inégale? Voici la liste des opérations de compraison qui peuvent être utilisé dans des instruction de condition (comme if) : Operation Exemple Explication CODE == if a == 1 then Si A est égal à 1 alors lancé le bout de code suivant. ~= if a ~= 1 then Si A n'est pas égal à 1 alors lancé le bout de code suivant. < if a < 1 then Si A est plus petit que 1 alors lancé le bout de code suivant. > if a > 1 then Si A est plus grand 1 alors lancé le bout de code suivant. <= if a <= 1 then Si A est plus petit ou égal à 1 alors lancé le bout de code suivant. >= if a >= 1 then Si A est plus grand ou égal à 1 alors lancé le bout de code suivant.. Il y a quelque partie optionel de l'instruction de if. Il y a else, elseif, and, et or. "Else" executera le bloc de code selon else seulement si l'instruction "if" renvoie comme valeur false [faux] (ce qui signifie que le bloc de code de l'instruction if ne sera pas exécuté.) "Elseif" est juste une instruction if qui s'executera seulement si l'instruction if qui lui appartiens renvoie false [faux], comme else. Testons maintenant de multiples conditions, donc toutes les conditions que nous allons utiliser devront renvoyer true [vrai] au bloc de code pour s'executer. "Or" est utilisé un peu comme "adn", mais si n'importe laquel des conditions utiliser avec "or" renvoie true [vrai], l'instruction if s'executera même si une des autres conditions n'est pas trouvée. Voici un exemple de toutes ces instructions if: CODE SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) hour = DSLua.Hour() if hour > 0 and hour < 4 then BGBotText:PrintXY( 1, 1, "Tu es presque en retard!" ) elseif hour > 4 and hour < 12 then BGBotText:PrintXY( 1, 1, "Bonjour!" ) elseif hour > 11 and hour < 16 then BGBotText:PrintXY( 1, 1, "Bonne après-midi!" ) else BGBotText:PrintXY( 1, 1, "Bonsoir!" ) end DSLua.WaitForAnyKey() Boucles Les boucles sont des blocs de code qui repète un certain nombre de fois. Il y a deux types de boucles différentes en DSLua : La "boucle for" et "boucle while". La "boucle for" repète un nombre de fois définit par vous ou une variable. La "boucle while" est une boucle conditionel. La boucle, comme son nom l'indique se repète en boucle jusqu'a ce qu'une condition soit touvée. While ressemble beaucoup à une instruction if. Cette boucle execute un bloc de code si une certaine condition est trouvé. La différence est que cette boucle while repète le bloc de code encore et encore jusqu'a ce qu'une condition soit trouvée. Voici un exemple. Cette "boucle while" attend que l'utilisateur touche l'ecran tactil de la DS avant de continuer le programme : CODE SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) BGBotText:PrintXY( 1, 1, "toucher l'écran tactil pour quitter!" ) x = 1 while x == 1 do if Stylus.Down() then x = 0 end end J'ai fixé x égal à 1 au départ et la boucle while vérifie si x est bien égal à 1 à chaque fois que la boucle se relance. Elle vérifie aussi si le stylet touche l'écran tactil à chaque boucle. Si c'est le cas, il fixe x égal à 0. Si la boucle conditionel trouve que x n'est pas égal à un, il stop la boucle et le programme reprend normalement. Pour les boucles ayant un compteur intégré à une variable, ils se veront incrémenter (ajouter) 1 à chaque fois que la boucle se relance. On fixe le nombre que l'on veux pour prevoir le départ, et le nombre pour la fin de la boucle que le compteur devra atteindre pour s'arreter. Facultativement, vous pouvez fixer le nombre qui se vera incrementé/désincrementé à votre compteur. (Comme si par exemple vous vouliez créer un compte à rebour "countdown" [10 9 8 7 6 5 4 3 2 1] , utiliser le compte à rebour comme ceci : countdown=10,1,-1 ce qui aura pour effet de diminuer le compte à rebours d'un à chaque fois.) Voici un exemple concrait : CODE SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) for x=0,7 do BGBotText:SetColor( x ) BGBotText:PrintXY( 1, x+1, x ) end DSLua.WaitForAnyKey() Comme vous pouvez le voir, la variable X est beaucoup utilisée. Au début de la boucle, je fixe x egal à 0. Donc X est maintenant déclaré comme le compte à rebour, auquel cas il se lance jusqu'a 7 et ensuite retour à 0. Dans la boucle, d'abord il place le texte inférieur sur l'écran au code de couleur X. Ensuite, il imprime X à l'écran, aux coordonnées 1,x+1. Cour n°4: Reconnaissance des touches et de l'écran. Jusqu'à présent nous avons vu comment affiché des chose à l'écran et les laisser se déplacer aux hasard (le programme prend des décision aux hasards). Mais cela n'est pas vraiment utile lorsque l'on veut réaliser un jeu dans lequel est fait pour une nintendo DS. Vous allez avoir besoin de "user-input" ( = donné d'utilisateur) pour faire un jeu. La DS a les différentes sorte de donnée d'utilisateur suivante: touch screen (le touche écran), buttons (boutons), et microphone (microphone). Vous allez en apprendre un peu plus à propos des deux premier dans ce tutoriel. Pour les boutons c'est facile. Il y a fonction spécial pour chaque boutons qui, s'il n'est pas pressé (si on appuie pas dessus) nous donne le résultat false (faux) et true (vrai) si le bouton est pressé (un peu confus ? c'est normal). Ces fonctions ne peuvent pas se trouver dans le fichiers readme.txt qui est avec le DSLua, mais je vais le lister ici: CODE Pads.A() Pads.B() Pads.X() Pads.Y() Pads.L() Pads.R() Pads.Up() Pads.Down() Pads.Left() Pads.Right() Pads.Select() Pads.Start() Pads.AnyKey() Trés trés facile. Ils commencent tous avec Pads. et ensuite le nom du bouton, suivi de (). Pads.AnyKey() signifie que le résultat est true si une des touches est pressée. CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) x = 16 y = 12 while Pads.Start() == false do -- Quitte quand START est appuyé if Pads.Up() then y = y - 1 end if Pads.Down() then y = y + 1 end if Pads.Left() then x = x - 1 end if Pads.Right() then x = x + 1 end BGTopText:PrintXY( x, y, "0" ) for delay=1,5000 do end end Le touche écran est un peu plus dur à capter, mais reste tout de meme compréhensible. Il y a 3 fonctions: CODE Stylus.Down() Donne le résultat true si le stylus est entrain de toucher l'écran. Stylus.X() Donne la position de x du stylus s'il touche l'écran. Stylus.Y() Donne la position de y du stylus s'il touche l'écran. Par exemple, si l'on veut que l'utilisateur touche l'écran pour qu'un jeu commence, comme beaucoup de vrai jeu DS, vous pouvez utiliser le code suivant: CODE while Stylus.Down() == false do end Mais pour afficher "Vous pressez un bouton" à l'écran et pour vérifier que l'utilisateur est entrain de taper sur l'écran est en peu difficile . Vous aurez besoin d'utiliser ce code, que vous pourrez comprendre aprés l'avoir regardé plusieurs fois: CODE if Stylus.X() >= 50 and Stylus.X() <= 70 and Stylus.Y() <= 150 and Stylus.Y() >= 100 then BGBotText:PrintXY( 1, 1, "Vous pressez le bouton!" ) end Bien sur vous aurez besoin de vérifier continuellement s'ils sont préssés en utilisant une boucle principal (loop). De toute facon, le code d'au dessus vérifie s'ils ont tapé cela : ![]() Ma fonction permet de detecter si le stylus est appuyé dans un rectangle de valeur 50 , 100 , 70 ,150. Ca marche comme cela : CODE if stylusInBox( 50, 100, 70, 150 ) then BGBotText:PrintXY( 1, 1, "vous avez préssé le bouton!" ) end La premiere coordonnée (50, 100) précise où se situe le coin supérieur gauche de la box (boite), et la seconde (70, 150) précise où se situe le coin inférieur droit de la box. A partir de cela, la fonction nous informe si le stylus est dans la (return true). Cour n°5: Sons et musiques La plupart des bons jeux sont dotés de musiques et d'effets sonores, ou au moins l'un des deux. Le DSLua supporte seulement deux formats : Les effets sonores en .RAW et les musiques en .MOD. Vous pouvez trouver des musiques au format .MOD sur Mod Archive ou en cherchant sous Google. Les effets sonores en .RAW peuvent être converti à partir d'un format .WAV ou .MP3 avec un logiciel adhécuate (à chercher sous google Note : Il semblerai que Dualis ne jouerait pas correctement les fichiers .MOD et .RAW. Les fichiers .MOD sont ralentis et les .RAW le sont encore plus. Tout d'abord, vous apprendrez comment lancer une musique. Ne vous inquiétez pas, c'est très simple. La première chose à faire est de charger le fichier MOD. Si votre fichier MOD s'appel, par exemple "music.mod", vous devez faire ça : CODE ModSongname = Music.LoadMod( "music.mod" ) Ensuite, pour le lancer, nous utilisons ModSongname:Play(). Pour le stopper, nous utilisons ModSongname:Stop(). Et pour le mettre en pause : ModSongname:Pause(). A la fin de votre programme, ou quand vous en avez finit avec le fichier MOD, utilisez ModSongname:Free() pour le liberer de la mémoire. Voici un programme de démonstration de toutes ces fonctions. A lancera la musique. B stoppera la musique. L mettra en pause la musique. Et Start stoppera le programme : CODE -- Charge la musique ModMusic = Music.LoadMod( "music.mod" ) while Pads.Start() == false do if Pads.A() then ModMusic:Play() end if Pads.B() then ModMusic:Stop() end if Pads.L() then ModMusic:Pause() end end ModMusic:Free() Pour les effets sonores, c'est exactement la même chose, exepté que vous ne pouvez pas l'arreter ou le mettre en pause. Maintenant que vous savez tout au sujet du lancement des fichiers musique, vous devriez facilement pouvoir savoir lancer des effets sonores en regardant ce code : CODE -- Charge les effets sonores SndGun = Sound.LoadRaw( "gun.raw" ) SndVoice = Sound.LoadRaw( "voice.raw" ) while Pads.Start() == false do if Pads.A() then SndGun:Play() end if Pads.B() then SndVoice:Play() end end SndGun:Free() SndVoice:Free() Voilà c'est ici que s'achève la première raclée de cours a++ benja32 -------------------- |
|
|
|
5-04-2007, 13:26
Message
#2
|
|
![]() VIP Gueux ![]() ![]() ![]() ![]() ![]() ![]() Groupe : Membres Messages : 3646 Inscrit : 27-11-03 Lieu : Paris Membre no 5581 ![]() |
très très bon tuto pour un mec kinenveu
-------------------- Le professionnel du hacking sur la région parisienne et par correspondance (Commentaires sur mes prestations ICI). Modifications au meilleur tarif. contact : modif.console _at_ jx7.net (remplacer le _at_ par @) -------------------- |
|
|
|
5-04-2007, 13:47
Message
#3
|
|
![]() VIP Gueux Groupe : Equipe Moderateurs Messages : 14725 Inscrit : 7-10-03 Membre no 4110 |
lut
très bon tuto et le bonjour ? allez ça dégage ++ -------------------- Puçage/Flash /réparation
-WII -Xbox 360 -Old Gen Xbox 1/PS2/Pstwo/DS/DS lite Me contacter à NOSPAMxam1311@gx-mod.comNOSPAM (retirer les NOSPAM) ou MP Echange Faceplate RE5 collector contre faceplate Offiicielle élite noire contact par mp VDS Xbox 360 élite 120 go flashé avec 2 manettes en boîte |
|
|
|
5-04-2007, 13:52
Message
#4
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 84 Inscrit : 10-10-05 Membre no 25990 |
CITATION(xam1311 @ 5-04-2007, 14:47) [snapback]1045326[/snapback] lut très bon tuto et le bonjour ? allez ça dégage ++ sorry -------------------- |
|
|
|
5-04-2007, 14:06
Message
#5
|
|
![]() VIP Gueux ![]() ![]() ![]() ![]() ![]() ![]() Groupe : Membres - Auteur Gx-Tutos Messages : 11507 Inscrit : 23-11-04 Membre no 16054 ![]() |
Ce sont des tutos/topics comme ça qui donne envie de récupérer une DS et d'y faire un petit homebrew.
Merci benja. Tu gazes un max. -------------------- Plouf
Un éléphant qui se balançait sur une toile d'araignée. |
|
|
|
5-04-2007, 15:03
Message
#6
|
|
![]() Membre Avancé ![]() ![]() ![]() Groupe : Membres Messages : 461 Inscrit : 24-10-06 Lieu : 38 Membre no 43457 |
C'est clair joli tuto ca donne envie de s'y pencher
-------------------- Repose en paix Vincent
---------------------------- REPARE TOUTES XBOX 360 QUEL QUE SOIT LE PROBLEME ME CONTACTER PAR MP N'essaye pas. Fais le. Ou ne le fais pas. Yoda |
|
|
|
11-04-2007, 18:01
Message
#7
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 40 Inscrit : 22-02-06 Membre no 32053 |
super tuto tres clair..ça me donne envie de me lancer..
2 questions : 1 facile : quelles sont les coordonnées maximum de l'écran tactile? Et 1 plus dure : si la DS ne peut lire que des son en RAW et MOD, comment les codeur font pour que des soft genre Moonshell ou DSOrganize puisse lire du MP3? En gros, je voudrais un "lecteur MP3" sur ma DS, mais aucun des 2 soft ci dessus ne me convient (je dois etre trop difficile..), et je ne trouve aps d'autre soft avec cette fonction (surement que j'ai mal cherché..)..donc, pourquoi pas tenter le coup.. |
|
|
|
15-04-2007, 17:15
Message
#8
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 84 Inscrit : 10-10-05 Membre no 25990 |
CITATION(goaryser @ 11-04-2007, 19:01) [snapback]1050145[/snapback] super tuto tres clair..ça me donne envie de me lancer.. 2 questions : 1 facile : quelles sont les coordonnées maximum de l'écran tactile? Et 1 plus dure : si la DS ne peut lire que des son en RAW et MOD, comment les codeur font pour que des soft genre Moonshell ou DSOrganize puisse lire du MP3? En gros, je voudrais un "lecteur MP3" sur ma DS, mais aucun des 2 soft ci dessus ne me convient (je dois etre trop difficile..), et je ne trouve aps d'autre soft avec cette fonction (surement que j'ai mal cherché..)..donc, pourquoi pas tenter le coup.. 1) les cordonnées de l'écran tactiles sont les mêmes que l'écran du dessus ![]() 2) DSLUA ne lis pas les mp3 donc c'est mort. -------------------- |
|
|
|
18-06-2007, 1:04
Message
#9
|
|
|
Débutant ![]() Groupe : Membres Messages : 2 Inscrit : 17-06-07 Membre no 58175 |
|
|
|
|
24-06-2007, 14:41
Message
#10
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
Salut !
Comme vous le voyez je suis nouveau et donc faut m'expliquer exactement ce que je doit faire du début à la fin lol En fait, je n'ai pas réussi à faire marcher rien qu'au début mon "helloworld" (ça commence bien ! Au début, j'ai tout recopié et ça me mettait un message d'erreur ! Donc j'ai fait copier/coller, et là, qu'est-ce qu'il me met? : ERROR: script result 1 function `/cf/SCRIPT/helloworld.Lua:4: a ttempt to index global `BGBotTex t' (a nil value) stack traceback : /cf/SCRIPT/helloworld.Lua:4: in main chuck' Voilà ^^ ! Si vous pouviez m'aider ça m'arrangerai lol ^^ !! Au fait, si vous avez besoin de savoir exactement ce que j'ai mis, voilà : SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGBotText:PrintXY( 1, 1, "Hello World!" ) BGTopText:PrintXY( 1, 1, "Hello World!" ) SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGTopText:PrintXY( 1, 1, "Hello World!" ) SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) BGTopText:PrintXY( 10, 12, "Hello World!" ) DSLua.WaitForAnyKey() C'est tout ! |
|
|
|
25-06-2007, 2:10
Message
#11
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 232 Inscrit : 9-08-06 Membre no 39715 |
Bonjour les gueux,
@The DjBestFegor'Z Je crois connaitre ton probleme, bien que je ne sois moi même qu'un débutant Premièrement, tu initialise 3 fois le même écran ( celui du haut ) avec : CODE SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) (inutile, mais ce n'est pas selon moi la cause de l'erreur) Deuxièmement, tu apelle du texte sur l'écran inférieur sans avoir initialisé celui ci : CODE BGBotText:PrintXY( 1, 1, "Hello World!" ) Avant cette ligne, il faudrait, si je ne me trompe pas, un CODE SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) De plus, tu apelle du texte à 3 reprises, pourquoi ? Bonne chance pour la suite Maintenant, mon propre problème Voila, je viens de débuter en LUA sur DS, j'ai commencé par un simple script qui affiche la touche sur laquelle on appuie, mais la DS me renvoie une erreur: CITATION Failed to load: 3 '/CF/2.LUA:16: '=' expected near 'Pads' ' (j'utilise DSLUA 0.5, la 0.7 refuse de booter sur mon DS-X ) Voici mon code : CODE SCREEN_TOP = 1 SCREEN_BOTTOM = 0 BGTopText = Screen.LoadTextBG() BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) Screen.Initialize( SCREEN_BOTTOM, BGBotText ) x = "Vous n'appuyez sur rien" while Pads.Start() == false or Pads.Select() == false do y = x if Pads.A() == true then While Pads.A() == true do x = "Vous appuyez sur A" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.B() == true then While Pads.B() == true do x = "Vous appuyez sur B" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.X() == true then While Pads.X() == true do x = "Vous appuyez sur X" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.Y() == true then While Pads.Y() == true do x = "Vous appuyez sur Y" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.L() == true then While Pads.L() == true do x = "Vous appuyez sur L" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.R() == true then While Pads.R() == true do x = "Vous appuyez sur R" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.Start() == true then While Pads.Start() == true do x = "Vous appuyez sur Start" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.Select() == true then While Pads.Select() == true do x = "Vous appuyez sur Select" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Stylus.Down() then While Stylus.Down() == true do x = "Vous touchez l'écran tactile" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end elseif Pads.Down() == true or Pads.Up() == true or Pads.Left() == true or Pads.Right() == true then While Pads.Down()== true or Pads.Up()== true or Pads.Left()== true or Pads.Right() == true do x = "Vous appuyez sur la croix directionnelle" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end else while Pads.A() == false and Pads.B() == false and Pads.X() == false and Pads.Y() == false and Pads.L() == false and Pads.R() == false and Pads.Up() == false and Pads.Down() == false and Pads.Left() == false and Pads.Right() == false and Stylus.Down == false do x = "Vous n'appuyez sur rien" BGTopText:SetColor( 6 ) BGTopText:PrintXY( 1, 1, x) end if x ~= y then BGTopText:FillRectWithChar( 0, 0, 31, 23, " " ) end end Je ne comprend pas l'erreur cette fois ci, et si une bonne ame qui si connait en LUA passe par ici... Merci d'avance et a bientot sur le forum ^ ^ |
|
|
|
25-06-2007, 16:56
Message
#12
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
@Arantes
Merci beaucoup ! (mais désolé pour ton problème; quand je dis que je suis débutant, c'est que c'est mon 1er script en C++ ^^ !) Encore un problème ^^ : -- Voici mon premier Script ^^ ! -- Les Variables d'Écrans SCREEN_TOP = 1 SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) Screen.Initialize( SCREEN_TOP, BGTopText ) -- Les 2 textes indiquants le n° de l'écran BGBotText:PrintXY( 1, 1, "ECRAN DU BAS" ) BGTopText:PrintXY( 1, 1, "ECRAN DU HAUT" ) If Stylus.X() >= 50 and Stylus.X() <= 70 and Stylus.Y() <= 150 and Stylus.Y() >= 100 then BGBotText:PrintXY( 1, 1, "Vous pressez le bouton!" ) end -- Attendre la pression d'une touche DSLua.WaitForAnyKey() Là je ne comprend pas du tout le problème ! J'ai cherché mais bon |
|
|
|
25-06-2007, 23:49
Message
#13
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 232 Inscrit : 9-08-06 Membre no 39715 |
Re,
Moi aussi c'est mon premier script (PS: ce n'est pas du C++, c'est du LUA J'ai trouvé ton problème ( encore ^^), alors en fait, c'est que vu que ta condition pour le stylet est seulement une condition, ben si elle n'est pas remplie dès le début, elle ne sera pas activée du tout^^ Pour résoudre cela, essaye le code suivant : CODE -- Voici mon premier Script ^^ !
-- Les Variables d'Écrans SCREEN_TOP = 1 SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) Screen.Initialize( SCREEN_TOP, BGTopText ) -- Les 2 textes indiquants le n° de l'écran BGBotText:PrintXY( 1, 1, "ECRAN DU BAS" ) BGTopText:PrintXY( 1, 1, "ECRAN DU HAUT" ) while true do if Stylus.X() >= 50 and Stylus.X() <= 70 and Stylus.Y() <= 150 and Stylus.Y() >= 100 then BGBotText:PrintXY( 10, 10, "Vous pressez le bouton!" ) -- J'ai modifié les coordonnées pour ne pas que ce message interfère avec "ECRAN DU BAS" ^^ -- Pour effacez le "Vous pressez le bouton!" si celui ci n'est plus pressé else BGBotText:PrintXY( 10, 10, " " ) end -- Attendre la pression d'une touche if DSLua.WaitForAnyKey() then break end end Ce message a été modifié par Arantes - 26-06-2007, 3:50. |
|
|
|
26-06-2007, 10:31
Message
#14
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
Merci beaucoup Arantes!, mais le problème, c'est que ça ne marche toujours pas ^^ ! il me dit :
CODE Failed to Load: 3 `/cf/SCRIPTS/Mon projet.Lua:1:unexpected symbol near ` '' {PS.: CITATION(Arantes) ce n'est pas du C++, c'est du LUA Oui je sais ^^, j'ai confondu avec un autre logiciel que j'utilisais juste avant ^^ dsl ! Sinon c'est bien sûr mon 1er script en LUA, pareil sauf en RUBY pour RPG Maker, et un peu en DarkBasic ^^.}
Ce message a été modifié par The DjBestFegor'Z - 26-06-2007, 10:31. |
|
|
|
26-06-2007, 15:22
Message
#15
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
C'est bon Arantes, j'ai trouvé le problème ! Merci pour ton aide quand même ^^ ! Voilà!, enfin je vais pouvoir continuer mon jeu l'esprit tranquile
|
|
|
|
26-06-2007, 15:35
Message
#16
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 232 Inscrit : 9-08-06 Membre no 39715 |
Alors la, je ne vois pas... Avec ton ancien code il donnait quoi comme message d'erreur ?
Sinon essaye en retirant tous les commentaires, peut être qu'ils contiennent un symbole que DSLua n'apprécie pas ^^ |
|
|
|
26-06-2007, 16:58
Message
#17
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
J'ai tout recommencé:
Voici mon ancien: CODE --Voici mon premier script ^^ ! --Les Variables d'Écrans SCREEN_TOP = 1 SCREEN_BOTTOM = 0 BGBotText = Screen.LoadTextBG() BGTopText = Screen.LoadTextBG() Screen.Initialize( SCREEN_BOTTOM, BGBotText ) Screen.Initialize( SCREEN_TOP, BGTopText ) --Les 2 textes indiquants le n° de l'écran BGBotText:PrintXY( 1, 1, "ECRAN DU BAS" ) BGTopText:PrintXY( 1, 1, "ECRAN DU HAUT" ) while true do if Stylus.X() >= 50 and Stylus.X() <= 70 and Stylus.Y() <= 150 and Stylus.Y() >= 100 then BGBotText:PrintXY( 10, 10, "Vous pressez le bouton!" ) --J'ai modifié les coordonnées pour ne pas que ce message interfère avec "ECRAN DU BAS" ^^ --Pour effacez le "Vous pressez le bouton!" si celui ci n'est plus pressé else BGBotText:PrintXY( 10, 10, " " ) end --Attendre la pression d'une touche if DSLua.WaitForAnyKey() then break end end Voici le nouveau: CODE -- Voici mon premier script ^^ !
-- Variables d'Écrans SCREEN_BOTTOM = 0 SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) Screen.Initialize( SCREEN_BOTTOM, BGBotText ) -- Boucle principale ~ while true do -- "Vous appuyez sur l'écran !!" if Stylus.Down() then BGBotText:PrintXY( 2, 10, "Vous appuyez sur l'écran !!" ) BGTopText:PrintXY( 2, 10, Stylus.X()) BGBotText:SetColor( 5 ) else BGBotText:PrintXY( 2, 10, " " ) end end -- Fin de Boucle principale Ce message a été modifié par The DjBestFegor'Z - 26-06-2007, 17:01. |
|
|
|
26-06-2007, 23:12
Message
#18
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 232 Inscrit : 9-08-06 Membre no 39715 |
Ouais mais maintenant tu n'a aucun moyen de quitter ton code.
Je te suggère un 'tite modification : CODE -- Voici mon premier script ^^ !
-- Variables d'Écrans SCREEN_BOTTOM = 0 SCREEN_TOP = 1 BGTopText = Screen.LoadTextBG() BGBotText = Screen.LoadTextBG() Screen.Initialize( SCREEN_TOP, BGTopText ) Screen.Initialize( SCREEN_BOTTOM, BGBotText ) -- Boucle principale ~ while true do -- "Vous appuyez sur l'écran !!" if Stylus.Down() then BGBotText:PrintXY( 2, 10, "Vous appuyez sur l'écran !!" ) BGTopText:PrintXY( 2, 10, Stylus.X()) BGBotText:SetColor( 5 ) else BGBotText:PrintXY( 2, 10, " " ) end if Pads.Start() then break end end -- Fin de Boucle principale |
|
|
|
2-07-2007, 13:08
Message
#19
|
|
|
Débutant ![]() Groupe : Membres Messages : 7 Inscrit : 24-06-07 Membre no 58458 |
Merci Arantes ^^ mais je voudrai demander comment faisont-nous apparaître des images (avec quelle commande) ?
|
|
|
|
3-07-2007, 19:06
Message
#20
|
|
|
Membre ![]() ![]() Groupe : Membres Messages : 232 Inscrit : 9-08-06 Membre no 39715 |
Désolé, mais je n'en sais rien.
Va faire un tour du côté des scripts inclus dans DSLua, je croit que tu y trouvera ton bonheur ^^ |
|
|
|
![]() ![]() |
| Version bas débit | Nous sommes le : 9.02.2010 - 14:12 |