-
Sujet : Proie_Predateur
Bonjour à tous en faite j'ai un problème que j'arrive pas résoudre je demandai si vous pourrez m'aider,
je suis entrain d'ecrire un programme en c++ de 4 prédateurs qui cherchent à encercler une proie
hypothéses
- envronnement est defini comme une grille 2d
- Pas de mem position por tous les acteurs
- L'environnement est totalement accessible
- Le nbre d'intanciation de mobile_predateur est au moins de 4 le nbre de mobile est defini par l'utilisateur
- Encerclement ssi presence de 3 predateurs pas capabilité de s'en fuir
classe mobile_proie et classe mobile_predateur heritent de la class mobile
J'ai fait un bout de code mais c pa encore complet
Auriez vous pas des solutions, merci
beman
* Titre : Proie_predateur
Resumé : quatre prédateurs cherchent à encercler une proie
Auteur :
Date : 25-11-2008
*/
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
class mobile
{
protected:
float x,y,d;
public :
mobile(int,int,int);
~mobile();
void deplacement(int,float,float);
float distance(mobile &);
void suivre(mobile &);
void afficher();
//void ecart(int,int,int,int);
};
mobile :: mobile(int abs,int ord,int c)
{
x=abs;
y=ord;
d=c;
}
mobile :: ~mobile()
{
}
void mobile :: deplacement(int n,float dx,float dy)
{
switch(n)
{
case 1:
x=dx++;
y=dy++;
break;
case 2:
x=dx++;
y=dy--;
break;
case 3:
x=dx--;
y=dy++;
break;
case 4:
x=dx--;
y=dy--;
}
}
float mobile :: distance(mobile &m)//Methode retournant la distance seperant un mobile M de sa position initiale.
{
float dx = x-m.x;
float dy = y-m.y;
return sqrt(dx*dx + dy*dy);
}
void mobile :: suivre(mobile &n)
{
//int pas = 1;
float dist = distance(n);
float dx,dy;
dx= (d/dist)*(n.x-x);
dy= (d/dist)*(n.y-y);
x = x+dx;
y = y+dy;
}
void mobile :: afficher()
{
cout <<" les coordonnées de ce mobile sont:"<<""<<x<<" et "<<y<<"\n";
}
/*
//class proie derivant de la classe mobile
class mobile_proie : public mobile
{
public :
mobile_proie(int, int, int,int);
};
mobile_proie :: mobile_proie(int abs,int ord, int xf, int yf) : mobile(abs,ord)
{
int i;
if ((x++ != xf)&& (y++ != yf))
for(i=1; i<4 ;i++)
do(mobile :: deplacement (i,abs,ord));
while((x!= xf)&& (y!= yf));
else
cout <<"position finale atteinte avec succés"<< endl;
}
//class mobile-predateur derivant de la casse mobile
class mobile_predateur : public mobile
{
public :
float dist1;
float dist2;
mobile_predateur(int,int,int,int,int,int);
void poursuivre(int,int,int,int);
};
mobile_predateur :: mobile_predateur(int abs,int ord,int xp1,int yp1,int xp2,int yp2): mobile(abs,ord)
{
//dist1 = ecart(abs,ord,xp1,yp1);
/*dist2 = mobile :: ecart(abs,ord,xp2,yp2);
}
void mobile_predateur :: poursuivre(int xp1,int yp1,int xp2,int yp2)
{
//if(dist1 < dist2)
{
mobile :: suivre(xp2,yp2)
}
else
mobile :: suivre(xp2,yp2)
}
*/
//int main(int argc, char *argv[])
main()
{
}
system("PAUSE");
return EXIT_SUCCESS;
}
-
Visiblement ton problème est algorithmique... c'est donc dans le forum idoine qu'il faut poster. Sinon pour les problèmes techniques, il y a le forum C++. Pas ici donc en somme.
Finalement, n'oublies pas de lire les règles du forums et :tagcode: !