Rechercher : dans
Par :

Math.random()

Dernière réponse le 22 nov 2008 à 21:35:01 nice_girle, le 22 nov 2008 à 13:52:11 
 Signaler ce message aux modérateurs

Bonjour,svp je suis entrain de developper une applet contenant un cerle dont le rayon change et qui se deplace, le probleme c est que le deplacement dx est aleatoire , donc j ai appliquer Math.random() comme suit :

int dx = (int)Math.random() *100;
int dy =(int)Math.random()*100;

mais je vois que le cerle ne se deplace pas dans toute l applet ,mais une fois j ai mis :

dx +=10 ;
dy+=10;

ca a marché ; svp aider moi a determiner le probleme avec cette methode Math.random ()

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Math.random() » dans :
Javascript - L'objet Math Voir Les particularités de l'objet Math L'objet Math est, comme vous l'imaginez, un objet qui a de nombreuses méthodes et propriétés permettant de manipuler des nombres et qui contient des fonctions mathématiques courantes. Quelque soit la méthode ou la...
[Virus] Méthode préliminaire de désinfection VoirComme il vaut mieux prévenir que guérir, une visite préalable sur la page http://sebsauvage.net/safehex.html vous permettra de savoir comment protéger efficacement votre PC. Introduction 1- Exécution de Random's System Information Tool 2-...
Télécharger Math Educator VoirL'apprentissage des enfants de bas âge n'est pas une mince à faire, surtout lorsqu'on doit aborder les maths. Math Educator est un outil simple et pratique pour l'apprentissage des maths chez les plus jeunes. Il permet d'apprendre l'addition, la...

1

mype, le 22 nov 2008 à 14:32:38

J'ai pas trop bien compris...
qu'est ce que tu veux dire par le cercle ne se deplace pas dans tout l'applet ?

Répondre à mype

2

nice_girle, le 22 nov 2008 à 14:34:57

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??

Répondre à nice_girle

3

mype, le 22 nov 2008 à 14:41:14

Non je comprends pas normalement un random sur les deplacement dx et dy devrait suffire

Répondre à mype

4

nice_girle, le 22 nov 2008 à 14:47:45

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.????

Répondre à nice_girle

5

nice_girle, le 22 nov 2008 à 15:12:29

Tjrs pas de reponse,vraiment c est urgent

Répondre à nice_girle

6

toto, le 22 nov 2008 à 15:27:37
  • +3

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)

Répondre à toto

7

nice_girle, le 22 nov 2008 à 15:43:32

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??

Répondre à nice_girle

8

toto, le 22 nov 2008 à 16:28:55

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);

Répondre à toto

9

nice_girle, le 22 nov 2008 à 17:39:11

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

Répondre à nice_girle

10

toto, le 22 nov 2008 à 18:53:36

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 !

Répondre à toto

11

nice_girle, le 22 nov 2008 à 20:50:16

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

Répondre à nice_girle

12

 toto, le 22 nov 2008 à 21:35:01

Je ne sais pas quel test tu fais pour vérifier si le bord est atteint, mais il ne faut pas oublier que c'est le bord du cercle qui touche le premier, pas le centre du cercle !

Répondre à toto
Collection CommentÇaMarche.net