Bon, et bien voici mon premier cours sur RGSS, et nous allons commencer avec les règles de bases du Ruby
Alors, déjà, qu’est ce que le rubis, un programme complettement orienté objet, et ouvert a toutes modification.
Qu’est ce qu’un prgrm orienté objet ? C’est simple, en rubis, tout est objet. Par exemple, 3 est un objet de la classe « entier » (integer en ruby). De même que le mot « vache » est un objet de la classe « chaîne de caractère (string en ruby. Si ça te fait rire, il existe un remède : la pendaison : simple, rapide, efficace)
Et que veut dire ouvert au modification ? simple, si la classe integer ne permet pas de faire ce que tu veut, rien a foutre, un rajoute, efface, crée,… le ruby, c’est le bonheur.
Introduction: a quoi ressemble un code en ruby?
Un code en ruby est composé de deux parties distinctes, que je nomme les classes et le code linéaire.
Le code linéaire est composé d'une suite de commande. Elles démarrent automatiquement, s'execute toutes dans l'ordre de haut en bas, et une fois arriver en bas du code, le programe s'étteind.
Les classes, situées au dessu du code linéaire, ne s'execute pas. Ce sont les différents types d'"objets" que nous pouvons utiliser dans le code linéaire ou les classes.
Nous allons maintenant faire un peu de vocabulaire de programation.
I-les classes
Les classes sont les « types d’objets » que l’on peut utiliser dans le code. Il existe quelques classes intégrées au rubis, comme par exemple la classe nombre entiers(integer) ou la classe tableau(array), mais la vrai force de la programation orienté objet est de pouvoir créer ses classes propres.
Les classes sont toutes créée au dessus du code linéaire. Leur nom commencent toujour par une majuscule.
exemple et pour nous, créer une classe « boite pokémon ». On créera donc un objet : une boite pokémon. Notre boite aura, forcément, des carracteristiques : un nombre de place, un fond, un environement,… ainsi que des actions propres, comme ajouter un pokémon, ou enlever un pokémon.
Exemple : pour la classe integer : il y a une seul carracteristique : le nombre lui-même. Par contre, il a beaucoup d’action, comme l’aditioner a un autre nombre, le retrancher, le diviser,…
Cela va sufire pour l’instant pour les classes. Il faut juste bien differencier classe et objet
II-les variables
Les variables peuvent êtres représentées par des "boites" qui contiennes les objets. Elles peuvent aussi être représentées par les adresses permettant de trouver les objets réels, qui eux sont ranger dans une grande bibliotheque. Il est important d'avoire ces deux représentations en têtes et de passer de l'une à l'autre pour une bonne compréhension.
Il existe 3 types de variables, qui diffère par leur portée et leur écriture
1- la variable global
là, il n’y a pas a chier, elle est valable partout. Elle est comune à toutes les classes et au code linéaire. Elle est comune a nimporte quel objet. Elle s’écrit $nom_de_la_variable. Plysiquement, ça serai le climat, par exemple. Si nos objets sont tous dans un champ, ils partagent tous le même climat. C'est la seul à pouvoire exister librement dans le code linéaire.
ex : $temps
2-la variable de classe
Une variable de classe n'existe que dans la classe ou elle a été créée, et peut avoir des valeurs différentes pour chaque objet de la classe. On dit que les variables de classes sont les attribut de l'objet. Avec notre exemple, si il y a des voitures dans le champs, toutes les voitures ont une couleur de peinture même si on ne la voi pas a cause de la rouille. Par contre, une voiture peut être bleu et l’autre verte. Par contre, si un autre objet du champ est une vache, on ne peut pas tout a fait dire qu’elle a une couleur de peinture… donc pas valable dans la classe Vache. Elle s’écrit @nom_de_la_variable.
3-La variable local
Alors là, c’est l’inverse de la variable global. C’est une variable qui n’est utilisable que dans une fonction seulement. L’objet n’en garde pas de trace. C'est un peut comme de la ram, ou la mémoire à court terme de l'esprit humain. elle peut servire à sticker une valeur le temps de la mettre quelque part.
Pour faire (12-4)*3, on fait 12-4, on stock le résultat ds une variable local qu’on multiplie par 3, Puis le résultat est stocké dans une variable global, par exemple. Là variable local peut disparaitre, ce n'est pas important, on a notre résultat.
III-Les objets.
Il est tres important de différencier objet et classe. Une confusion entre ces deux points serais un énorme boulet qui empecherais d'évoluer vite... et c'est c**, si on travail sur des pkmn. ^^
Donc, en gros, la classe est le type de l'objet. en prenant par exemple une voiture, elle est un objet physique. Si on la démarre, par exemple, cela ne démarre pas toutes les voitures existantes. Par contre, elle appartient à la classe Voiture (avec une majuscule), et il est écris dans la classe voiture que les objet de ce type peuvent démarrer. J'espère que je suis claire. Il faut bien, pour finir ce chapitre, comprendre que TOUT est objet en ruby. Mêmes les classes sont des objets de la classe Superclasse. De même que les mots clées.
IV-les fonctions et les méthodes
les fonctions et les méthodes sont identique, seule leurs position et la manière de les appeler change.
un "bloc de code" que l'on execute souvent (comprenez souvent= plus d'une fois. déja 2, c'est souvent chez moi^^) et qui est assez long peut tres vite devenire chiant, même avec des copier-collé...
au lieu de le réécrire plusieurs fois, ce qui est fastidieu, avouons le, on peut donner un nom a ce bloc, et le ruby, en bon code bien dresser, ira cherchez tout seul ce qu'il lui faut! c'est pas trop cool, non? ça s'écrie comme ça
def nom_de_la_fonction
..........
..........
..........
..........
..........
end
ensuite, pour executer ce qu'il y a entre le def et le end, il me suffit de réécrire nom_de_la_fonction.
Voila!! Il faut savoire qu'une fonction doit TOUJOURS etre écris en terrain neutre (en gros, hors des classes, dans le code même)
Ensuite, une méthode? et ba c'est comme une fonction, mais a l'interieur d'une classe (voila pkoi une fonction doit etre en dehors)
Pour en parler, on utilise la typo Nom_de_la_classe#nom_de_la_methode.
On ne peut l'apeler que sur un objet de Nom_de_la_classe, grace a un point.
exemple: $objet.nom_de_la_methode
Les méthodes ont la carracteristiques d'êtres propre à la classe à laquelles elles appartiennent, ce qui empeche d'utiliser une méthode de voiture sur un objet de type avion, par exemple.
L'aventage, c'est qu'elles peuvent porter le même nom sur plusieurs classes. Par exemple, Avion#changer_roue et Voiture#changer_roue sont des méthodes différentes. en effet, on change une roue différement entre ces 2 véhicules. mais vu qu'on l'aplique a un objet, pas de problème de confusion, on aplique la bonne! Privilégier toujours la méthode par raport a la fonction.
V- Les mots clées
On approche de la fin!!
en gros, les mots clées sont des... mots de vocabulaires permettant d'executer des actions. Ce ne sont pas des variables, ils n'ont donc pas de valeurs. Par exemple, if est un mot clé, qui permet une vérification. exemple:
Code:
- Code:
-
$valeur=12
if $valeur > 10
dir "je suis supperieur à 10, regardez, j'ai la valeur "+$valeur.to_s
else
dir "je suis inferieur ou égal à 10"
end
en gros, la valeur contennu dans $valeur est testé, et un message est afficher a l'écran, différente celon si ce nombre est supperieur ou inferieur a 10.
Les autres choses a noter, dans cet exemple...
dir est un mot clé qui ouvre une popwindows, vous savez, ces trucs du genre "voulez vous vraiment vider la corbeille?".
else veut dire sinon. il fonctionne avec if, et donne la chose a faire si le if est faux. Le end ferme le bloc du if. c'est a dire que ce qui suit le end sera executer quel que soit la valeur de $valeur. en gros on pourait traduire ça par si... sinon... fin.
les " " délimite une chaine string. tout ce qui est entre eux sera afficher en violet et sera considéré comme du texte.
+$valeur.to_s vous intrigue?? je vais essayer de l'expliquer car il est tres interessant. là, je voulais ajouter la valeur de $valeur au message. Je peut souder deux chaines de textes avec l'outil +. C'est une méthode de string, elle s'écrit donc string#+.
Mais $valeur n'est pas une string, mais une integer... j'aurais donc eut une erreur, et le jeu aurait planté. J'ais donc uttilisé l'outil integer#to_s, qui permet de transformer un entier en chaine de carractere. comme ça, no problem ^^