#include #include #include "Etrevivant.h" #include #include #include #include #include #include "windows.h" #define EXPORT __declspec(dllexport) using namespace std; void afficher (vector EV) {for (int unsigned i=0; i esttransforme(vector Z, vector H, Etrevivant EV ) { vector N(1); const gsl_rng_type* T; gsl_rng* r; T=gsl_rng_default; r=gsl_rng_alloc(T); gsl_rng_set(r,time(NULL)); if (EV.get_humain()) { Z.resize(Z.size()+1, Etrevivant(true, false, false,0,EV.get_ligne(),EV.get_colonne())); N.resize(Z.size()); N=Z; } else { double age =gsl_rng_uniform ( r); int A=floor(age*5)+1; Z.resize(Z.size()+1, Etrevivant(false, true, false,A,EV.get_ligne(),EV.get_colonne())); N.resize(Z.size()); N=Z; } //cout << "transformation" < E, int i) { bool ok=false; int ligne = E[i].get_ligne(); int colonne = E[i].get_colonne(); for(int k=0; k E, int i, int n) { bool g=false; bool h=false; bool d=false; bool b=false; bool tot=false; Etrevivant gauche (E[i].get_zombie(), E[i].get_humain(), E[i].get_immunise(), E[i].get_age(), E[i].get_ligne(), E[i].get_colonne()-1); Etrevivant haut (E[i].get_zombie(), E[i].get_humain(), E[i].get_immunise(), E[i].get_age(), E[i].get_ligne()-1, E[i].get_colonne()); Etrevivant droite (E[i].get_zombie(), E[i].get_humain(), E[i].get_immunise(), E[i].get_age(), E[i].get_ligne(), E[i].get_colonne()+1); Etrevivant bas (E[i].get_zombie(), E[i].get_humain(), E[i].get_immunise(), E[i].get_age(), E[i].get_ligne()+1, E[i].get_colonne()); for (int j=0; j Tuer (vector E, int unsigned i) { vector N (E.size()); //cout << "fonction tuer pour le zombie " << i << endl; if(i < E.size()) {N.resize (E.size()-1); //cout << "taille de zombie " << E.size() << " taille de N " << N.size()< deplacement (vector E, int i, int n,const gsl_rng* r) { double proba; int c=0; if (not encercler (E,i,n)) {while (occupee(E,i) or c<1) {c++; //cout<<"occupe : "<=1)//gauche si peut pas bouge pas ! {E[i].set_colonne(E[i].get_colonne()-1); } else if (proba<=0.5 && E[i].get_ligne()>=1)//haut { E[i].set_ligne(E[i].get_ligne()-1); } else if (proba<=0.75 && E[i].get_colonne() Combat(vector zombie,vector humains,vector HI,int n) {//création de la graine const gsl_rng_type* T;//là j'ai repris ce que t'avais mis ds le .cpp mais je sais pas ce que ca fait exactement faudrait que t'explik gsl_rng* r;//en gros je lance un tirage aleatoire sur une loi uniforme[0,1]?? T=gsl_rng_default; r=gsl_rng_alloc(T); gsl_rng_set(r,time(NULL)); cout << "fct combat"<< endl; for (int unsigned i=0; i temp1 (zombie.size()+1); temp1 = esttransforme(zombie, humains, humains[j]); zombie.resize(zombie.size()+1); zombie=temp1; vector temp (zombie.size()-1); temp=Tuer(humains,j); humains.resize(zombie.size()-1); humains=temp; zombie=deplacement(zombie,zombie.size()-1,n,r); } else{zombie=deplacement(zombie,i,n,r); //cout<<"apres deplacement en cas de non combat: "< temp1 (zombie.size()+1); temp1 = esttransforme(zombie, humains, humains[j]); zombie.resize(zombie.size()+1); zombie=temp1; vector temp (zombie.size()-1); temp=Tuer(humains,j); humains.resize(zombie.size()-1); humains=temp; zombie=deplacement(zombie,zombie.size()-1,n,r); } else{zombie=deplacement(zombie,i,n,r); //cout<<"apres deplacement en cas de non combat: "< temp1 (zombie.size()+1); temp1 = esttransforme(zombie, humains, humains[j]); zombie.resize(zombie.size()+1); zombie=temp1; vector temp (zombie.size()-1); temp=Tuer(humains,j); humains.resize(zombie.size()-1); humains=temp; zombie=deplacement(zombie,zombie.size()-1,n,r); } else{zombie=deplacement(zombie,i,n,r); //cout<<"apres deplacement en cas de non combat: "< temp1 (zombie.size()+1); temp1 = esttransforme(zombie, humains, humains[j]); zombie.resize(zombie.size()+1); zombie=temp1; vector temp (zombie.size()-1); temp=Tuer(humains,j); humains.resize(zombie.size()-1); humains=temp; zombie=deplacement(zombie,zombie.size()-1,n,r); } else{zombie=deplacement(zombie,i,n,r); //cout<<"apres deplacement en cas de non combat: "< temp1 (zombie.size()+1); temp1 = esttransforme(zombie, humains, humains[j]); zombie.resize(zombie.size()+1); zombie=temp1; vector temp (zombie.size()-1); temp=Tuer(humains,j); humains.resize(zombie.size()-1); humains=temp; zombie=deplacement(zombie,zombie.size()-1,n,r); } else{zombie=deplacement(zombie,i,n,r); //cout<<"apres deplacement en cas de non combat: "< temp (HI.size()-1); temp=Tuer(HI,j); HI.resize(HI.size()-1); HI=temp; } else if(fight<0.8) {vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; } else if (fight<0.9) {vector temp1 (HI.size()+1); temp1 = esttransforme(zombie, HI, zombie[i]); HI.resize(HI.size()+1); HI=temp1; vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; HI=deplacement(HI,HI.size()-1,n,r);} //sinon, il ne se passe rien... } else if (HI[j].get_age()==2)//si on est dans la classe 2:[10,30] {//cout << "cas 2 :"<< endl; if (fight<0.05) { vector temp (HI.size()-1); temp=Tuer(HI,j); HI.resize(HI.size()-1); HI=temp; } else if(fight<0.65) {vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; } else if (fight<0.9) {vector temp1 (HI.size()+1); temp1 = esttransforme(zombie, HI, zombie[i]); HI.resize(HI.size()+1); HI=temp1; vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; HI=deplacement(HI,HI.size()-1,n,r);} //sinon, il ne se passe rien... } else if (HI[j].get_age()==3)//si on est dans la classe 3:[30,50] {//cout << "cas 3 :"<< endl; if (fight<0.1) { vector temp (HI.size()-1); temp=Tuer(HI,j); HI.resize(HI.size()-1); HI=temp; } else if(fight<0.5) {vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; } else if (fight<0.9) {vector temp1 (HI.size()+1); temp1 = esttransforme(zombie, HI, zombie[i]); HI.resize(HI.size()+1); HI=temp1; vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; HI=deplacement(HI,HI.size()-1,n,r);} //sinon, il ne se passe rien... } else if (HI[j].get_age()==4)//si on est dans la classe 4:[50,70] {//cout << "cas 4 :"<< endl; if (fight<0.3) { vector temp (HI.size()-1); temp=Tuer(HI,j); HI.resize(HI.size()-1); HI=temp; } else if(fight<0.6) {vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; } else if (fight<0.9) {vector temp1 (HI.size()+1); temp1 = esttransforme(zombie, HI, zombie[i]); HI.resize(HI.size()+1); HI=temp1; vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; HI=deplacement(HI,HI.size()-1,n,r);} //sinon, il ne se passe rien... } else if (HI[j].get_age()==5)//si on est dans la classe 5:[70,100] {//cout << "cas 5 :"<< endl; if (fight<0.7) { vector temp (HI.size()-1); temp=Tuer(HI,j); HI.resize(HI.size()-1); HI=temp; } else if(fight<0.8) {vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; } else if (fight<0.9) {vector temp1 (HI.size()+1); temp1 = esttransforme(zombie, HI, zombie[i]); HI.resize(HI.size()+1); HI=temp1; vector temp (zombie.size()-1); temp=Tuer(zombie,i); zombie.resize(zombie.size()-1); zombie=temp; HI=deplacement(HI,HI.size()-1,n,r);} //sinon, il ne se passe rien... } } } } vector Total (zombie.size()+humains.size()+HI.size()+3); Total[0].set_age (zombie.size()); Total[1].set_age (humains.size()); Total[2].set_age (HI.size()); for (int unsigned i=3; i<(zombie.size()+3); i++) { Total[i]=zombie[i-3]; } for (int unsigned i=(zombie.size()+3); i<(humains.size()+zombie.size()+3); i++) { Total[i]=humains[i-zombie.size()-3]; } for (int unsigned i=(humains.size()+zombie.size()+3); i deplacements (vector E, int n, const gsl_rng* r) { for (int unsigned i (0); i=1) {E[i].set_colonne(E[i].get_colonne()-1); if (occupee(E,i)) { E[i].set_colonne(E[i].get_colonne()+1); } } } else if (proba<=0.5)//haut { if (E[i].get_ligne()>=1) { E[i].set_ligne(E[i].get_ligne()-1); if (occupee(E,i)) { E[i].set_ligne(E[i].get_ligne()+1); } } } else if (proba<=0.75)//droite { if(E[i].get_colonne() Z (a); vector H (b); vector HI (c); const gsl_rng_type* T; gsl_rng* r; T=gsl_rng_default; r=gsl_rng_alloc(T); gsl_rng_set(r,time(NULL)); for (int i=0; i0 and (H.size()+HI.size())>0) { cout<< "tour " < R (H.size()+HI.size()+Z.size()); R=Combat(Z,H,HI,n); Z.resize(R[0].get_age()); H.resize(R[1].get_age()); HI.resize(R[2].get_age()); for (int i=3; i<(R[0].get_age()+3);i++) { Z[i-3]=R[i]; } for (int i=R[0].get_age()+3; i<(R[1].get_age()+R[0].get_age()+3); i++) {H[i-(R[0].get_age()+3)]=R[i]; } for (int unsigned i=R[1].get_age()+R[0].get_age()+3; i