0
votes

Aléatoire.Range choisissant deux nombres, si pareil, choisissez un nouveau

Je choisis et je dépose des sprites sur l'autre et je le fais en les ramassant au hasard à partir d'un tableau. Pour donner l'illusion d'eux ne réapparaissant pas, il est essentiel qu'ils ne soient pas les mêmes.

Comment puis-je y arriver, avec Ajout de mon tableau et que vous mettez mon index hors des limites de la matrice? ` xxx


2 commentaires

tandis que (Bloodsprite == Bloodsprite2) {Bloodsprite2 = aléatoire.Range (0, 12); } peut fonctionner pour vous. Vous pouvez finir par choisir plus d'une fois mais cela ne devrait pas être un problème.


Grand merci! Lorsque vous dites: "Vous pouvez finir par choisir plus d'une fois", voulez-vous dire que le script fonctionnera à nouveau pour essayer d'obtenir un nouveau numéro?


3 Réponses :


0
votes

Ça devrait fonctionner pour vous.

while(bloodSprite == bloodSprite2)
{
   bloodSprite2 = Random.Range(0, 12);
}


0 commentaires

1
votes

do .. tandis que sera utile ici sur xxx


INT.MINVALUE : Il est constant représente la plus petite valeur possible d'un entier .

Dans une solution ci-dessus, nous avons défini la plus petite valeur possible de INT vers Bloodsprit, ce qui la mettra à la mettre à jour dans le côté do..while () boucle

< em> pourquoi nous avons utilisé . () boucle?

  • La boucle de [en boucle exécute d'abord le code et vérifiez la condition à la fin de la boucle. Cela nous permet d'exécuter du code à l'intérieur do..while boucle au moins une fois.

    diagramme de graphique:

    Entrez la description de l'image ici


7 commentaires

À votre santé! Je suis très nouveau, pourriez-vous clarifier ce que l'INT.MValue est / fait? Appréciez l'aide.


Hey @jonasbrocklehurst, j'ai mis à jour ma réponse. J'espère que ce sera utile pour vous


Merci beaucoup! très bonne réponse! J'ai toutefois une question de suivi, si je peux. Pourquoi assigner ma bloodsprite int, à in.minvalue? Pourquoi n'attendez pas simplement que vous demandez mon int, et en l'affectant avec Random.Range? Et dernière chose, Sry, est ma compréhension de Int.Minvalue le numéro Int le plus bas que c # peut comprendre?


@Jonasbrocklehurst, c'est ma compréhension de Int.Minvalue le numéro Int le plus bas que c # peut comprendre? Réponse -> Ouais c'est correct.


@Jonasbrocklehurst, pourquoi assigner mon Historyprite Int, à Int.Minvalue? Pourquoi n'attendez pas simplement que vous demandez mon int, et en l'affectant avec Random.Range? Réponse -> à cause de Portée . Si vous initialisez votre INT INTS INTERS INTER DO. La portée de ces variable sera uniquement à l'intérieur des supports bouclés. Il sera inaccessible à la condition présente dans pendant . C'est pourquoi nous devons créer Bloodsprite Variables en dehors de Do..while boucle


@Jonasbrocklehurst, ce serait génial si vous essayez de sortir en utilisant DO, tandis que la boucle avec l'initialisation de int (s) INTER DO.. / code> boucle. Laissez-moi savoir quelle erreur vous obtenez


Merci!! J'ai essayé de supprimer l'Int.Minvalue .. et je n'obtiens pas de messages d'erreur, mais je ne suis pas sûr que c'est ce que vous recherchez: Int Bloodsprite; Int Bloodsprite2; do {// Valeur de Sprite aléatoire Bloodsprite = aléatoire.Range (0, 12); Bloodsprite2 = aléatoire.Range (0, 12); // À la fin, vérifiez l'état de votre temps. } tandis que (Bloodsprite == Bloodsprite2); C'est plus l'in.minvalue, que je suis curieux?



1
votes

Obtenir d'abord aléatoire de 0 à 12 dises x, puis faites-vous aléater de 0 à x - 1 ou de x + 1 à 12. u peut choisir n'importe lequel.

int s1 = Random.Range(0, 12);
int s2 = s1 == 0 ? Random.Range(s1, 12) : Random.Range(0, s1);


0 commentaires