joshua91
Messages postés22Date d'inscriptionsamedi 31 mai 2003StatutMembreDernière intervention28 juin 2010
-
1 déc. 2003 à 20:27
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007
-
16 févr. 2007 à 00:14
Salut à tous.
J'ai besoin pour mon projet de créer des "agents" (pour moi des virus) et de les faire afficher dans un environement 2D.
il me faut donc générer un "s" nb de personne saine, et un "m" nb de malade avec des coordonnées aléatoires.
voici ma méthode qui propose des coorédonnées temporaires ("a" et "b"), qui vérifie si ces coordonnées ne sont pas déjà prises, si non, ces coordonnées sont éffectées à l'agent lui même ("x" et "y"), sinon, je recrée des coord. temporaire tant que je ne trouve pas des coord. libres.
public void CreerPosition(){
for( int i = 1 ; i< ag.size(); i++){ // ag est un Vector.
// à partir de 1 car un 1er agent a été créé est mit dans "ag"
Agent iop = (Agent)ag.elementAt(i);
iop.randomposition2(); //donne "a" et "b" o hazar
int ta = iop.geta();
int tb = iop.getb();
for( int j = 0; j<i ;j++){
//pour tous les agents en dessous de celui que je traite "i"
Agent iup = (Agent)ag.elementAt(j);
int ia = iup.getx();
int ib = iup.gety();
/* si les x et y de j st diff que a et b, alors les x, y de i deviennent égal à a et b (temporaire)*/
if((ta!=ia)&&(tb!=ib)){
iop.setx(ta);
iop.sety(tb);
continue;
}
//sinon, je recréer d'autre a et b etc...
else{
do{
if((ta==ia)&&(tb==ib)){
iop.randomposition2();
ta = iop.geta();
tb = iop.getb();
}
else{ iop.setx(ta);
iop.sety(tb);
}
}while((ta==ia)&&(tb==ib));
}
}
}
}
Le pb est que j'obtiens des agents avec des coordonnées (aléatoires) x et y égaux.
une méthode préalable Creagent() me crée le nb de sain et de malade spécifié
voici un exemple pour 3 sains et 2 malades:
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 1 déc. 2003 à 22:18
:big) Neodante :big)
Ton Vector ne me paraît pas très utile (capable de ralentir le prog !) ni l'emploi de tes méthodes, mais vu que je ne connais la suite .. passons ! ;-)
:-p Sinon en gros c'est un 'jeu de la vie' que tu veux faire non ???
Euh faudrait comparer chaque élément avec les autres dans une double boucle avec une génération à l'intérieur et une vérification pour que ton truc marche un peu mieux non ???
Les boucles qui s'enchaînent de cette manière ne peuvent pas t'apporter exactement ce que tu cherches .... c'est mon avis ... ah oui pas de code ce soir, j'ai un truc à finir d'abord ... :(
++@
(remarque l'optimisation de i++ qui est plus long que ++i à cause du renvoie -> assembleur mais je sais pas en fait en byte code faudrais que je décompile ...) 8-)
joshua91
Messages postés22Date d'inscriptionsamedi 31 mai 2003StatutMembreDernière intervention28 juin 2010 1 déc. 2003 à 23:17
Exacte, il s'agit du "jeu de la vie", pour le vecteur, je sais que c'est long, mais pour la gestion des "remove"... je trouve que c mieux qu'un tableau d'objet. mais je ne me suis jamais penché sur les autres structure de données.
donc mes boucles me font chier car je n'arrive pas à faire des "goto" du style "tant que random me donne des coordonnées qui existe déjà, refait random..."
djameldib
Messages postés10Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 février 2007 16 févr. 2007 à 00:14
Bonjours tt le monde;
voila je suis entrain de realiser un systeme expert d'aide a la prise de decision , je vais simuler une bataille (déplassement de troupe ...etc) tous ça sur une carte ,j'ai opter pour la methode agent ,croyez vous que c une bonne approche .
Pouvez vous m'orienter (avec des remarques ou des liens), j'ai surtout un probleme pour la construction des regles .
Merci d'avance