MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(acceuil())); connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(ajoutcours())); connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(listeCours())); connect(ui->pushButton_5,SIGNAL(clicked()),this,SLOT(coursAttente())); connect(ui->pushButton_6,SIGNAL(clicked()),this,SLOT(Conncexion())); connect(ui->pushButton_7,SIGNAL(clicked()),this,SLOT(inscription())); i=0; }
void* handlerConnexion(void *args) { int sock=*(int *)args; int read_size; char *reponse; char *message,client_message[2000]; char **decouper; Dessin *dessin=malloc(sizeof(*dessin)); dessin->couleur="0/0/0"; dessin->size="1"; char *size="1"; char *couleur="0/0/0"; int i=0; if((read_size=recv(sock,client_message,2000,0))>0) { decouper=(char **)fStrSplit(client_message,"/"); if(strcmp(decouper[0],"CONNECT")==0) { pthread_mutex_lock(&mutex); nbConnecter++; pthread_mutex_unlock(&mutex); creerJoueur(decouper[1],sock,mesJoueurs); reponse=(char *)malloc(sizeof(char *)); strcat(reponse,"WELCOME/"); strcat(reponse,decouper[1]); strcat(reponse,"/\n"); printf("la reponse est %s \n",reponse); write(sock,reponse,strlen(reponse)); notifierConnexion(mesJoueurs,decouper[1],sock); } if(strcmp(decouper[0],"SPECTATOR")==0) { printf("il y'a un spectateur qui veut se connecter \n"); mesSpectateurs[nbSpectateur]=sock; pthread_mutex_lock(&mutex); nbSpectateur++; pthread_mutex_unlock(&mutex); } if(strcmp(decouper[0],"REGISTER")==0) { int insc=inscription(decouper[1],decouper[2]); if(insc==0) { char *reponse=(char *)malloc(sizeof(char *)); strcat(reponse,"WELCOME/"); strcat(reponse,decouper[1]); strcat(reponse,"/\n"); close(sock); } else { char *access="ACCESSDENIED/\n"; write(sock,access,strlen(access)); close(sock); } } if(strcmp(decouper[0],"LOGIN")==0) { int auth=authentification(decouper[1],decouper[2]); if(auth==0) { printf("authentification reussi \n"); pthread_mutex_lock(&mutex); nbConnecter++; pthread_mutex_unlock(&mutex); creerJoueur(decouper[1],sock,mesJoueurs); reponse=(char *)malloc(sizeof(char *)); strcat(reponse,"WELCOME/"); strcat(reponse,decouper[1]); strcat(reponse,"/\n"); printf("la reponse est %s \n",reponse); write(sock,reponse,strlen(reponse)); notifierConnexion(mesJoueurs,decouper[1],sock); } else { char *access="ACCESSDENIED/\n"; write(sock,access,strlen(access)); close(sock); printf("echec authentification \n"); } } } while(nbConnecter!=MaxJoueur) { } pthread_cond_signal(¬ifierJoueurs); while(tour!=0) { while((read_size=recv(sock,client_message,2000,0))>0) {printf("une commande est venu qd meme \n"); char** decouper=malloc(sizeof(char *)); decouper=(char **)fStrSplit(client_message,"/"); printf("command recu :%s \n",client_message); if(strcmp(decouper[0],"SET_COLOR")==0) { printf("il veut definir la couleur \n"); char *maCouleur; maCouleur=(char*)malloc(sizeof(char *)); strcat((char *)maCouleur,decouper[1]); strcat(maCouleur,"/"); strcat(maCouleur,decouper[2]); strcat(maCouleur,"/"); strcat(maCouleur,decouper[3]); dessin->couleur=maCouleur; } if(strcmp(decouper[0],"EXIT")==0) { deconnexionJoueur(mesJoueurs,sock,decouper[1]); supprimerJoueur(mesJoueurs,sock); if(dessinateur->socket_id==sock) {close(sock); finRound(mesJoueurs,buffer,"NO_ONE"); setDessinateur(mesJoueurs); if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL) { int n=strlen(buffer); buffer[n-1]='\0'; aDessiner=buffer; printf(" le mot a dessiner est %s lol ",aDessiner); EnvoyerRole(mesJoueurs,buffer); flagTimeout=0; break; } } close(sock); } if(strcmp(decouper[0],"GUESS")==0) { printf("veut deviner \n"); if(strcmp(decouper[1],aDessiner)==0) { /*EnvoyerMotDeviner(mesJoueurs,decouper[1],sock,1);*/ printf("bien deviner mon pote \n"); DeclencherMotTrouver(mesJoueurs,sock); if(flagScore==0) { setScore(mesJoueurs,sock,10); setScore(mesJoueurs,dessinateur->socket_id,10); flagScore++; } else { setScore(mesJoueurs,sock,10-flagScore); setScore(mesJoueurs,dessinateur->socket_id,1); flagScore++; } if(flagTimeout==0) { declencherTimeOut(mesJoueurs); flagTimeout=1; sleep(timeout); if(flagPass==0) { nomGagnant=getNomJoueur(mesJoueurs,sock); EnvoyerScore(mesJoueurs); finRound(mesJoueurs,buffer,nomGagnant); setDessinateur(mesJoueurs); if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL) { int n=strlen(buffer); buffer[n-1]='\0'; aDessiner=buffer; printf(" le mot a dessiner est %s lol ",aDessiner); EnvoyerRole(mesJoueurs,buffer); flagTimeout=0; break; } } else { finRound(mesJoueurs,buffer,"NO_ONE"); setDessinateur(mesJoueurs); if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL) { int n=strlen(buffer); buffer[n-1]='\0'; aDessiner=buffer; printf(" le mot a dessiner est %s lol ",aDessiner); EnvoyerRole(mesJoueurs,buffer); flagTimeout=0; break; } } } } else { EnvoyerMotDeviner(mesJoueurs,decouper[1],sock,0); printf("incorrect le mot deviner \n"); } } if(strcmp(decouper[0],"TALK")==0) { Talk(mesJoueurs,sock,decouper[1]); } if(strcmp(decouper[0],"PASS")==0) { if(flagMotTrouver==0) { /*personne n'a trouver alors on abondonne tranquillement */ finRound(mesJoueurs,buffer,"NO_ONE"); setDessinateur(mesJoueurs); if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL) { int n=strlen(buffer); buffer[n-1]='\0'; aDessiner=buffer; printf(" le mot a dessiner est %s lol ",aDessiner); EnvoyerRole(mesJoueurs,buffer); flagTimeout=0; break; } } else { /*quelqu'un a deja trouver on attend la fin du timeout */ flagPass=1; } } if(strcmp(decouper[0],"CHEAT")==0) { pthread_mutex_lock(&mutex); nbCheat++; pthread_mutex_unlock(&mutex); if(nbCheat==3) { finRound(mesJoueurs,buffer,"NO_ONE"); setDessinateur(mesJoueurs); if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL) { int n=strlen(buffer); buffer[n-1]='\0'; aDessiner=buffer; printf(" le mot a dessiner est %s lol ",aDessiner); EnvoyerRole(mesJoueurs,buffer); break; } } } if(strcmp(decouper[0],"SET_LINE")==0) { printf("il veut faire un setLine \n"); char *maLigne; maLigne=(char *)malloc(sizeof(char *)); strcat(maLigne,decouper[1]); strcat(maLigne,"/"); strcat(maLigne,decouper[2]); strcat(maLigne,"/"); strcat(maLigne,decouper[3]); strcat(maLigne,"/"); strcat(maLigne,decouper[4]); /*dessin->ligne=maLigne;*/ EnvoyerDessin(mesJoueurs,maLigne,size,couleur); } if(strcmp(decouper[0],"SET_COURBE")==0) { printf("il veut faire une courbe \n"); char *maLigne; maLigne=(char *)malloc(sizeof(char *)); strcat(maLigne,decouper[1]); strcat(maLigne,"/"); strcat(maLigne,decouper[2]); strcat(maLigne,"/"); strcat(maLigne,decouper[3]); strcat(maLigne,"/"); strcat(maLigne,decouper[4]); strcat(maLigne,"/"); strcat(maLigne,decouper[5]); strcat(maLigne,"/"); strcat(maLigne,decouper[6]); strcat(maLigne,"/"); strcat(maLigne,decouper[7]); strcat(maLigne,"/"); strcat(maLigne,decouper[8]); EnvoyerCourbe(mesJoueurs,maLigne,size,couleur); /* dessin->ligne=maLigne; flagCourbe=1; printf(" la courbe est %s \n",dessin->ligne);*/ } if(strcmp(decouper[0],"SET_SIZE")==0) { printf("il veut definir la taille \n"); dessin->size=decouper[1]; } if(strcmp(decouper[0],"SET_TEST")==0) { printf("on fait le test \n"); } /* if(dessin->ligne!=NULL) { printf("le dessin est pres on l'envoi maintenant \n"); if(flagCourbe==1) { EnvoyerCourbe(mesJoueurs,dessin); flagCourbe=0; } else { EnvoyerDessin(mesJoueurs,dessin); } dessin->ligne="0/0/0/0"; }*/ } pthread_mutex_lock(&mutex); tour--; pthread_mutex_unlock(&mutex); printf("round numero %d \n",tour); } }
Utilisateur inscription(){ char saisie[128], dirUser[256] = "", fileHistorique[256] ="", fileAmi[256] = "", fileMsgEnvoye[256] = "", fileMsgRecu[256] = ""; Utilisateur user; FILE * fic; // Saisie du login et mot de passe printf("##############################################################\n"); printf("# S'inscrire #\n"); printf("##############################################################\n\n"); printf("Nom : "); scanf("%s", user.nom); clear(); while(1){ printf("Mot de passe : "); scanf("%s", user.password); clear(); printf("Mot de passe (confirmer) : "); scanf("%s", saisie); clear(); if(strcasecmp(user.password, saisie)==0) break; else { printf("Les mots de passes sont différent!\n"); printf("Veuillez les resaisir!\n"); } } // enregistrement de l'utiliseur (users.txt) if ((fic = fopen(FILE_USERS, "a" )) < 0) { fprintf(stderr, "Erreur : %s ne peut être ouvert\n",FILE_USERS); exit(EXIT_FAILURE); } if(userExist(user.nom, NULL)){ printf("\nLe nom d'utilisateur exsite déjà!\n"); printf("Veuillez resaisir les données!\n\n"); return inscription(); } else { fprintf(fic, "%s %s\n", user.nom,user.password); fclose(fic); // créaction du dossier utilisateur strcat(dirUser, DIR_USERS); strcat(dirUser, user.nom); mkdir(dirUser, 0777); // création du fichier gérant l'historique de l'utilisateur strcat(fileHistorique, DIR_HISTORIQUES); strcat(fileHistorique, user.nom); strcat(fileHistorique, ".txt"); fic = fopen(fileHistorique, "w"); fclose(fic); // création du fichier gérant les amis de l'utilisateur strcat(fileAmi, dirUser); strcat(fileAmi, "/amis.txt"); fic = fopen(fileAmi, "w"); fclose(fic); // création des fichiers gérant les messages de l'utilisateur strcat(fileMsgEnvoye, dirUser); strcat(fileMsgEnvoye, "/envoyes.txt"); fic = fopen(fileMsgEnvoye, "w"); fclose(fic); strcat(fileMsgRecu, dirUser); strcat(fileMsgRecu, "/recus.txt"); fic = fopen(fileMsgRecu, "w"); fclose(fic); printf("\n"); printf("vous etes maintenant connecte!\n"); printf("\n"); //ajout dans le fichier historique addAction(user.nom,"Création_du_compte"); return user; } }