benjamin310395
04/06/2008, 16h55
Réaliser une connection entre 2 DS
/!\ Il vous faudra la liblobby téléchargeable ici (http://palib.info/downloads/Beta/external%20libs/external_liblobby-svn-2007-12-03.7z) /!\
Ce tutoriel vous apprendra à utiliser le wifi entre 2 DS sans la CWF Nintendo.
Avant le programme, mettez ce code :
#include "MessageQueue.h"
#include "802.11.h"
#include "lobby.h"
I) Initialisation du wifi
Avant le main, mettez ce code pour que le programme mette à jour la liblobby :
void customVBL(void)
{
IPC_RcvCompleteCheck();
LOBBY_Update();
}
Mettez les lignes habituelles :
int main(int argc, char ** argv)
{
PA_Init(); // Initialisation de PAlib
PA_InitVBL(); // Initialisation de VBL
Mettez après ce code pour initialiser la liblobby :
PA_VBLFunctionInit(customVBL);
if (!IPC_Init())
{
PA_OutputText(0, 1, 3, "Impossible de charger IPC_Init() !");
return 1;
}
IPC_SetChannelCallback(0, &LWIFI_IPC_Callback);
PA_OutputText(0, 1, 2, "LOBBY_Init() ...");
LOBBY_Init(); // Initialisation de la liblobby
Mettez ce code pour que tout ce que vous envoyez atteint le destinataire :
LOBBY_SetStreamHandler(0x0001, &Receive);
Mettez ensuite ce code et vous pourrez commencer à programmer :
int selected = 0;
PA_OutputText(0, 1, 3, "Entrée dans la boucle sans fin ...");
while (1)
{
//VOTRE PROGRAMME
}
II) Les joueurs connectés et Sélection du destinataire
Pour savoir combien de joueurs sont actuellement connectés, mettez ce programme :
int max = LOBBY_GetNumberOfKnownUsers(); // max = nombre de joueurs connectés
PA_OutputText(0, 1, 22, "Joueurs : %d ", max);
Pour choisir la destination des messages, mettez ce code :
/ / Laisser le choix de la destination
if (Pad.Newpress.Down) // Si la personne a appuyé sur Bas,
selected++; //augmenter la sélection de 1
if (Pad.Newpress.Up) // Si la personne a appuyé sur Haut,
selected--; //diminué la sélection de 1
if (max > 0)
selected %= max ;
III) Envoyer des données aux autres joueurs
Pour envoyer des données aux autres joeurs, mettez ce code :
LOBBY_SendToUser (LOBBY_GetUserByID (sélectionné), 0x0001, (unsigned char *) "ÉCRIVEZ ICI LE MESSAGE A ENVOYER ", 17);
Par exemple :
if (Pad.Newpress.A) // Si la personne a appuyé sur le bouton A
{
LOBBY_SendToUser(LOBBY_GetUserByID(selected),0x000 1,(unsigned char *)"Bouton [A] appuyé.",17) ; // Envoie le message "Bouton [A] appuyé." au destinataire choisi dans le II)
}
Pour afficher les connections sur l'écran, mettez ce code :
/ / Ecrire toutes les connexions à l'écran
int i; // Initialisé i
for (i = 0; i < max; i++)
{
LPLOBBY_USER user = LOBBY_GetUserByID(i) ;
if (i == selected) // Si le joueur choisi est là
{
PA_OutputText(0, 1, 5+i, "->%s (%s) ", LOBBY_GetUserName(user), LOBBY_IsTimedOut(user) ? "TIMEOUT" : "OK"); // afficher "->",le nom du joueur et le temps d'expiration
}
else
{
PA_OutputText(0, 1, 5+i, " %s (%s) ", LOBBY_GetUserName(user), LOBBY_IsTimedOut(user) ? "TIMEOUT" : "OK");// même chose mais sans la flèche.
}
}
IV) Recevoir les données des autres joueurs
mettez entre "main" et "void customVBL(void)" ce code pour afficher les données reçus :
void Receive(unsigned char *data, int length, LPLOBBY_USER from)
{
PA_OutputText(0, 1, 20, "Reçu : %s ", (char*)data);
}
Et voila, c'est la fin du tutoriel.
J'espère que vous comprendrez mieux, grâce à lui, comment se connecter entre 2 DS. Si vous avez des remarques/suggestions, n'hésitez pas :lol: !
/!\ Il vous faudra la liblobby téléchargeable ici (http://palib.info/downloads/Beta/external%20libs/external_liblobby-svn-2007-12-03.7z) /!\
Ce tutoriel vous apprendra à utiliser le wifi entre 2 DS sans la CWF Nintendo.
Avant le programme, mettez ce code :
#include "MessageQueue.h"
#include "802.11.h"
#include "lobby.h"
I) Initialisation du wifi
Avant le main, mettez ce code pour que le programme mette à jour la liblobby :
void customVBL(void)
{
IPC_RcvCompleteCheck();
LOBBY_Update();
}
Mettez les lignes habituelles :
int main(int argc, char ** argv)
{
PA_Init(); // Initialisation de PAlib
PA_InitVBL(); // Initialisation de VBL
Mettez après ce code pour initialiser la liblobby :
PA_VBLFunctionInit(customVBL);
if (!IPC_Init())
{
PA_OutputText(0, 1, 3, "Impossible de charger IPC_Init() !");
return 1;
}
IPC_SetChannelCallback(0, &LWIFI_IPC_Callback);
PA_OutputText(0, 1, 2, "LOBBY_Init() ...");
LOBBY_Init(); // Initialisation de la liblobby
Mettez ce code pour que tout ce que vous envoyez atteint le destinataire :
LOBBY_SetStreamHandler(0x0001, &Receive);
Mettez ensuite ce code et vous pourrez commencer à programmer :
int selected = 0;
PA_OutputText(0, 1, 3, "Entrée dans la boucle sans fin ...");
while (1)
{
//VOTRE PROGRAMME
}
II) Les joueurs connectés et Sélection du destinataire
Pour savoir combien de joueurs sont actuellement connectés, mettez ce programme :
int max = LOBBY_GetNumberOfKnownUsers(); // max = nombre de joueurs connectés
PA_OutputText(0, 1, 22, "Joueurs : %d ", max);
Pour choisir la destination des messages, mettez ce code :
/ / Laisser le choix de la destination
if (Pad.Newpress.Down) // Si la personne a appuyé sur Bas,
selected++; //augmenter la sélection de 1
if (Pad.Newpress.Up) // Si la personne a appuyé sur Haut,
selected--; //diminué la sélection de 1
if (max > 0)
selected %= max ;
III) Envoyer des données aux autres joueurs
Pour envoyer des données aux autres joeurs, mettez ce code :
LOBBY_SendToUser (LOBBY_GetUserByID (sélectionné), 0x0001, (unsigned char *) "ÉCRIVEZ ICI LE MESSAGE A ENVOYER ", 17);
Par exemple :
if (Pad.Newpress.A) // Si la personne a appuyé sur le bouton A
{
LOBBY_SendToUser(LOBBY_GetUserByID(selected),0x000 1,(unsigned char *)"Bouton [A] appuyé.",17) ; // Envoie le message "Bouton [A] appuyé." au destinataire choisi dans le II)
}
Pour afficher les connections sur l'écran, mettez ce code :
/ / Ecrire toutes les connexions à l'écran
int i; // Initialisé i
for (i = 0; i < max; i++)
{
LPLOBBY_USER user = LOBBY_GetUserByID(i) ;
if (i == selected) // Si le joueur choisi est là
{
PA_OutputText(0, 1, 5+i, "->%s (%s) ", LOBBY_GetUserName(user), LOBBY_IsTimedOut(user) ? "TIMEOUT" : "OK"); // afficher "->",le nom du joueur et le temps d'expiration
}
else
{
PA_OutputText(0, 1, 5+i, " %s (%s) ", LOBBY_GetUserName(user), LOBBY_IsTimedOut(user) ? "TIMEOUT" : "OK");// même chose mais sans la flèche.
}
}
IV) Recevoir les données des autres joueurs
mettez entre "main" et "void customVBL(void)" ce code pour afficher les données reçus :
void Receive(unsigned char *data, int length, LPLOBBY_USER from)
{
PA_OutputText(0, 1, 20, "Reçu : %s ", (char*)data);
}
Et voila, c'est la fin du tutoriel.
J'espère que vous comprendrez mieux, grâce à lui, comment se connecter entre 2 DS. Si vous avez des remarques/suggestions, n'hésitez pas :lol: !