Math.random()
Résolu/Fermé
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
-
22 nov. 2008 à 13:52
toto - 22 nov. 2008 à 21:35
toto - 22 nov. 2008 à 21:35
8 réponses
Bonjour
int dx = (int)Math.random() *100;
Je ne sais pas en quoi tu programmes (java ?) mais à mon avis...
Math.random() te donne un nombre entre 0 inclus et 1 exclus
donc (int)Math.random() vaut TOUJOURS 0 et (int)Math.random()*100 aussi
Essaye plutôt (int)(Math.random()*100)
int dx = (int)Math.random() *100;
Je ne sais pas en quoi tu programmes (java ?) mais à mon avis...
Math.random() te donne un nombre entre 0 inclus et 1 exclus
donc (int)Math.random() vaut TOUJOURS 0 et (int)Math.random()*100 aussi
Essaye plutôt (int)(Math.random()*100)
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
22 nov. 2008 à 14:32
22 nov. 2008 à 14:32
j'ai pas trop bien compris...
qu'est ce que tu veux dire par le cercle ne se deplace pas dans tout l'applet ?
qu'est ce que tu veux dire par le cercle ne se deplace pas dans tout l'applet ?
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 14:34
22 nov. 2008 à 14:34
je veux dire qu il ne couvre pas toute mon applet , je veux creer une animation dans mon applet , par un cerle qui se deplace aleatoirement, vous avez une solution??
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
22 nov. 2008 à 14:41
22 nov. 2008 à 14:41
non je comprends pas normalement un random sur les deplacement dx et dy devrait suffire
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 14:47
22 nov. 2008 à 14:47
wi ca j ai essayé , mais ca n a pas marché , car pour gerer cette animation jai creer 2 cerle , et a l aide d un thread jé pu effectuer le deplacement ,mais avec la methode Math.random() le deplacement s est fait juste au niveau du cerle origine et l autre ,mais une fois j ai changé la valeur de dx et dy par d autre valeur la j ai pu visualiser le deplacement celon l incrementation.????
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
>
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 15:12
22 nov. 2008 à 15:12
tjrs pas de reponse,vraiment c est urgent
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 15:43
22 nov. 2008 à 15:43
merci bien toto ,oui je developpe en java, en fait ca a marché , merci infiniment , en fait j ai une autre question , svp ,j ai delimité la taille de mon applet , par Xmax et Ymax ( absciss et ordonné ) et je veux qu une fois le cerle depasse le Xmax ou le Ymax , qu il commence a reculer en arriére tout en reduisant son rayon ,vous avez une idée svp??
Pour rebondir sur les bords, il faut que tu prévoies des variables sensX et sensY qui prendront la valeur +1 ou -1. Disons +1 au départ. Pour les déplacements, tu fais X=x+senxX*dx ( si ça s'écrit comme ça en java). Quand tu atteinds le X max, tu fais sensX=-1 (et ce que tu veux au rayon) comme ça ton cercle repartira dans l'autre sens.
Attention à ta formule pour le calcul de dx, avec un peu de (mal)chance, ton cercle ne bougera pas. Utilise plutôt une formule qui ne peut pas tomber à 0, genre 50+(int)(Math.random() *50);
Attention à ta formule pour le calcul de dx, avec un peu de (mal)chance, ton cercle ne bougera pas. Utilise plutôt une formule qui ne peut pas tomber à 0, genre 50+(int)(Math.random() *50);
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 17:39
22 nov. 2008 à 17:39
stp toto ,dslée mais vraiment j ai essayé de faire ce que vous m avez dis mais j ai pas comprie ;vous dites je declare une variable int sensX = +1 ; int sensY =-1 ;
puis int X=x+senX*dx ( x c est l abciss du cerle d origine cé ca ??) et int Y=y+senY*dy
avec dx = (int)Math.random()*50; dy = (int)Math.random()*50; ??? la suite j ai pas pu la comprendre ,si vous pouvez m expliquer svp , merci d avance
puis int X=x+senX*dx ( x c est l abciss du cerle d origine cé ca ??) et int Y=y+senY*dy
avec dx = (int)Math.random()*50; dy = (int)Math.random()*50; ??? la suite j ai pas pu la comprendre ,si vous pouvez m expliquer svp , merci d avance
Je ne peux pas te donner de programme en java, je ne le connais pas.
Tu cherches à faire rebondir un cercle sur le bord d'un rectangle. Tu as déjà créé des variables dx et dy qui, je suppose, représentent le déplacement du centre de ton cercle à chause étape du mouvement. Tout ce que j'ai essayé de te dire, c'est que quand tu détectes que tu arrives sur un bord, il faut que tu changes le signe de dx ou celui de dy, selon que tu heurtes n bord vertical ou horizontal.
Un des moyens, c'est de mémoriser le sens de déplacement dans une variable sensX qui va valeir 1 quand tu vas de droite à gauche et -1 quand tu vas de gauche à droite. Avec un dx positif, tu as juste à faire un mouvement de sensX * dx à chaque étape.
Quant au 50+(int)(Math.random() *50) , c'est juste pour éviter d'avoir un cercle qui ne bouge pas. Avec ta formule, tu pouvais avoir dx=0, et là, ton cercle ne se déplacerait que de haut en bas. Et avec beaucoup de malchance, il ne bougerait même pas du tout, si dy tombe aussi sur 0 !
Tu cherches à faire rebondir un cercle sur le bord d'un rectangle. Tu as déjà créé des variables dx et dy qui, je suppose, représentent le déplacement du centre de ton cercle à chause étape du mouvement. Tout ce que j'ai essayé de te dire, c'est que quand tu détectes que tu arrives sur un bord, il faut que tu changes le signe de dx ou celui de dy, selon que tu heurtes n bord vertical ou horizontal.
Un des moyens, c'est de mémoriser le sens de déplacement dans une variable sensX qui va valeir 1 quand tu vas de droite à gauche et -1 quand tu vas de gauche à droite. Avec un dx positif, tu as juste à faire un mouvement de sensX * dx à chaque étape.
Quant au 50+(int)(Math.random() *50) , c'est juste pour éviter d'avoir un cercle qui ne bouge pas. Avec ta formule, tu pouvais avoir dx=0, et là, ton cercle ne se déplacerait que de haut en bas. Et avec beaucoup de malchance, il ne bougerait même pas du tout, si dy tombe aussi sur 0 !
nice_girle
Messages postés
40
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
25 février 2010
22 nov. 2008 à 20:50
22 nov. 2008 à 20:50
merci bien pour votre effort toto , et dslée si je vous ai derangé , en fait j ai suivi votre demarche mais j avais toujours un probleme, le cerle transgresse les bornes et revient a l interieur , merci infiniment. j espere que j aurais une reponse car vraiment j en ai besoin