/** * @brief Client::analyserInstruction * @param instruction * traite une instruction */ void Client::analyserInstruction(QString instruction) { QStringList list = instruction.split(";"); if (list.size() == 0) return; switch(list.at(0).toInt()) { // instruction de connexion / envoie de pseudo case 0: verifierConnexion(list.at(1).toStdString().c_str()); break; // instruction lancement partie / récupération numéro joueur case 1: lancerPartie(list.at(1).toInt()); break; // instruction action levier / couleur levier case 2: break; // instruction déplacement joueur / id joueur / nouveau x / nouveau y case 3: break; case 4: break; } }
void Table::addJoueur(Spectateur* s, char* aConvertir){ int place=-1; int jeton=-1; if(isServeur && convertirCharDeJoueur(aConvertir,s,place,jeton)){ Joueur* j = new Joueur(*s, jeton); cout<<"Le nouveau joueur est: "<<j->getNom()<<endl; joueurs[place] = j; if(partieEnCours) actif[place]=true; else actif[place]=false; nbJoueur++; stringstream ss; ss<<place; string newJoueur = "NewJo"; newJoueur+=separateur; newJoueur+=ss.str(); newJoueur+=separateur; newJoueur+=j->getNom(); newJoueur+=separateur; stringstream ssa; ssa<<j->getJeton(); newJoueur+=ssa.str(); newJoueur+=separateur; newJoueur+="0"; newJoueur+=separateur; newJoueur+="t"; newJoueur+=separateur; cout<<newJoueur<<endl; char nJ[100] = ""; strcpy(nJ,newJoueur.c_str()); for(int i=0; i<spectacteurs.size();i++){ send(spectacteurs[i]->getDesc(),nJ, strlen(nJ),0); } char jEnPlus[]="NewJo&"; write(descEnvoie,jEnPlus,10); if(!partieEnCours && nbJoueur>1){ partieEnCours=true; lancerPartie(); } else{ if(!partieEnCours){ //prochainAMiser=place; dealer=place; } } } }
void Salon::gestionRequete(unsigned char octetsRecus[], Joueur * joueur) { std::size_t nombreOctetsEnvoye = 0; if (octetsRecus[0] == REQUETE_MONSTRE_SELECTIONNE) { joueur->monstreSuivant(); ReponseMonstreSelectionne reponse; reponse.ajouterIdMonstre(joueur->getIdMonstre()); gestionErreur(reponse.envoyerRequete( joueur->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_MONSTRE_SELECTIONNE, TAILLE_REPONSE_MONSTRE_SELECTIONNE); } else if (octetsRecus[0] == REQUETE_ETAT_SALON) { ReponseEtatSalon reponse(getNombreJoueur()); for (unsigned int i = 0; i < NOMBRE_JOUEUR_MAX; i++) { if (listeJoueur[i] != NULL) { reponse.ajouterJoueur(listeJoueur[i]->getDataEnTete()); } if (listeJoueur[i] == joueur) { reponse.ajouterIndiceClient(i); } } if (joueur == hote) { reponse.estHote(true); } gestionErreur(reponse.envoyerRequete( joueur->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_ETAT_SALON, TAILLE_ENTETE_JOUEUR*getNombreJoueur()+2); } else if (octetsRecus[0] == REQUETE_EQUIPE_SUIVANTE) { // client : idrequete / idEquipe joueur->equipeSuivante(); ReponseEquipeSelectionnee reponse; reponse.ajouterIdEquipe(joueur->getEquipe()); gestionErreur(reponse.envoyerRequete( joueur->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_EQUIPE_SUIVANTE, TAILLE_REPONSE_EQUIPE_SELECTIONNEE); } else if (octetsRecus[0] == REQUETE_LANCER_PARTIE) { // client : idRequete // renvoi : idrequete / erreur -> a tous les clients ReponseLancerPartie reponse; if (joueur != hote) { std::cout << "erreur hote " << std::endl; reponse.ajouterFlagErreur(true); afficheur->afficher("sa " + std::to_string(numeroSalon), "trch", "Joueur[" + std::to_string(joueur->getNumeroJoueur()) + "] : " + " a tenté de lancer la partie sans être hôte - " + listeJoueur[joueur->getNumeroJoueur()]->getSocketTcp()->getRemoteAddress().toString()); gestionErreur(reponse.envoyerRequete(joueur->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_LANCER_PARTIE, TAILLE_REPONSE_LANCER_PARTIE); } else { for (unsigned int i = 0; i < NOMBRE_JOUEUR_MAX; i++) { if (listeJoueur[i] != NULL) { gestionErreur(reponse.envoyerRequete(listeJoueur[i]->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_LANCER_PARTIE, TAILLE_REPONSE_LANCER_PARTIE); } } lancerPartie(); return; } } else if (octetsRecus[0] == REQUETE_QUITTER_SALON) { ReponseQuitterSalon reponse; gestionErreur(reponse.envoyerRequete(joueur->getSocketTcp(), NOMBRE_RENVOI_MAX), REQUETE_QUITTER_SALON, TAILLE_REPONSE_QUITTER_SALON); liberationSocket(joueur->getNumeroJoueur()); } }