Aller au contenu

Mini cas d’étude : La fonction Choose() de Construct 2

Oyez Oyez les amis Constucteurs, aujourd’hui nous allons réfléchir ensemble un petit peu à la fonction Choose() de Construct 2.

Ceci est un cas d’étude, cela veut dire quoi ? Cela veut dire que le but ici n’est pas de vous apprendre cette fonction, mais d’essayer de savoir comment ferait on si elle n’existait pas. En effet, cette fonction est disponible dans Construct 2, mais aussi dans GameMaker Studio, mais dans certains softs de conception, voir dans un langage tout court, il est probable que l’instruction n’existe pas.

La programmation (qu’elle soit pure, ou événementielle comme dans Construct 2), c’est avant tout la réflexion de se dire « Comment je peux faire pour arriver à ce résultat ». Et même si des jeux d’instructions nous permettent de ne pas se poser cette question, je pense qu’il est intéressant de savoir comment on pourrait faire si cette instruction n’existait pas.

Evidemment il n’existe pas de solution unique,  il y a plusieurs manières de faire. Dans ce cas d’étude, je vous en propose une, simple mais avant c’est quoi cette instruction ?

Choose me !

Choose() permet de demander au moteur de choisir un paramètre parmi une liste définie. Ainsi cette instruction : Choose(10, 20, 30, 40) va demander au moteur de choisir une valeur parmi ces 4.

Cette instruction est très pratique, car elle permet vraiment de définir une liste de valeur qu’on veut et d’en prendre une au hasard. Ce qui nous évite d’attaquer le moteur à coup de Random() à gogo.

Et hop confisquée l’instruction !

Imaginons une seconde (oui parce que bon ouf ! ce n’est pas le cas), que cette instruction disparaisse ? Comment on pourrait faire simplement ? Car je vous vois direct penser, ça y est on va nous embarquer dans des calculs Fredo-scientifique ingolables.

Et bien pas du tout ! Parfois les solutions sont tellement simples qu’on y pense même pas.

Un tableau de maître !

La réponse à la question précédente se trouve dans le titre 🙂 Effectivement, avec un tableau il est tout à fait possible de reproduire le comportement de l’instruction Choose().

Reprenons notre exemple de tout à l’heure, nous voulons que le moteur choisisse au hasard un chiffre parmi : 10, 20, 30, 40 ce qui nous donne, 4 valeurs. Nous allons donc créer un tableau (Array) à une seule dimension, comprenant 4 cases.

En début de programme (ou de Layout pour les inconditionnels), on remplit chaque case avec la valeur adéquate. Dans notre exemple cela donne (on admet un tableau en base 1) :

Case 1 : 10
Case 2 : 20
Case 3 : 30
Case 4 : 40

Simple n’est il pas ? Il ne nous reste plus qu’au moment où on a besoin d’une de ces valeurs de faire appel à l’instruction Random() ! pour choisir une case du tableau et récupérer sa valeur. Autrement dit faire : Random(1, 4) (ou Random(0, 3) dans le cas d’un tableau en base 0).

Le moteur va choisir un chiffre entre 1 et 4 admettons 3, et là il suffira de demander au programme de lire la valeur du tableau à la case 3 et voilà vous avez votre chiffre !

Bien sur tout cela se fait à la vitesse de la lumière ^^ Et il est tout à fait possible d’étendre cette idée avec plusieurs jeux de valeurs, il suffira soit de redimensionner le tableau, soit si ce n’est pas possible de prendre la plus haute (de votre cas), et de tester si la case contient ou non une valeur auquel cas on recommence l’opération.

Conclusion

Bien entendu j’en vois d’ici dire. On s’en fout ! On a l’instruction Choose() ! Oui mais c’est pour cela que cet article s’appelle « cas d’étude » ^^ le but n’est pas ici de vous faire un tutoriel sur comment utiliser l’instruction « Choose » mais plutôt une réflexion sur « comment on pourrait faire sans ? » Il est toujours intéressant d’avoir une idée, car ne vous y méprenez un jour peut être, vous rechercherez cette instruction en vain, et là vous vous souviendrez du tonton Crystal et vous direz « ha oui je sais comment je vais me débrouiller ! » CQFD ! A bientôt les amis !