Пример #1
0
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 !!!";
	}
}
Пример #2
0
void MainWindow::Joueur2()
{
    Joueur(2);
}
Пример #3
0
void MainWindow::Joueur1()
{
    Joueur(1);
}
Пример #4
0
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;
		}
	}
}