Après deux jours passés sur Bruxelles, retour à la réalité… Ma ville de coeur me manque déjà et il paraît que pour pouvoir préserver sa bulle il faut faire ce que l’on aime. Comme ce que j’aime est parfois (et même souvent) géré par le hasard, restons dans le thème.

Le hasard fait souvent bien les choses et nombre d’artistes contemporains l’utilisent. Mozart d’ailleurs aurait tiré au sort l’organisation de certaines de ses compositions et son éditeur a publié après sa mort en 1792 le « jeu de dés » qui lui est attribué. Invention ou réalité ? Je ne saurais le dire mais la démarche est intéressante.

Bref, il est bon de mettre un peu d’aléatoire dans notre code. En un seul mot, s’il vous plaît. Car il est tout à fait possible d’aller à Thouars mais ceci nous mènerait en région Nouvelle Aquitaine et donc un peu loin de notre sujet.

Scratch propose comme la plupart des langages de programmation une fonction permettant de produire des nombres de manière aléatoire.

Screenshot_2020-02-04 Scratch - Untitled-23

Il suffit de modifier les bornes minimum et maximum pour obtenir d’autres chiffres, par exemple des nombres négatifs.

Screenshot_2020-02-04Scratch - Untitled-23

Ceux-ci peuvent être placés dans une variable que l’on crée dans la section « données ».

random_x

Par défaut, la fonction génère des nombres entiers. Pour obtenir des nombres flottants, c’est-à-dire à virgule, il suffit de le préciser.

float_x

Le hic est que ce chiffre est un peu trop complexe mais il apparaît à l’affichage arrondi à un ou deux chiffres après la virgule en fonction des cas. Nous verrons plus tard comment l’arrondir autrement.

float_cat

Tout cela est bien beau mais à quoi cela me sert-il d’utiliser du hasard dans mon code ? Primo, à donner une position aléatoire à l’écran à un sprite, ce qui peut être très important dans le cas d’un jeu vidéo.

Mais il existe déjà une fonction pour cela !

random_position

Je ne le nie pas (la preuve en images) mais celle-ci est véritablement totalement carrément et positivement aléatoire. Utiliser la fonction de génération de nombres aléatoires permet de définir un périmètre ou une position semi-aléatoire en définissant X ou Y de manière stable.

Par exemple, le script ci-dessous me permet d’envoyer un sprite à une position aléatoire mais sans qu’il risque de toucher le bord de l’écran.

semi_random_x_y

En général, je préfère créer deux variables et écrire mon script de la manière ci-dessous. Cela me paraît plus lisible et me permet aussi de conserver les deux valeurs dans des variables pour une réutilisation ultérieure. Dans certains cas, cela peut avoir son importance.

semi_random_x_y_2

Un autre exemple intéressant est l’utilisation de costumes / arrière-plans / musiques / sons aléatoires. Pour cela, il faut cependant auparavant donner à nos éléments le même nom mais avec un chiffre différent, par exemple : musique1, musique2, musique3, musique4… ; décor_1, décor_2, décor_3… ; costume1, costume2, costume3… La magie de la concaténation, c’est-à-dire de la fonction permettant de réunir deux chaînes de caractères ensemble, fera le reste. Ainsi :

Screenshot_2020-02-11 Scratch - Untitled-25

Screenshot_2020-02-11 Scratch - Untitled-25(1)

Il est aussi possible d’utiliser le hasard pour récupérer un élément d’une liste. Par exemple :

randomListe

Il faut cependant faire attention à bien conserver le nombre aléatoire dans une variable si on doit le réutiliser, par exemple lorsque l’on récupère un élément et qu’on l’efface ensuite. Nous en reparlerons pour générer des cadavres exquis.

Il est enfin possible de générer des valeurs aléatoires en utilisant le capteur de volume et le capteur vidéo mais cela demande des calculs un peu plus complexes et ce sera l’objet d’un autre post. Il est temps pour l’instant de se fier au hasard pour décider au hasard de ce que vous ferez avec ces nombres aléatoires. Hasardeux, n’est-ce pas ???

 

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s