Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » TDM 11 - RanInt# pour les nuls
Tituya Hors ligne Administrateur Points: 2141 Défis: 26 Message

TDM 11 - RanInt# pour les nuls

Posté le 04/09/2019 18:47

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 !
+ + + +

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 !


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 !




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 !



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 !




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



Kikoodx Hors ligne Ancien labélisateur Points: 3011 Défis: 11 Message

Citer : Posté le 04/09/2019 19:05 | #


Héhé l'autopromo @Tituya
Beau travail
ouais ouais
Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 04/09/2019 19:41 | #


Naaan, faut que je termine mon TDM
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 04/09/2019 20:37 | #


Poke @admin pour ajouter ce TDM à la liste (https://www.planet-casio.com/Fr/programmation/tutoriels.php?cat=1)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 04/09/2019 20:40 | #


Merci pour ce TDM, Tituya ! Et bienvenue chez les rédacteurs, hé hé

Dark storm a écrit :
Poke @admin pour ajouter ce TDM à la liste (https://www.planet-casio.com/Fr/programmation/tutoriels.php?cat=1)

Fait ! Ici : https://www.planet-casio.com/Fr/programmation/tutoriels.php?id=84
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tituya Hors ligne Administrateur Points: 2141 Défis: 26 Message

Citer : Posté le 04/09/2019 23:04 | #


Merci
Maintenant que c'est lancé, le but c'est de tenir le plus longtemps possible !

En espérant vous apprendre des nouveaux trucs de temps en temps !
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire le contraire)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !



LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 86 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd