void Conteneur::Ajouter(const string & nom, int score) noexcept { const int scoreMin = 0; const int scoreMax = 300; try { if (score < scoreMin || score > scoreMax) { // Incrémente le nombre de rejets NbRejets_++; } else { joueurs_.push_back(Joueur(nom, score)); } } catch (const std::exception&) { cout << "Impossible d'ajouter le joueur !!!"; } }
void MainWindow::Joueur2() { Joueur(2); }
void MainWindow::Joueur1() { Joueur(1); }
void Jeu::mettreAJour(float tempsFrame) { if (actif()) { // Mise à jour de l'affichage m_joueur.mettreAJourAffichage(tempsFrame, true); for (int i = 0; i < m_autresJoueurs.size(); ++i) m_autresJoueurs[i].mettreAJourAffichage(tempsFrame, false); m_affichage.reinitialiser(); m_joueur.ajouterAAffichage(m_affichage); for (int i = 0; i < m_autresJoueurs.size(); ++i) m_autresJoueurs[i].ajouterAAffichage(m_affichage); m_joueur.ajouterAAffichageSuperieur(m_affichage); for (int i = 0; i < m_autresJoueurs.size(); ++i) m_autresJoueurs[i].ajouterAAffichageSuperieur(m_affichage); if (!m_client->connecte() || (m_fenetre.controles().toucheClavierAppuyee(sf::Keyboard::Escape) && m_fenetre.active())) { m_termine = true; return; } // Envoie des données int taillePacketPersonnage = 12; std::vector<std::string> donneesAEnvoyer = { "|personnage", m_joueur.pseudo(), std::to_string(m_joueur.position().x), std::to_string(m_joueur.position().y), std::to_string(m_joueur.angle()), std::to_string(m_joueur.vie()), std::to_string(m_joueur.identifiantArmeSelectionne()), std::to_string((int)m_joueur.tire()), std::to_string((int)m_joueur.estEnnemi()), std::to_string(m_joueur.coordonneesViseur().x), std::to_string(m_joueur.coordonneesViseur().y), "personnage|" }; m_client->envoyerDonnees(donneesAEnvoyer); // Recupération des données des autres joueurs std::vector<std::string> donneesRecues; m_client->recevoirDonnees(donneesRecues); // Traitement des données des autres joueurs int curseur = 0; while (curseur < donneesRecues.size()) { if (donneesRecues.size() > curseur + taillePacketPersonnage - 1 && donneesRecues[curseur] == "|personnage" && donneesRecues[curseur + taillePacketPersonnage - 1] == "personnage|") { if (identifiantJoueur(donneesRecues[curseur + 1]) < 0 && donneesRecues[curseur + 1] != m_joueur.pseudo()) m_autresJoueurs.push_back(Joueur(m_fenetre, glm::vec2(), donneesRecues[curseur + 1], std::stoi(donneesRecues[curseur + 8]))); if (identifiantJoueur(donneesRecues[curseur + 1]) >= 0) { m_autresJoueurs[identifiantJoueur(donneesRecues[curseur + 1])].mettreAJour(donneesRecues[curseur + 1], glm::vec2(std::stof(donneesRecues[curseur + 2]), std::stof(donneesRecues[curseur + 3])), std::stof(donneesRecues[curseur + 4]), std::stof(donneesRecues[curseur + 5]), std::stoi(donneesRecues[curseur + 6]), glm::vec2(std::stof(donneesRecues[curseur + 9]), std::stof(donneesRecues[curseur + 10]))); if (std::stoi(donneesRecues[curseur + 7]) == 1) m_autresJoueurs[identifiantJoueur(donneesRecues[curseur + 1])].tirer(); } curseur += taillePacketPersonnage; } else if (donneesRecues.size() > curseur + 2 && donneesRecues[curseur] == "|deconnexion" && donneesRecues[curseur + 2] == "deconnexion|") { if (identifiantJoueur(donneesRecues[curseur + 1]) >= 0) m_autresJoueurs.erase(m_autresJoueurs.begin() + identifiantJoueur(donneesRecues[curseur + 1])); curseur += 3; } else curseur += 1; } } }