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(); }
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); }