J'essaie de coder le jeu Minesweeper et que j'ai besoin de randomiser les emplacements des bombes.
Peut-on aider à modifier un peu la fonction afin que la placement de bombes soit randomisée? P>
Le Code: p>
3 Réponses :
Supposons que le nombre de bombes que vous avez besoin est 5. Aussi, permettez également à initialement Notez que les chiffres générés par carte code> contenant la valeur par défaut de 1 pour toutes les cellules, et 9 uniquement s'il y a une bombe présente dans la cellule. Ensuite, vous pouvez faire quelque chose comme:
rand code> ne sont pas vraiment aléatoires et dépendent de la graine initiale. La graine est fournie par
srand code>. Utilisation de
Time Code> pour la graine est une bonne option pour aléater. P> p>
srand (heure (0)); code> pour chaque i> b> appelle à la fonction?!?!?!?!?
Étant donné que la fonction est appelée une fois pour peupler les bombes, je pense que cela devrait être bon d'aller. : /
Ne pas utiliser le module pour obtenir un nombre pseudo-aléatoire, car avec quelques essais, nous pouvons facilement comprendre ce qui va être le prochain numéro. Il y a plusieurs façons de randomiser dans un bon sens, c'est une façon, c'est mieux que l'utilisation du module:
(Si vous avez des intérêts, il existe des moyens plus complexes de générer des nombres aléatoires) rand_max est une valeur constante définie dans stdlib.h, à peine, il est une énorme constante entier, c'est-à-dire un Big Integer Number. P> Donc, dans votre programme, il vous suffit d'appeler: P> int x = random_num(0, size); /*Gets a new random number in the desired range*/
J'ai écrit une pince à base de NCurses il y a longtemps (vers 1993). C'est OpenSource et c'est maintenant à GitHub, si vous voulez des conseils sur la manière de la mettre en oeuvre, vous avez un code source complet Il . Vous êtes libre de télécharger, clone, et même de me montrer de meilleures façons de mettre en œuvre quelque chose si vous en obtenez. P>
Mon approche consistait à utiliser une matrice pour les cellules de terrain et à stocker sur eux le nombre de bombes voisines, tandis qu'un bit stocké la présence d'une bombe. J'ai bien craint qu'il ait été écrit il y a si longtemps que je n'ai pas eu le temps de traduire tous les commentaires et identificateurs en anglais ... mais c'est probablement un bon moment pour le faire .... pensons-y. p>
Rand ()% Taille Code> Vous donne un numéro "aléatoire" dans la plage
0 code> jusqu'à
Taille-1 code> inclusif.
@mch Pas vraiment, au moins si vous utilisez les valeurs générées pour quelque chose d'important. Si
rand_max code> n'est pas divisible par
Taille code> Il y aura une fausseté vers les valeurs inférieures. Et plus important encore, de nombreux PRN ont un caractère aléatoire très faible dans les bits d'ordre faible. Voir Les entiers aléatoires en C, quelle est la mauvaise rand ()% N comparé à l'arithmétique entier? Quels sont ses défauts? B>