Math.random() qui fournit un nombre réel
entre 0 et 0,999... Si on dispose de N objets, on multiplie par N et
on arrondit à l'entier inférieur par la fonction
Math.floor() . Par exemple, la variable
var index= Math.floor(Math.random() * 58);fournira un entier aléatoire entre 0 et 57.
A noter qu'il n'est pas très clair si la borne supérieure
1 peut être atteinte ou non. La probabilité pour que cela
arrive est quasi-nulle, mais il sera sage de mettre un test du genre
if (index==58) index=57; pour écarter
tout ennui.
Math.round(x) renvoie l'entier le plus proche de x
ou l'entier supérieur si x est
pile à mi-chemin entre deux entiers. Mais nous nous servirons
que de Math.floor() dans ce qui suit.
mus_0.mid, mus_1.mid,... mus_57.mid. Le nom du fichier
tiré serait alors reconstitué par
var musique="mus_"+index+".mid";
var musique = new Array("fanfare.mid","summertime.mid",...)
Javascript pourra alors directement lire le nombre d'éléments
du tableau et faire le tirage au sort en conséquence :
var index= Math.floor(Math.random() * musique.length);Le nom de fichier choisi sera cette fois l'élément
musique[index] .
<SCRIPT language="Javascript">
var musique = new Array("fanfare.mid","summertime.mid",...)
var index = Math.floor(Math.random() * musique.length);
if (index == musique.length) index=index-1;
document.write("<EMBED SRC=' "+musique[index]+
" ' autres attributs' >")
</SCRIPT>
où les « autres attributs » sont ceux du
EMBED : instructions pour la console, le démarrage,
le bouclage, etc... On fera également attention au
répertoire des musiques et on modifiera éventuellement le
script en conséquence.
On peut jouer de la même manière avec les images, et obtenir
une image aléatoire lors du chargement de la page (il suffit que le
document.write() soit utilisé pour reconstituer une
instruction <IMG> ). Mais on peut aussi intervenir
sur une page déjà affichée et opérer des
changements aléatoires d'images sur des évènements
"MouseOver" ou "Click", en réutilisant les
techniques étudiées pour les rollovers.
<A HREF="javascript:tirage()">cliquez ici</A>où la fonction
tirage() peut être définie
par un script semblable aux précédents, mais se terminant par
une instruction de changement de page, comme (dans le cas de 25 pages
nommées page_0.html, page_2.html,... page_24.html :
<SCRIPT language="Javascript">
function tirage() {
var index= Math.floor(Math.random() * 24.999999);
var page="page_"+index+".html";
self.location.href=page }
</SCRIPT>
(le 24.99999 est là pour faire l'économie du test sur
index==25)
On peut aussi faire divers jeux de texte. Par exemple, en combinant ces techniques au contrôle de la barre d'état que nous avons vue par ailleurs, on peut faire apparaître des messages aléatoires dans cette barre. Passez la souris ici pour voir (sans cliquer; il y a 6 messages possibles)
Charles