Switch to full style
Understanding the language, error messages, etc.
Post a reply

[FR] Random [?]

Fri Dec 30, 2016 9:18 pm

hello,

Apres quelques années a jouer avec des arduino en tout genre je debute avec la gamebuino, je rencontre un petit probleme avec Random.

ma function RandXY est sensée fournir des coordonnées aleatoire, hors je pex l'appeler 50 fois de suite et j'obtien tooujours les memes nombre (49 & 25) ce qui n'est pas tres pratique car l'arrivée se trouve toujours au meme coordonnées :(

je suis preneur de toute idees me permettant de resoudre ce petit probleme

[code]

void Win(){
gb.display.clear();
gb.display.cursorX = 25;
gb.display.cursorY = 0;
gb.display.println("Win :o)");
gb.display.drawCircle(WinXRand, WinYRand, 6);
gb.display.drawCircle(WinXRand, WinYRand, 8);
RandXY();
Decor();
}

void RandXY() {
byte WinXRand = random(6,72);
byte WinYRand = random(6,36);
}


@+

Tophux

Re: [FR] Random [?]

Sun Jan 01, 2017 12:20 pm

Bonjour,
La fonction random() retourne à chaque fois un nombre d'une série "pseudo" aléatoire (pseudo random numbers). La série va dépendre du nombre initial, qui est défini avec la fonction randomSeed(). Si tu utilise toujours la même random seed, tu tireras toujours la même série de nombre ensuite. C'est pourquoi on défini la random seed une seule fois en début de programme, avec des nombres "aléatoires" pour qu'elle soit différente à chaque fois (lumières ambiantes, timers, niveau de batterie, entrées analogiques...). Il y a d'ailleurs une fonction Gamebuino qui s'occupe de faire un mélange de données arbitraires pour donner la random seeed: gb.pickRandomSeed()

Ce que je suspecte dans ton cas c'est que tu appelle randomSeed dans le déroulement de ton programme et pas seulement une fois au début, du coup la suite de nombre repart toujours de la même seed.

Re: [FR] Random [?]

Sun Jan 01, 2017 12:23 pm

Salut,

la partie de ton code faux :
Code:

void RandXY() {
byte WinXRand = random(6,72); //ici tes variables sont déclarer localement a la fonction. elle ne sont donc pas visible de l'exterieur
byte WinYRand = random(6,36);
}





Code:

//les variables déclarer en dehors seront globales
byte WinXRand = 0;
byte WinYRand = 0;

void Win(){
gb.display.clear();
gb.display.cursorX = 25;
gb.display.cursorY = 0;
gb.display.println("Win :o)");
gb.display.drawCircle(WinXRand, WinYRand, 6);
gb.display.drawCircle(WinXRand, WinYRand, 8);
RandXY();
Decor();
}

void RandXY() {
   WinXRand = random(6,72);
   WinYRand = random(6,36);
}



j'ai pas tester mon code il peux y avoir une erreur de frappe quelque part ;)

J'espere avoir aider :)

a+

Re: [FR] Random [?]

Tue Jan 03, 2017 8:43 pm

Salut,

Merci pour les reponses, j'ai peu corriger avec vos deux explications en effet je n'utilise pas randomseed et les variables ete pas correctement declarées

@+

Tophux
Post a reply