コード例 #1
0
ファイル: client.cpp プロジェクト: Nonolost/4Way
/**
 * @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;
    }
}
コード例 #2
0
ファイル: Table.cpp プロジェクト: jlagniez/serveurPoker
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;
      }
    }
  }
}
コード例 #3
0
ファイル: Salon.cpp プロジェクト: Aredhele/FreakyMonsters
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());
	}
}