Création de coordonnées aléatoire et vérification

joshua91 Messages postés 22 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 28 juin 2010 - 1 déc. 2003 à 20:27
djameldib Messages postés 10 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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:

sain x=6 y=0
sain x=0 y=0
sain x=8 y=7
malade x=8 y=7
malade x=9 y=6

donc y'a un blem.... aider moi siouplé.

merci d'avance à ceux qui ont prit le temps de se plonger dans ce code tordu qui est le mien.

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
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-)
0
joshua91 Messages postés 22 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 28 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..."

Enfin, merci tout de meme pour ta réponse.

@+.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
1 déc. 2003 à 23:33
GodConan :clown)

Bon je voi pas tro ou tu veu en venir mais une hashtable me semble pas mal pour T besoins...

gl++
0
djameldib Messages postés 10 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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
0
Rejoignez-nous