Oniromancie: Tutoriels - Les conditions en Ruby


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (32 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

88 connectés actuellement

9262708 visiteurs
depuis l'ouverture

881 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

RPG Master Making

Puissance RPG Maker

Kingdom Ultimate

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Les conditions en Ruby
Ecrit par Denzel Lockheart$

Dans ce tuto, je vous présenterai comment fonctionne les conditions en Ruby. Pour commencer, je tiens à vous présenter les
principaux branchements conditionnels. Plus tard, je vous montrerai les autres types de conditions possibles en Ruby.


I) Les branchements conditionnels et les conditions simples


1) if-then

C'est le branchement conditionnel le plus simple à connaître lorsqu'un seul cas est traîté.


Portion de code:



if 
  then 
end	



2) if-then-else

Celui-ci permet de traiter deux cas opposés, tout simplement.


Portion de code:



if 
  then 
else
  	
end



3) if-then-else

Ce branchement permet non seulement de traiter les deux cas opposés, mais également autant d'autres cas que possible.


Portion de code:



if 
  then 
elsif 
  	
else
  	
end



4) Avec un exemple concret


Voici un exemple concret concernant ces trois types de branchement. On va imaginer que l'on veuille acheter un article à 25 €
dans un magasin et que tout dépend de l'argent possédé dans le porte-monnaie.

On va tout d'abord se baser sur le fait que l'on puisse acheter l'article.


Portion de code:



if argent>=25
	then puts "Vous avez eu pour 25 € d'achat."
end


Maintenant, on imagine que l'on puisse ne pas avoir la somme d'argent souhaitée.


Portion de code:



if argent>=25
	then puts "Vous avez eu pour 25 € d'achat."
else
	puts "Vous n'avez pas assez !"	
end 


Et enfin, on vérifie que l'on puisse avoir une somme d'argent réaliste, c'est-à-dire non négative.


Portion de code:



if argent>=25
	then puts "Vous avez eu pour 25 € d'achat."
elsif argent<0
	argent = 0	
else
	puts "Vous n'avez pas assez !"	
end	


Je vous montre d'autres exemples pour bien comprendre.

5) Avec les booléens


On va se baser sur les phases jour/nuit sous forme de booléens. Simple, non ?


Portion de code:



if jour == true
	puts "C'est le jour !"
else
	puts "C'est la nuit !"	
end



6) Avec les chaines de caractères

Ensuite, on imagine que l'on doive avoir un nom spécifique pour qu'il se passe quelque chose de spécial.


Portion de code:



if nom == "Link"
	then puts "Vous êtes le sauveur d'Hyrule !"
else 
	puts "Vous êtes peut-être un autre héros, on ne sait jamais !"	
end	



7) La condition ternaire

L'opérateur ? permet de faire une condition très simple de type if-then-else sur une seule ligne. Voici sa forme
générale :


Portion de code:



condition ? si_vrai : si_faux



Avec nos deux phases jour/nuit, on pourrait avoir :


Portion de code:



jour == true ? "Jour" : "Nuit"



8) Le branchement conditionnel unless-else

Il permet de faire un équivalent négatif du branchement if-then-else.


Portion de code:



unless condition
	
else
	
end



On va donner un exemple simple avec un nom reconnu.


Portion de code:



unless nom == "Ganondorf"
	puts "Vous êtes à priori un gentilhomme !"
else
	puts "Vous êtes le Seigneur du Malin !"	
end	



9) Avec les opérateurs logiques

Si vous avez bien compris l'utilité des opérateurs logiques, voici leur exemple d'utilisation pour vous donner une idée.


Portion de code:



if not (x!=0)
	then puts "x vaut zéro !"
end

if 	x>=20 and x<=50
	then puts "x est entre 20 et 50."
end	

if x<0 or x>0
	then puts "x est négatif ou positif !"
end



II) Les conditions multiples

Il existe un moyen de faire ce qu'on appelle des conditions multiples de type case-when qui permettent d'éviter les répétitions
du mot elsif dans une condition simple. On peut s'en servir avec une unique valeur, plusieurs et aussi un intervalle.

Voici son concept fondamental :


