IPB

Bienvenue invité ( Connexion | Inscription )



2 Pages V   1 2 >  
Reply to this topicStart new topic
> [tuto Lua] Envie De Programmer Sur Nintendo Ds?, topic officiel d'entraide au lua...
benja32
posté 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 tongue.gif
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 wink.gif

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 wink.gif


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 biggrin.gif.

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 biggrin.gif et bah voila le code ya rien de plus simple:

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 wink.gif). J'utilise Smart Audio Converter qui est en téléchargement libre mais il y en a surement de bien meilleur.
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 tongue.gif d'autre viendrons s'ajouter par la suite, n'hésité pas à poser des questions si vous en avez wink.gif

a++
benja32


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


Go to the top of the page
 
+Quote Post
Jx7
posté 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 enaccor.gif


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

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 @)

--------------------
Go to the top of the page
 
+Quote Post
xam1311
posté 5-04-2007, 13:47
Message #3


VIP Gueux
Icône de groupe

Groupe : Equipe Moderateurs
Messages : 15668
Inscrit : 7-10-03
Membre no 4110



lut
très bon tuto et le bonjour ? allez ça dégage tongue.gif (c'est bon c'est rajouté )
++


--------------------
Puçage/Flash /réparation
-WII
-Xbox 360
-Old Gen Xbox 1/PS2/Pstwo/DS/DS lite
Me contacter à xam1311ATgx-modDOTcom (changer le AT en @ et DOT en . ) ou MP

Go to the top of the page
 
+Quote Post
benja32
posté 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 tongue.gif (c'est bon c'est rajouté )
++


sorry tongue.gif j'etais tellement pris par le tuto que j'en ai oublier les formules de politesses tongue.gif


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


Go to the top of the page
 
+Quote Post
zouzzz
posté 5-04-2007, 14:06
Message #5


VIP Gueux
******

Groupe : Membres - Auteur Gx-Tutos
Messages : 12320
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.


--------------------
usé
Go to the top of the page
 
+Quote Post
klut38
posté 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
Go to the top of the page
 
+Quote Post
goaryser
posté 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..
Go to the top of the page
 
+Quote Post
benja32
posté 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.


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


Go to the top of the page
 
+Quote Post
Hackers93
posté 18-06-2007, 1:04
Message #9


Débutant
*

Groupe : Membres
Messages : 2
Inscrit : 17-06-07
Membre no 58175



Attention à tous !

Une nouvelle version de DSLua est arrivée : C'est ici !

Faîtes une mise à jour !
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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 newlaugh.gif !
En fait, je n'ai pas réussi à faire marcher rien qu'au début mon "helloworld" (ça commence bien ! dry.gif )
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 !

Go to the top of the page
 
+Quote Post
Arantes
posté 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 ? wink.gif

Bonne chance pour la suite enaccor.gif


Maintenant, mon propre problème tongue.gif

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... tongue.gif

Merci d'avance et a bientot sur le forum ^ ^
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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 huh.gif ... pas trouvé !

Go to the top of the page
 
+Quote Post
Arantes
posté 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 wink.gif ), pas seulement dans ce langage mais en générale wink.gif ( sauf un tout ch'ti peu de RUBY pour RPG maker )

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.
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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.
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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 fou.gif !
Go to the top of the page
 
+Quote Post
Arantes
posté 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 ^^
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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.
Go to the top of the page
 
+Quote Post
Arantes
posté 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
Go to the top of the page
 
+Quote Post
The DjBestFegor...
posté 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) ?
Go to the top of the page
 
+Quote Post
Arantes
posté 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 ^^
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic

 



Version bas débit Nous sommes le : 2.09.2010 - 22:28
 
Bridged By IpbWiki: Integration Of Invision Power Board and MediaWiki © GlobalSoft

Hack Xbox | Hack Xbox 360 | Hack PS3 | Hack Wii | Hack Nintendo DS - PSP - Dingoo| Pose de puce | Tutoriaux modification consoles