Example #1
0
void thJeu::TerminePartie(QByteArray Donnees, QString Partie)
{
    if (m_NomPartie == Partie || m_NomPartie == Partie + "D" || m_NomPartie.remove(m_NomPartie.length()-1,1) + " Termine" == Partie)
    {
        emit FinPartie(Donnees, m_NomPartie);
        for (int I = 0; I < m_Joueurs.count(); I++)
        {
            delete m_Joueurs[I];
            m_Joueurs.removeAt(I);
        }
        emit Detruire(this);
    }
}
void MainWindow::PartieGagne(int joueur)
{
    QString val;
    QMessageBox::about(this,"Fin de partie",val.sprintf("Joueur %d a gagne",joueur));
    FinPartie();
}
Example #3
0
void thJeu::TickTimeOut()
{
    qDebug("TickTimeOut");
    QByteArray envoi;
    envoi.append("1");

    for (int I = 0; I < m_Joueurs.count(); I++)
    {
        m_Joueurs[I]->m_jBase->Bouge();
        m_Joueurs[I]->m_jBase->m_NbrPixels += m_Joueurs[I]->m_jBase->TauxProduction;
        if (m_Joueurs[I]->m_jBase->m_NbrPixels > 150)
        {
            m_Joueurs[I]->m_Armees.append(new Armee(m_Joueurs[I]->m_jBase->m_aPosition));
            m_Joueurs[I]->m_jBase->m_NbrPixels = 50;
        }

        for (int J = 0; J < m_Joueurs[I]->m_Armees.count(); J++)
        {
            m_Joueurs[I]->m_Armees[J]->Bouge();

            for (int K = 0; K < m_Joueurs.count(); K++)
                for (int L = 0; L < m_Joueurs[K]->m_Armees.count(); L++)
                    if (m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels != 0)
                        if (!(K == I && J == L))
                        {
                            double distancePoints = sqrt(pow(m_Joueurs.at(I)->m_Armees.at(J)->m_pPosition.y() - m_Joueurs.at(K)->m_Armees.at(L)->m_pPosition.y(), 2) + pow(m_Joueurs.at(I)->m_Armees.at(J)->m_pPosition.x() - m_Joueurs.at(K)->m_Armees.at(L)->m_pPosition.x(), 2));
                            if (distancePoints <= ((-20 * pow(2, -m_Joueurs.at(I)->m_Armees.at(J)->m_NbrPixels/250.0) + 35) + (-20 * pow(2, -m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels/250.0) + 35)))
                            {
                                if (K!=I)
                                {
                                        if (m_Joueurs.at(I)->m_Armees.at(J)->m_BatailleEngagee == -1)
                                        {
                                            m_Joueurs.at(I)->m_Armees.at(J)->m_Commandes.clear();

                                            if (m_Joueurs.at(K)->m_Armees.at(L)->m_BatailleEngagee == -1)
                                            {
                                                m_Joueurs.at(K)->m_Armees.at(L)->m_Commandes.clear();
                                                m_Joueurs.at(K)->m_Armees.at(L)->m_BatailleEngagee = m_ListeBataille.count();
                                                qDebug("Bataille");
                                                m_ListeBataille.append(Bataille(m_Joueurs.at(I), m_Joueurs.at(I)->m_Armees.at(J), m_Joueurs.at(K), m_Joueurs.at(K)->m_Armees.at(L)));
                                            }
                                            else
                                            {
                                                qDebug("Ajout De Participant");
                                                m_ListeBataille[m_Joueurs.at(K)->m_Armees.at(L)->m_BatailleEngagee].AjouterParticipant(m_Joueurs.at(I), m_Joueurs.at(I)->m_Armees.at(J));
                                            }
                                            m_Joueurs.at(I)->m_Armees.at(J)->m_BatailleEngagee = m_Joueurs.at(K)->m_Armees.at(L)->m_BatailleEngagee;
                                        }
                                }
                                else
                                    if (m_Joueurs.at(I)->m_Armees.at(J)->m_NbrPixels + m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels < 1000 && distancePoints <= ((-15 * pow(2, -m_Joueurs.at(I)->m_Armees.at(J)->m_NbrPixels/250.0) + 15) + (-15 * pow(2, -m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels/250.0) + 15)))
                                    {
                                        if (m_Joueurs.at(K)->m_Armees.at(L)->m_BatailleEngagee == -1)
                                        {
                                            qDebug("Combinaison de deux armees");
                                            m_Joueurs.at(I)->m_Armees.at(J)->m_NbrPixels += m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels;
                                            if (m_Joueurs.at(K)->m_Armees.at(L)->m_Commandes.count() == 0)
                                                m_Joueurs.at(I)->m_Armees.at(J)->m_Commandes = m_Joueurs.at(K)->m_Armees.at(L)->m_Commandes;
                                            m_Joueurs.at(K)->m_Armees.at(L)->m_NbrPixels = 0;
                                        }
                                    }
                            }
                        }
        }
    }

    for (int I = 0; I < m_Joueurs.count(); I++)
        for (int J = 0; J < m_Joueurs[I]->m_Armees.count(); J++)
            if (m_Joueurs.at(I)->m_Armees.at(J)->m_NbrPixels == 0)
            {
                if (m_Joueurs.at(I)->m_Armees[J]->m_BatailleEngagee == -1)
                {
                    delete m_Joueurs.at(I)->m_Armees[J];
                    m_Joueurs.at(I)->m_Armees.removeAt(J--);
                }
            }

    for (int I = 0; I < m_ListeBataille.count(); I++)
    {
        m_ListeBataille[I].Tick(m_Joueurs);
        if (m_ListeBataille[I].m_ListeParticipants.count() <= 1)
        {
            m_ListeBataille.removeAt(I);
            for (int J = I--; J < m_ListeBataille.count(); J++)
                for (int K = 0; K < m_ListeBataille[J].m_ListeParticipants.count(); K++)
                    for (int L = 0; L < m_ListeBataille[J].m_ListeParticipants[K].m_ListeArmees.count(); L++)
                        m_ListeBataille[J].m_ListeParticipants[K].m_ListeArmees[L]->m_BatailleEngagee--;

        }
    }

    for (int I = 0; I < m_Joueurs.count(); I++)
    {
        envoi.append(QString::number(m_Joueurs[I]->m_jBase->m_aPosition.x()) + "\r" + QString::number((m_Joueurs[I]->m_jBase->m_aPosition.y())) + "\r"  + QString::number(m_Joueurs[I]->m_jBase->m_NbrPixels) + "\t");

        for (int J = 0; J < m_Joueurs[I]->m_Armees.count(); J++)
            envoi.append(QString::number(m_Joueurs[I]->m_Armees[J]->m_aPosition.x()) + "\r" + QString::number((m_Joueurs[I]->m_Armees[J]->m_aPosition.y())) + "\r"  + QString::number(m_Joueurs[I]->m_Armees[J]->m_NbrPixels) + "\t");

        envoi.append('\n');
    }

    for (int I = 0; I < m_Joueurs.count(); I++)
        if (m_Joueurs[I]->m_Armees.count() == 0)
        {
            m_Joueurs[I]->m_jBase->TauxProduction = 0;
            m_Joueurs[I]->m_jBase->m_NbrPixels = 0;
            ExclureJoueur(m_Joueurs[I]->m_Nom);
        }
    if (m_NomJoueurs.count() <= 1)
        FinPartie(envoi, m_NomPartie);
    else
        emit EnvoiDonneesServeur(envoi);
}