Portion de code:



case var 
	when cas_1 
		
	when cas_2	
		
	when cas_n	
			
	else
		
end	



Je vais vous donner l'exemple classique des notes pour que vous découvrez les possibilités des clauses conditionnelles.


Portion de code:



note = 10
case note
	when 0
		puts "Tout est à refaire !"
	when 1 .. 6
		puts "Pas terrible !"
	when 7,8,9
		puts "Ce n'est pas encore la moyenne, mais perséverez !"
	when 10 
		puts "Pile la moyenne ! Ouf !"
	when 11,12,13 
		puts "C'est déjà pas mal !"
	when 14 .. 16
		puts "C'est bien !"
	when 17 .. 19
		puts "C'est très bien !"
	when 20
		puts "C'est excellent !"
	else
		puts "Note incorrecte !"
end	




Denzel Lockheart$ - posté le 30/01/2010 à 21:43:19. (139 messages postés)

Webmasters anonymes

Pour ce qui est du fameux bug avec les portions de code, j'ai compris comment faire, donc il n'y aura plus ce genre de problème à l'avenir !

http://www.inlibroveritas.net/lire/oeuvre36096.html


berka - posté le 31/01/2010 à 16:39:34. (493 messages postés)

planchant sur un script

Le "then" est très rarement utilisé en ruby. Il vaut meme mieux ne pas l'utilise car il est source de pas mal d'erreur pour des expressions sur plusieurs lignes.
Mais il est assez utile dans les comparaisons multiples:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
case note
        when 0 then puts "Tout est à refaire !"
        when 1 .. 6 then puts "Pas terrible !"
        when 7,8,9 then puts "Ce n'est pas encore la moyenne, mais perséverez !"
        when 10 then puts "Pile la moyenne ! Ouf !"
        when 11,12,13 then #...
        else then puts "Note incorrecte !"
end     


Ca fait des lignes en moins.

Il faut noter que l'on peut supprimer true, false voire nil dans certains cas:

Portion de code : Tout sélectionner

1
p "vrai" if a == true


est la meme chose que

Portion de code : Tout sélectionner

1
p "vrai" if a


Portion de code : Tout sélectionner

1
p "faux" if a == false


est la meme chose que

Portion de code : Tout sélectionner

1
p "faux" if !a


Portion de code : Tout sélectionner

1
p "rien" if a == nil


est la meme chose que

Portion de code : Tout sélectionner

1
p "rien" if !a


Après, si on est exigeant, la différence entre and et &&, entre or et ||.

Twitter: Pensées politiques et juridiques. Réflexions informatiques


Zeus81 - posté le 31/01/2010 à 19:26:21. (11072 messages postés)

La différence c'est juste la priorité, non ?

Plutôt que de mettre then je préfère mettre un point virgule, ça prend moins de place. ^^"
Et on peut faire ça aussi pour éviter de puts sur chaque ligne :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
puts case note
when 0; "Tout est à refaire !"
when 1 .. 6; "Pas terrible !"
when 7,8,9; "Ce n'est pas encore la moyenne, mais perséverez !"
when 10; "Pile la moyenne ! Ouf !"
when 11,12,13; #...
else; "Note incorrecte !"
end     


Un autre truc qui peut être pratique avec le case c'est qu'il peut utiliser les regexp.

Citation:

case string
when "azerty";
when /q(.*)h/;
end


Sur RMXP les regexp ne s'affichent pas en violet (la version de Scintilla étant un peu vieille), mais ça marche quand même !


Denzel Lockheart$ - posté le 31/01/2010 à 20:59:52. (139 messages postés)

Webmasters anonymes

Ben chacun sa méthode, après ! Moi, j'ai mis la mienne !

http://www.inlibroveritas.net/lire/oeuvre36096.html


forêtnor - posté le 01/02/2010 à 20:39:16. (4552 messages postés)

Jonas, en bonnet du forme.

Ouais moi aussi j'utilise la méthode de berka pour les booléens. Ça doit venir des cours de logique (trop tardifs dans le cursus habituel, selon moi, soit-dit en passant ^^)

Une magie que la majorité des habitants de Ghrorlok.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis