Skip to content
Snippets Groups Projects
Commit b65b3f29 authored by joemilien1's avatar joemilien1
Browse files

fixation du bug des combats

parent 98e641a8
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,6 @@
int nbFourmiMorte = 0 ;
int nbcombat = 0 ;
int tailleCaseCombat = 0 ;
int verification = 0 ;
Simulation::Simulation()
......@@ -69,6 +68,7 @@ Simulation::Simulation(char * nomFichier)
popFourmi.push_back(fourmiReine);
grille->getCase(ligne, colonne)->getVecteurFourmi().push_back(fourmiReine);
}
/*
for (unsigned int i = 0; i < object["fourmisSoldats"].size(); ++i)
{
......@@ -159,13 +159,30 @@ void Simulation::afficher()
std::cout << "\033[1;31m" << "Ressource contenue dans la fourmiliere 2 : " << ressource2 << "\033[0m" << std::endl;
std::cout << "nb fourmi morte = " << nbFourmiMorte << std::endl ;
std::cout << "nb combat = " << nbcombat << std::endl ;
std::cout << "tailleCaseCombat = " << tailleCaseCombat << std::endl ;
std::cout << "verification = " << verification << std::endl ; verification = 0 ;
}
void afficherVecteurFourmiCombat( std::vector<Fourmi *> vf )
{
//std::cout << "taille vecteur = " << vf.size() << std::endl ;
std::cout << "[ " ;
for(unsigned int i = 0 ; i < vf.size() ; i++ )
{
std::cout << vf[i]->getId() << " " ;
}
std::cout << std::endl ;
}
void Simulation::runSimu(unsigned int nbIterationMax)
{
unsigned int nbIteration = 0;
......@@ -173,9 +190,9 @@ void Simulation::runSimu(unsigned int nbIterationMax)
while (nbIteration <= nbIterationMax)
{
plusUnTour();
system("clear");
//system("clear");
afficher();
system("sleep 1");
//system("sleep 1");
nbIteration++;
}
}
......@@ -191,12 +208,11 @@ void Simulation::plusUnTour()
mortFourmi( popFourmi , i );
}
tailleCaseCombat = caseCombat.size() ;
gestionDesCombats( ) ;
caseCombat.erase( caseCombat.begin() , caseCombat.begin() + caseCombat.size() ) ;
/* __________________________________________________________ */
for( unsigned int i = 0 ; i < popFourmi.size() - 1 ; i++ )
for( unsigned int i = 0 ; i < popFourmi.size() - 1 ; i++ ) // on verifie qu'il n'y a pas de doublon sur la liste popFourmi
{
for( unsigned int j = i+1 ; j < popFourmi.size() ; j++ )
{
......@@ -206,10 +222,36 @@ void Simulation::plusUnTour()
}
}
}
for( unsigned int i = 0 ; i < 20 ; i++ ) // on verifie qu'il n'y a pas de doublon sur la les liste de fourmi sur les cases
{
for( unsigned int j = 0 ; j < 20 ; j++ )
{
Case * caseActuelle = grille->getCase( i , j ) ;
std::vector<Fourmi *> vecteurFourmiCase = caseActuelle->getVecteurFourmi();
if ( vecteurFourmiCase.size() != 0 && vecteurFourmiCase.size() != 1 )
{
for( unsigned int i = 0 ; i < vecteurFourmiCase.size() - 1 ; i++ ) // on verifie qu'il n'y a pas de doublon sur la liste popFourmi
{
for( unsigned int j = i+1 ; j < vecteurFourmiCase.size() ; j++ )
{
if( vecteurFourmiCase[i]->getId() == vecteurFourmiCase[j]->getId() )
{
verification++ ;
}
}
}
}
}
}
/* __________________________________________________________ */
}
void Simulation::mortFourmi( std::vector<Fourmi *> & popFourmi , int i )
{
bool dead = popFourmi[i]->mort() ;
......@@ -241,8 +283,27 @@ void Simulation::bougerFourmi(Fourmi * fourmi)
{
fourmi->deplacement(grille);
//grille->getCase(fourmi->getNumLigne(), fourmi->getNumColonne())->getVecteurFourmi().pop_back() ;
// rempacé par ce qui vient apres
std::vector<Fourmi *> & vecteurFourmiCase = grille->getCase( fourmi->getNumLigne(), fourmi->getNumColonne() )->getVecteurFourmi() ;
unsigned int idFourmi = fourmi->getId() ;
//std::cout << "________________________________" << std::endl ;
//afficherVecteurFourmiCombat( vecteurFourmiCase ) ;
for( unsigned int j = 0 ; j < vecteurFourmiCase.size() ; j++ )
{
if( vecteurFourmiCase[j]->getId() == idFourmi )
{
vecteurFourmiCase.erase( vecteurFourmiCase.begin() + j ) ;
}
}
grille->getCase(fourmi->getNumLigne(), fourmi->getNumColonne())->getVecteurFourmi().pop_back() ;
//afficherVecteurFourmiCombat( vecteurFourmiCase ) ;
//std::cout << "________________________________" << std::endl ;
/* creer un fct dans fourmi qui fait tout ça */
fourmi->setNumLigne( fourmi->getNumLigne() + fourmi->getdLigne() ) ;
......@@ -311,6 +372,9 @@ void Simulation::actionFourmi(Fourmi * fourmi)
}
void Simulation::gestionDesCombats( )
{
Case * caseEnCoursDeCombat ;
......@@ -353,6 +417,9 @@ void Simulation::gestionDesCombats( )
colonie2 = 0 ;
caseEnCoursDeCombat = caseCombat[i] ;
VecteurFourmiCombat = caseEnCoursDeCombat->getVecteurFourmi() ;
/*________________________________________________*/
afficherVecteurFourmiCombat( VecteurFourmiCombat ) ;
/*________________________________________________*/
for(unsigned int i = 0 ; i < VecteurFourmiCombat.size() ; i++ ) // compte les soldats de chaque colonie sur la case ou a lieu le combat
{
FourmiSoldat * fsol = dynamic_cast<FourmiSoldat*>(VecteurFourmiCombat[i]);
......@@ -453,38 +520,41 @@ void Simulation::gestionDesCombats( )
}
}
// il cherche a tuer une fourmi qui est deja morte d'ou le bug de marche qui n'apparait pas alors qu'il le devrait (cf fourmi id = 32 )
void Simulation::tuerFourmi( Fourmi * fourmiMorte )
{
//std::cout << "__________DEBUT FONCTION___________ " << std::endl ;
unsigned int idFourmiMorte = fourmiMorte->getId() ;
Case * caseFourmiMorte = grille->getCase(fourmiMorte->getNumLigne(), fourmiMorte->getNumColonne());
std::vector<Fourmi *> vecteurFourmiCase = caseFourmiMorte->getVecteurFourmi() ;
std::vector<Fourmi *> & vecteurFourmiCase = caseFourmiMorte->getVecteurFourmi() ;
std::cout << "idFourmiMorte =" << idFourmiMorte << std::endl ;
std::cout << "taille vecteur case = " << vecteurFourmiCase.size() << std::endl ;
//std::cout << "idFourmiMorte =" << idFourmiMorte << std::endl ;
//std::cout << "taille vecteur case = " << vecteurFourmiCase.size() << std::endl ;
for( unsigned int i = 0 ; i < vecteurFourmiCase.size() ; i++ )
{
std::cout << "idvecteurFourmiCase[i] =" << vecteurFourmiCase[i]->getId() << std::endl ;
//std::cout << "idvecteurFourmiCase[i] =" << vecteurFourmiCase[i]->getId() << std::endl ;
if( vecteurFourmiCase[i]->getId() == idFourmiMorte )
{
vecteurFourmiCase.erase( vecteurFourmiCase.begin() + i ) ;
std::cout << "ça " << std::endl ;;
//std::cout << "ça " << std::endl ;;
}
}
std::cout << "_____________________ " << std::endl ;
std::cout << "idFourmiMorte =" << idFourmiMorte << std::endl ;
std::cout << "taille popfourmi = " << popFourmi.size() << std::endl ;
//std::cout << "_____________________ " << std::endl ;
//std::cout << "idFourmiMorte =" << idFourmiMorte << std::endl ;
//std::cout << "taille popfourmi = " << popFourmi.size() << std::endl ;
for( unsigned int i = 0 ; i < popFourmi.size() ; i++ )
{
std::cout << "idpopFourmi[i] =" << popFourmi[i]->getId() << " " ;
//std::cout << "idpopFourmi[i] =" << popFourmi[i]->getId() << " " ;
if( popFourmi[i]->getId() == idFourmiMorte )
{
popFourmi.erase( popFourmi.begin() + i ) ;
std::cout << "marche " << std::endl ;
//std::cout << "marche " << std::endl ;
}
}
nbFourmiMorte++ ; // a supprimer
std::cout << "fin " << std::endl ;
//std::cout << "__________FIN FONCTION___________ " << std::endl ;
}
......
......@@ -31,6 +31,7 @@ class Simulation
void gestionDesCombats( ) ;
void tuerFourmi( Fourmi * fourmiMorte ) ;
};
......
......@@ -10,7 +10,7 @@ int main()
init_by_array(init, length);
Simulation s((char *)"./src/Config.json");
s.runSimu(15);
s.runSimu(25);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment