Bonjour,
nous sommes en train de coder un jeu en réseau(pour 2 joueurs) et notre
problème est qu'on voudrait qu'une fois que le 1er joueur ait joué il
attende que le 2e joue pour recommencer à jouer.
On a déclaré une variable qu'on incrémente dès qu'un joueur joue.
Mais le 1er joueur qui joue reste bloqué même lorsque le 2e joueur a joué et que celui ci est débloqué.
Thread lancé dans le serveur:
void * jeu(void * voidparam)
{
CLIENT *client=(CLIENT*) voidparam;
int i;
int numero,compteur=0;
do{
numero=reception_entier(client->com);
printf("numero %d\n",numero);
if(numero > 0){
client->vaisseau[numero-2]->nb++;
printf("nb : %d\n",client->vaisseau[numero-2]->nb);
transmettre_chaine(client->com, msg);
if(client->vaisseau[numero-2]->nb==client->vaisseau[numero-2]->taille){
printf("le bateau est coule\n");
transmettre_entier(client->com,1);
transmettre_chaine(client->com, msg2);
compteur++;
}
else{
transmettre_entier(client->com,0);
printf("pas coule\n");
}
}
else {
transmettre_entier(client->com,0);
printf("pas touche\n");
}
printf("-1-joue = %d",joue);
joue++;
printf("-2-joue = %d",joue);
while(joue!=0){
printf("joue : %d",joue);
transmettre_entier(client->com,0);
if(joue==2){
joue=0;
transmettre_entier(client->com,1);
}
}
}
while((compteur<4)&&(joue==0));
pthread_exit(0);
return NULL;
}
Thread lancé dans le client:
void * jeu(void * voidparam)
{
JOUEUR *joueur=(JOUEUR*) voidparam;
Case * c;
int bloque=0,entier,compteur=0;
c=(Case *)malloc(sizeof(Case) *1);
do{
afficher_grille(joueur->grille_jeu);
c=placer_pion(joueur->grille_jeu);
//resultat=controle_case(c->y,c->x,joueur->grille);
transmettre_entier(joueur->com,joueur->grille[c->x][c->y]);
if(joueur->grille[c->x][c->y]>0){
reception_chaine(joueur->com,msg,30);
printf("%s",msg);
entier=reception_entier(joueur->com);
joueur->grille_jeu[c->x][c->y]=1;
if(entier==1){
reception_chaine(joueur->com,msg,30);
printf("%s",msg);
compteur++;
}
}
else joueur->grille_jeu[c->x][c->y]=2;
while(bloque==0){
printf("attente joueur 2");
bloque=reception_entier(joueur->com);
printf("nombre bloque : %d",bloque);
//sleep(1);
}
}
while(compteur<4);
pthread_exit(0);
return NULL;
}
Merci pour vos réponses.