|
Tutoriel rédigé le : 2019-09-04 20:38 par Tituya Catégorie : Tutoriels du Mercredi Calculatrice : Toutes
Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (5 commentaires) TDM 11 : RanInt# pour les nuls Le Tuto Du Mercredi [TDM] est une idée qui fut proposée par Ne0tux. Le principe est simple : nous écrivons et postons TOUS les Mercredis des tutoriels sur l'Utilisation de la calculatrice, le Transfert, les Graphismes, la Programmation, ou encore la Conception de jeu.
Aujourd'hui, nous attaquons sur un principe simple... L'aléatoire en BASIC avec le RanInt# !
Niveau ★ ☆ ☆ ☆ ☆
Tags : Basic Casio, Jeux
L'aléatoire dans un programme peut être très utile, surtout utilisé dans les jeux, il nous permet de créer des interactions différentes en fonction des cas, et ainsi d'augmenter considérablement la durée de vie d'un jeu !
Partie I : Présentation du RanInt#
Il existe plusieurs aléatoires qui peuvent vous être utiles en fonction de votre besoin. Mais dans la globalité, le RanInt# est celui le plus utilisé par les débutants, et il vous permettra de réaliser de grandes choses !
+ + + + ![](/images/keys/key_f2.jpg)
RanInt#(a,b)
La forme RanInt# nous permet de générer un nombre entier entre deux limites a et b inclues positif comme négatif.
Cependant, vous devez impérativement faire attention à ce que "a" doit être le plus petit nombre et "b" le plus grand, pas l'inverse. Sous peine d'erreur argument !
RanInt#(-10,99)
Où nous générons un nombre aléatoire entre -10 et 99 !
Nombre aléatoire oblige, à chaque fois que vous lancerez ce programme, vous aurez un nouveau nombre !
Ce qu'il faut savoir c'est que le RanInt# distribue de manière uniforme ses résultats. Dans cet exemple, vous avez donc autant de chances de tomber sur -5, que sur 43 ou bien 89.
RanInt#(99,0)
Dans cet exemple, nous aurons le droit à une belle "Erreur argument", car 99 est plus grand que 0.
Le RanInt# génère un nombre, vous pouvez donc l'intégrer dans une variable ou comme tout résultat de calcul, on peut l'afficher avec ◢, voire encore l'intégrer à une liste.
RanInt#(0,99)→A
À présent, nous avons dans la variable "A" le nombre aléatoire créé ! Si vous relancez le programme, vous aurez un tout nouveau nombre dans cette variable, là est toute la puissance et l'intérêt de l'aléatoire !
/!\ Attention : Vous ne devez pas mettre de nombres décimaux sous peine d'Erreur Syntaxe !
Le RanInt# peut être aussi utilisé pour créer des listes. Avec l'utilisation de cette forme :
RanInt#(a,b,c)→List 1
Où nous avons en "a" et "b" nos deux limites. Et en "c" nous avons le nombre de générations dans la liste. En guise d'exemple regardez :
RanInt#(0,99,3)→List 1
Je vais obtenir dans la liste 1, 3 nombres générés aléatoirement entre 0 et 99.
(Bon, ça commence à être long là... Tituya montre nous des exemples concrets !)
Partie II : Utilisation
Voilà qu'à présent, vous savez tout sur cette fonction bien utile. Et vous avez surement des idées de programmes qui vous traversent l'esprit. Mais laissez-moi-vous présentez quelques utilisations concrètes et très simple !
Vous souhaitez infliger des dégâts à un ennemi, mais avec un peu de changement pour plus de divertissements ?
//A est le nombre de points de vie de votre ennemi
100→A
A-RanInt#(15,20)→A
Comme vous vous en doutez, ce programme enlève des points de vies répartis équitablement entre 15 et 20.
Vous n'aimez pas trop la violence et préférez un système de points bonus ? Pas de souci !
//A est votre score initial et B est votre indicateur de bonne réponse.
0→A
0→B
If B=1
//Le joueur a bien répondu, on lui donne 10 points
Then A+10→A
//Le joueur à une chance sur 15 d'avoir des points bonus entre 1 et 6.
RanInt#(1,15)=15⇒A+RanInt#(1,6)→A
Else "Mauvaise réponse"
IfEnd
Ici, même principe qu'au-dessus, vous donnez des points supplémentaires à votre joueur s'il a de la chance.
Vous voulez choisir aléatoirement parmi des actions ?
If RanInt#(0,1)=0
Then Locate 1,1,"Planete"
Else Locate 1,1,"Casio"
IfEnd
Dans ce code, l'utilisateur à 1 chance sur 2 d'afficher "Planete" ou "Casio". Rien ne vous empêche d'augmenter cette probabilité comme dans cet exemple :
If RanInt#(0,10)=0
Then Locate 1,1,"Planete"
Else Locate 1,1,"Casio"
IfEnd
Ici, l'utilisateur a donc 1 chance sur 11 d'afficher "Planete". Et il a donc 10 chances sur 11 d'afficher "Casio" !
Mais, pourquoi 11 chances et pas 10 ?
C'est très simple, la fonction RanInt# intègre ses deux limites ! donc ici, nous avons les nombres : 0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Soit un total de 11 chances !
Vous êtes peut-être sadique et vous laissez une chance aléatoire au joueur de mourir sur-le-champ !
RanInt#(1,50)=50⇒Exit
//Dans ce code, vous avez une chance sur 50 d’arrêter le programme
Vous avez sûrement remarqué la présence d'une "⇒". Cette double flèche peut remplacer les instructions "If, Then, IfEnd". Elle signifie donc : "si l'action précédente est validée, alors je fais ... "
Vous pouvez aussi placer un texte à un endroit aléatoire !
RanInt#(1,21)→A
RanInt#(1,7)→B
Locate A,B,"Texte"
Ou bien même refaire le fonctionnement d'un dé ?
//A est votre dé
//B est le coup précédent
RanInt#(1,6)→A
//si les deux sont égaux alors c'est un double
B=A⇒Locate 1,3,"Double !"
Locate 1,2,"Précédent :"
//On affiche la valeur précédente
Locate 13,2,B
//On attribue au coup précédent la valeur actuelle
A→B
Locate 1,1,"Vous avez tiré :"
//On affiche la valeur actuelle
Locate 18,1,A
Ce code simule le lancer d'un dé et vous affiche le coup précédent et si vous avez fait un double. Vous pouvez aussi simuler plusieurs dés de cette façon :
//A est votre dé 1
//B est le dé 2
RanInt#(1,6)→A
RanInt#(1,6)→B
Locate 1,1,"Dé 1:"
Locate 1,2,"Dé 2:"
//On affiche les valeurs actuelles
Locate 6,1,A
Locate 6,2,B
//si les deux sont égaux alors c'est un double
B=A⇒Locate 1,3,"Double !"
Avec les nombres aléatoires, vous pouvez imaginer des jeux qui se comportent différemment à chaques parties ; par exemple en générant des maps différentes avec des ennemis variés, ou en faisant réussir ou échouer des actions de façon imprévisible mais contrôlées !
Partie III : Exemple de programme mettant en pratique cette fonction
Je vous ai donné plein d'idées, et vous avez envie de voir ce que ça donne sur un programme fini ? Voilà pour vous une compilation de 4 jeux utilisant ce principe d'aléatoire !
![](/files/program_images/2959-demineur.gif)
Démineur de Draft87
Dans ce jeu très connu, vous devez jouer au démineur, seul problème, les mines sont toutes générées aléatoirement sur la carte, sinon ça serait trop simple !
![](/files/program_images/2751-simulation_d%C3%A9s.gif)
Simulation dés de Ti.du.du39
Dans cet utilitaire, le principe est simple, simuler le lancer de dés, vous pouvez sélectionner les spécificités de chaque dé, puis lancez-les ! Vous aurez des résultats aléatoires, comme un vrai dé, mais en mieux !
![](/files/program_images/1954-plusoumoins.jpg)
Plusoumoins de Tsuneo
Ce jeu très connu et très répandu sur le site est l'un des plus simples à créer (essayer pour voir ! Je suis sûr que vous pouvez le faire). La calculatrice choisit un nombre aléatoire entre deux limites et c'est à vous de le retrouver ! Essayer de faire le minimum de coups !
![](/files/program_images/3775-MultipliCasio.gif)
MultipliCasio de Tituya
Ce jeu est plutôt complexe dans sa réalisation, mais dépend énormément de l'aléatoire. En effet, votre but est de réaliser le plus rapidement possible les multiplications générées aléatoirement ! Avec un chronomètre d'intégré, vous avez un certain nombre de points aléatoire en fonction de votre vitesse ! Le but ? Faire un maximum de points !
Comment ça je fais de la promo pour mon jeu ? C'est juste un exemple de plus
Je vous conseille évidemment de tester chacun des jeux et d'y laisser un petit test en fonction de vos ressentis !
C'est tout pour cette fois ! À présent vous pouvez vous la raconter auprès de vos amis en leur montrant les programmes ingénieux que vous allez créer ! N'hésitez pas à nous demander d'autres tutoriel sur des fonctions que vous ne comprenez pas vraiment !
Portez-vous bien !
Liens utiles :
La référence du RanInt#()
TDM précédent : Promouvoir son jeu ! (Partie 1)
Voir l'ensemble des TDM Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (5 commentaires)
|
|