Forums Développement Multimédia

Aller au contenu

- - - - -

tirage au sort sans répétition

CODE TUTO actionScript

4 réponses à ce sujet

#1 laurence

  • Guests

Posté 23 December 2014 - 17:06 PM

j'ai ce code :
bt_mc.tirerNoms=tirerNoms
bt_mc.addEventListener(MouseEvent.CLICK, bt_mc.tirerNoms);

function tirerNoms (evenement)
{
var noms= Math.floor(Math.random()*10+1)

if (noms == 1)
{
noms_txt.text= "Marie";
}
else
{
if (noms == 2)
{
noms_txt.text="Jean Baribeau";
}
else
{
if (noms == 3)
{
noms_txt.text="Ghislain";
}
else
{
if (noms == 4)
{
noms_txt.text="Julie";
}
else
{
if (noms == 5)
{
noms_txt.text="Ghislaine";
}
else
{
if (noms == 6)
{
noms_txt.text="Sophie";
}
else
{
if (noms == 7)
{
noms_txt.text="Michel White";
}
else
{
if (noms == 8)
{
noms_txt.text="Christian";
}
else
{
if (noms == 9)
{
noms_txt.text="Samie";
}
else
{
if (noms == 10)
{
noms_txt.text="Cath";
}
}
}
}
}
}
}
}
}
}


}

j'aimerais savoir s'il est possible de faire en sorte que le nombre tirer ne se répète pas par la suite?

merci

#2 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 23 December 2014 - 17:38 PM

bonjour,
je te conseille d'utiliser un tableau;
http://forums.mediab...alites/tableaux
@+

#3 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 23 December 2014 - 20:09 PM

si tu ma réponse te parle en chinois dis le?
no stress j'essayerais d’être plus clair
@+ gustave02

#4 Laurence

  • Guests

Posté 23 December 2014 - 21:57 PM

J'aimerais avoir plus de détail sur la façon dont cela pourrait s'écrire :)

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6956 messages

Posté 23 December 2014 - 22:25 PM

Salut,

Gustave02 a raison, les tableau sont la solution.

Ton code tient en deux lignes :

// crée un tableau contenant tous les noms
var tableau:Array = ["Marie","Jean Baribeau","Ghislain","Julie","Ghislaine","Sophie","Michel White","Christian","Samie","Cath"];

// affiche le nom correspondant à l'ID choisie
function tirerNoms(evenement) {
        noms_txt.text = tableau[Math.floor(Math.random()*10)];
}
 

1 - je crée un tableau contenant tous les noms
Les tableaux fonctionnent avec des index.
Chaque nom se trouve à un index dans le tableau.
Tous les tableaux commencent à l'index 0.

2 - Lorsqu'on clique sur le bouton
Affiche le nom correspondant à l'index du tableau choisi lors du clic.
Ici l'index est choisi aléatoirement.

A présent, ta demande...

Tu souhaite que lorsqu'on tire un élément aléatoirement il ne soit plus possible de le tirer ensuite.
Il suffit donc de retirer l'élément choisi :

// affiche le nom correspondant à l'ID choisie
function tirerNoms(evenement) {
        var index:int = Math.floor(Math.random()*10);
        noms_txt.text = tableau[index];
        tableau.splice(index,1);
}

Mais ça pose un problème, car tu fais ton tirage sur 10 éléments, or le nombre d'index de ton tableau va diminuer à chaque fois qu'on clique sur un bouton, pour palier à ce problème on va récupérer la longueur du tableau au moment où on clique sur le bouton.


// affiche le nom correspondant à l'ID choisie
function tirerNoms(evenement) {
        var longueur:int = tableau.length; // longueur du tableau
        var index:int = Math.floor(Math.random()*longueur); // index aléatoire
        noms_txt.text = tableau[index]; // nom a afficher
   tableau.splice(index,1); // suppression de l'index dans le tableau
}
 

Ce n'est qu'un début, il existe des fonction de tirage aléatoire dans un tableau, mais avant de les utiliser il vaut mieux comprendre ce que c'est qu'un tableau et comment l'utiliser. Je recommande d'aller voir la doc et les tutos dispo sur le Wiki pour plus d'infos.

Bon courage.




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP