Threads/tcp/SDL problème passage d'information entre fonction d'un programme
Bonjour à tous,
J'ai un nouveau problème qui se pose à moi, mon but est de réaliser un jeu de "air hockey" en réseau.(j'avais déjà ouvert un autre sujet pour un problème différent sur le même projet )
http://www.developpez.net/forums/d10...asser-tableau/
Je veux en faite passer les informations sur la position de la balle, et les positions des palets de chacun des 2 joueurs, par le biais d'un client/serveur.
J'explique un peu:
J'ai mon "main.cpp" qui contient toute la partie SDL et mon fichier "tcp.c" qui contient ma partie réseau et mes 2 threads envoyer, recevoir.
Code:
1 2 3 4 5 6 7 8
| struct param
{
SOCKET socks;
signed short nb;
unsigned short Pos[6];
};
struct param posi; |
(Ci dessus )c'est la structure que j'envoie par "*p_data" dans les 2 threads(ci dessous):
Code:
1 2 3 4
| void * recevoir(void * p_data);
void * envoyer(void * p_data);
int client(struct param *mesparams);//Prototype de la fonction client |
Imaginons que la position du palet du joueur 1 change :
Code:
1 2 3 4 5 6 7 8
| case SDL_MOUSEMOTION:
positionpalet.x = event.motion.x;
positionpalet.y = event.motion.y;
posi.Pos[4] = event.motion.x;
posi.Pos[5] = event.motion.y;
/*Ici il faudrait appeler le client ou serveur suivant le joueur pour passer au thread d'envoi la nouvelle position du palet au joueur 2 */ |
-1ère question :
Comment pouvoir utiliser à la fois ma console et ma fenêtre SDL, j'ai déjà essayé :
Code:
1 2
| freopen( "CON", "w", stdout );
freopen( "con", "w", stderr ); |
Sans succès.
-2ème quéstion :
Comment faire pour appeler mes fonctions contenus dans "tcp.c" dans mon main, j'ai essayé :
Code:
client(struct param * posi);
Erreur:
main.cpp|82|error: expected primary-expression before 'struct'|
Encore une fois sans succés.
Je peux mettre mon code source en pièce jointe si il y a besoin.
(Pour info j'ai fait plusieurs recherche et lu tous le cours sur les sockets et threads).
Merci d'avance :)
----------------------------------------------------------
One thing : sudo rm -rf /*