il y a 5 ans
Notre premier jeu Gamebuino (classic). Un nombre est tiré au hasard, il faut le trouver.
Il nous reste à trouver comment initialiser proprement le générateur de nombres aléatoires, pour l'instant la graine est constante, ...
NEW il y a 5 ans
Jetez un oeil là-dessus ;-)
https://www.arduino.cc/reference/en/language/functions/random-numbers/randomseed/
NEW il y a 5 ans
Faites plutôt un truc du genre :
randomSeed(gb.frameCount);
... au moment où l'utilisateur interagit avec le programme (ce moment a de fortes chances d'être aléatoire) :-)
NEW il y a 5 ans
pour l'instant pas concluant, mais oui, 'cest une bonne idée
NEW il y a 5 ans
J'ai jeté un oeil au code... je pense que vous avez mal nommé les broches analogiques testées...
En effet, il ne faut pas faire :
randomSeed(analogRead(0));
... mais plutôt :
// il faut bien mettre le A // v randomSeed(analogRead(A0));
NEW il y a 5 ans
ne fonctionne pas mieux, le premier nombre "aléatoire" généré est 0, ...
Steph
il y a 5 ans
Essayez plusieurs broches... pas seulement A0
... il y a peut-être des composants reliés à certaines d'entre-elles ?... du coup, la valeur renvoyée risque d'être toujours la même...
NEW il y a 5 ans
Essayez plusieurs broches... pas seulement A0
... il y a peut-être des composants reliés à certaines d'entre-elles ?... du coup, la valeur renvoyée risque d'être toujours la même...
NEW il y a 5 ans
Ou mieux... pour secouer encore plus les dés :
randomSeed(micros() * analogRead(A1) * analogRead(A2));
... ou toute autre combinaison de ces paramètres ...
NEW il y a 5 ans
Sur la Gamebuino Classic je n'ai pas essayé. Je crois que sur la Meta on peut utiliser directement la fonction random(x, y) et le seed doit se faire dans le gb.begin() dans le void setup(), il me semble... (voir code de "Square Nose Color"). Et sur Arduboy, avant d'utiliser random (x, y), je fais randomSeed(millis()) juste après que le joueur ai appuyé sur un bouton pour lancer la partie, donc jamais pile au même moment (voir code de "Cutie E").
NEW il y a 5 ans
Hey, soru is seeing a lot of randomSeed()
stuff here, just wanted to point out that gb.begin();
already sets a random seed as random as possible ^^
EDIT: oh, the classic, it has gb.pickRandomSeed();
which you have to call yourself
NEW il y a 5 ans
I didn't even realize it was the Classic! Thank you Soru for these additional ideas!...... and I see that gb.pickRandomSeed()
is based on the same trick as my last suggestion:-)