Accueil du SiteAccueil du Site  AccueilAccueil  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  ConnexionConnexion  S'enregistrerS'enregistrer  




Partagez | 
 

 Tuto RGSS3 n°1: Les bases de la prog et notre 1er script

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
shin
Chevalier Dragon (niveau 1)
Chevalier Dragon (niveau 1)
avatar

Masculin
Messages postés : 726
Date d'inscription : 18/10/2011
Jauge LPC :
43 / 10043 / 100










MessageSujet: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 17:11

Ceci est le début d'une série de tuto autour du RGSS3 qui sortira a un rythme pas du tout régulier.

Bon pour commencée qu'est ce que le RGSS :
Wiki a écrit:

RGSS est une implémentation de l'interpréteur de Ruby en C++ développé par l'éditeur de jeu vidéo Enterbrain. Il est distribué sous licence propriétaire dans la série RPG Maker dans ses deux dernières versions XP et VX. La dernière version stable (RGSS 3) est sortie en même temps que l'extension de Rpg Maker VX : Rpg Maker VX Ace.

(merci wiki ^^)

Et pour éviter de donner de faux espoir je vais être clair :
RGSS = RM XP; RGSS2 = RM VX; RGSS3 = RM VXAce

Donc ce tuto est réservé aux personnes voulant scripter sur RM VXAce. (désoler pour les autres.)


1) Structure d'un script


Je vais commencer par vous parler de la structure d'un script:

Un script est composé de:
-class:
Une class commence par le mot clé =>class et est suivit du nom de la class ainsi que du nom de la class qu'elle hérite, et se termine par le mot clé end(la première lettre du nom de la class dois être en majuscule)
Une class est une sorte de modèle comportant certaine propriétés et fonctionnalités.
exemple => imaginons le plans d'une maison, on vois comment elle doit être mais il faut un "constructeur" pour pouvoir y habiter.(pas très clair tous ça mais ne vous inquiétez pas vous comprendrez à la fin)


-method/fonction:
Une method, ou fonction comme vous voulez, commence par le mot clé def et fini par end.
Une method est une sorte de fonctionnalité d'une class et peut donc être appeler de n'importe quel instance de la class à laquelle elle appartient et sert notamment à "compacter" en une ligne de code plusieurs autres.
exemple => imaginons que nous devions faire 5 fois la même chose dans une class, et que ce que nous devons faire nécessite au moins 50 ligne de code et bas au lieux de marquer 5 fois les 50 lignes il nous suffira de créée une method avec nos 50 lignes et appeler juste 5 fois cette method.(Pas très clair non plus mais vous comprendrez aussi à la fin.)


-variable:
Il existe 5 type de variable.

-Les variables Local que l'on écris comme ceci => variable
  Elles ne sont utilisable que dans la method où elles sont déclarées

-Les variables De Class que l'on écris comme ceci => @variable
  Elles sont utilisable dans toute la class ou elles sont déclarées

-Les variables De Class Partagées que l'on écris comme ceci => @@variable
  Elles sont utilisable par toute les instances de d'une même class.(perso, j'ai jamais utilisée ^^)

-Les variables Global que l'on écris comme ceci => $variable
  Elles sont utilisable partout

-Les variables Constantes que l'on écris comme ceci => Variable(perso, je met toute les lettres en majuscule mais ça change rien)
  Elles ne peuvent pas être modifier (d'où son nom "Constante")


2) Première fenêtre


Bon Maintenant que je viens de vous expliquer les bases nous pouvons nous atteler à faire notre première fenêtre:

Code:

#===============================================================================
class Window_Test < Window_Base
#===============================================================================
  def initialize
    super(0, 0, Graphics.width, Graphics.height)
    @text = "hola"
    refresh
  end
#-------------------------------------------------------------------------------
 def refresh
    self.contents.clear
    draw_text(0,0,contents_width, line_height, "coucou", 1)
  end
  def tuto_draw
    draw_text(0,line_height,contents_width, line_height, text, 1)  
  end
end

Ne vous inquiétez pas je vais décortiquer tous ça avec vous.

La première ligne permet de créer notre class:
Code:
class Window_Tuto < Window_Base

Vous allez me dire mais qu'est ce que c'est que cette merde là:
Code:
< Window_Base
Et bah cette merde sert à définir un héritage, en claire notre Window_Tuto hérite des fonctions et variables de la class Window_Base.

Code:

def initialize
  super(0, 0, Graphics.width, Graphics.height)
  @text = "hola"
  refresh
end
Vous l'aurez compris, on viens de créer notre première method.(initialize est une method de base de la création d'une fenêtre)

Code:
def initialize
Définition de la method initialize.

Code:
super(0, 0, Graphics.width, Graphics.height)
"super" vous permet d’appeler la méthode de même nom défini dans la classe parent, c'est à dire que le code de méthode initialize de Window_Base est exécuté.

Code:
(0, 0, Graphics.width, Graphics.height)
dans l'ordre ça donne
- position "x" de votre fenêtre.
- position "y" de votre fenêtre.
- largeur de votre fenêtre.
- hauteur de votre fenêtre.
(Les coordonnées (0,0) correspondes au coins supérieur gauche de l'écran donc plus x est élever plus la fenêtre ce trouvera à droite et plus y est élever plus la fenêtre ce trouvera en bas)
(Graphics.width renvois la valeur de l'écran de jeu et Graphics.height la hauteur)
Vous pouvez vous amusez à changer les valeurs.

Code:
@text = "hola"
On déclare une variable de class que l'on appelle "text" et on l'initialise avec la chaine de caractère "hola". (en claire on dis que @text = "hola" ^^)
On s'en servira plus tard

Code:
refresh
Cette ligne signifie juste que l'on appelle la method "refresh".

Et bien sur ne pas oubliez de terminer votre fonction par un "end".


Code:

def refresh
  self.contents.clear
  draw_text(0,0,contents_width, line_height, "coucou", 1)
end
Cette method permet de rafraichir à certain moment votre fenêtre.

Code:
def refresh
Comme plus haut, on créée la method refresh.

Code:
self.contents.clear
Cette ligne sert à effacer le Bitmap de la fenêtre (je vous parlerais plus en détail du Bitmap dans un prochain tuto retenez juste que ça efface le contenue de votre fenêtre)


Code:
draw_text(0,0,contents_width, line_height, "coucou", 1)

"draw_text" est une method de Window_Base et qui sert à afficher du texte.

on lui passe en argument:

Code:
(0,0,contents_width, line_height, "coucou", 1)

donc dans l'ordre ça donne
- position "x" du texte dans la fenêtre
- position "y" du texte dans la fenêtre
- largeur du texte dans la fenêtre
- longueur du texte dans la fenêtre
- texte à afficher
- alignement (0 => alignement a gauche, 1 => centré, 2 => alignement à droite)
(contents_width et line_height sont des method de Window_Base)
(contents_width retourne la largeur de la fenêtre, line_height retourne la valeur 24 (écart normale entre chaque ligne dans RM))


maintenant vous pouvez terminer votre method avec end

Code:

def tuto_draw
  draw_text(0,line_height,contents_width, line_height, @text, 1)  
end

Code:
def tuto_draw
Pas  besoin de réexpliquer

Code:
draw_text(0,0,contents_width, line_height, @text, 1)
pareil que ci-dessus mais cette fois on intègre notre variable "@text" que l'on a créée plus haut.
(on ce serviras de cette method un peu plus tard)

maintenant vous pouvez terminer votre method avec end puis votre class de la même façon.


3) Creation de Scene_Test


maintenant que notre fenêtre est terminée il faut pouvoir l'afficher donc c'est partie:

Code:

#===============================================================================
class Scene_Test < Scene_Base
#===============================================================================
  def start
    super
    create_window_test
  end
#-------------------------------------------------------------------------------
 def update
    super
    if Input.trigger?(:B)
      return_scene
      Sound.play_cancel
    end
    if Input.trigger?(:C)
      @window_test.tuto_draw
    end
  end
#-------------------------------------------------------------------------------
 def create_window_test
    @window_test = Window_Test.new
  end
end


Je vais aussi vous décortiquer tous ça

Code:
class Scene_Test < Scene_Base
Vous connaissez déjà

Code:

def start
  super
  create_window_test
end

Code:
def start
Vous connaissez déjà(sachez juste que la method "start" est obligatoire dans les scènes cette method est exécuter automatiquement des que l'on appel la scène)

Code:
super
idem

Code:
create_window_test
appel de la method "create_window_test" que l'on verras plus tard


Code:

def update
  super
  if Input.trigger?(:B)
    return_scene
    Sound.play_cancel
  end
  if Input.trigger?(:C)
    @window_test.tuto_draw
  end
end

Ça ce complique un peu.

Code:

if Input.trigger?(:B)
 return_scene
 Sound.play_cancel
end
le "if" est une condition (Je vous expliquerais plus en détail dans le prochain tuto)

en claire ce morceau veut dire:

si la touche B est appuyée alors
appel de la method "return_scene" (qui permet de retourner à la scène précédente)
jouer le sons cancel
end (ce qui permet de dire que c'est la fin du "if")

Code:

if Input.trigger?(:C)
  @window_test.tuto_draw
end

C'est presque pareil:

si la touche C est appuyée alors
appel de la method tuto_draw (vous vous en souvenez de cette method ??)(vous verrez juste en dessous d'où viens la variable de class)
end (ce qui permet de dire que c'est la fin du "if")

(Quand j'ai cité la touche B et C ça ne correspond pas au touche B et C du clavier mais celle défini dans RM (faite F1 quand votre jeu est lancé pour les changer))

N'oubliez pas de finir la method avec end

Et pour finir:

Code:

def create_window_test
  @window_test = Window_Test.new
end

là on créé la variable de class que l'on a vus plus haut et on lui dis qu'elle est égale à "nom de notre class fenêtre".new
rappelez vous au tout début du tuto quand je vous expliquais ce que c’était que les class, je vous avais parlé d'un constructeur et bah le .new est ce constructeur.(en claire c'est lui qui vas rendre réelle notre fenêtre)

plus qu'à terminer notre method et notre class avec des end

Et voila pour la partie code maintenant il faut pouvoir appeler notre scène.

Pour cela il faut créée un événement sur la map et dans la partie script(le dernier du 3eme onglet) mettre:

Code:
SceneManager.call(Scene_Test)
Je vous laisse admirez le travail.


Petit travaux pratique

Avec ce que je vous est déjà appris y'a moyen de faire quelque petit truc sympas.
Testé et des que vous êtes arrivé à un résulta sympas posté le code et je vous dirais ce qui est bien et pas bien dans votre code. pOuce´


FIN


J'attends vos retour avec impatience.

Ps: si vous avez des question n'hésitez pas à les poster en commentaire, il n'y à jamais de question bête pOuce´(je ne veux pas qu'on spam ma boite à MP ^^)

Ps2: pour mon prochain tuto je compte ajouter a la fin une partie réserver à vos proposition. Par exemple: si vous voulez que j'explique l'affichage d'image ou quelque chose de spécifique.

ps3: Les tutos continuerons en fonction de l’attrait pour celui ci donc si vous êtes intéressé n'hésitez pas à me le faire savoir dans les commentaires.

ps4: Le mot method est orthographié de cette manière car c'est le mot anglais en français on dis fonction.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
eddy_de_galdon
Chevalier Dragon (niveau 2)
Chevalier Dragon (niveau 2)
avatar

Masculin
Messages postés : 807
Date d'inscription : 31/08/2013
Jauge LPC :
52 / 10052 / 100






MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 17:25

Cool, Merci de faire ces tutos shin !
je vais pouvoir m'améliorer ^^

_____________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zexion
Administrateur
Administrateur
avatar

Masculin
Messages postés : 6227
Date d'inscription : 04/01/2012
Jauge LPC :
97 / 10097 / 100












MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 18:13

Bien que ça ne me servira probablement pas, je te remercie d'avoir fait l'effort de rédiger un tel tutoriel.
Et hop, plein de points ! Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité
avatar


MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 18:21

Je trouve ça bien comme tuto. Vraiment pratique pour comprendre les bases des script.

Un tuto que je pense intéressant pour un débutant, ça sera de décrypter bout par bout des scripts simples et courant. ça permettrait de comprendre les principes les plus abstrait ;-)
Revenir en haut Aller en bas
Ti-Max
Membre V.I.P.
Membre V.I.P.
avatar

Masculin
Messages postés : 2246
Date d'inscription : 11/07/2012
Jauge LPC :
80 / 10080 / 100

















MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 18:34

Dommage que se soit sur RGSS 3, car ça m'aurait très intéresser sur le 1. ^^

C'est quand même une belle initiative, car des tutoriels de ce genre, ils en existent très peu.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
City Hunter
Administrateur
Administrateur
avatar

Masculin
Messages postés : 6519
Date d'inscription : 25/05/2011
Jauge LPC :
40 / 10040 / 100

















MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 18:57

C'est cool comme tuto Shin Smile

Comme TI MAX, ca m'aurait beaucoup intéressait si c'était le 1 ^^
Mais je pense que pour les bases et l'initiation cela reste les mêmes entre chaque =)
Des points!

_____________________
   
Code pour les bannières:
 


Qui aime City Hunter, est aimé de moi =D :
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Magicalichigo
Ancienne staffeuse
Ancienne staffeuse
avatar

Féminin
Messages postés : 4252
Date d'inscription : 02/08/2011
Jauge LPC :
56 / 10056 / 100



















MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Dim 23 Fév 2014 - 19:35

Ca m'intéresse beaucoup, je lirais ça à tête reposée !

_____________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Meegr
Paysan (niveau 1)
Paysan (niveau 1)
avatar

Messages postés : 8
Date d'inscription : 24/02/2014
Jauge LPC :
5 / 1005 / 100


MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Mar 25 Fév 2014 - 12:52

Merci pour cette introduction, elle va surement servir à beaucoup de monde. Je vais un petit peu faire mon ennuyeux mais il faut faire attention à des petits détails terminologiques. Par exemple, au delà du fait qu'une variable locale est utilisable "uniquement" dans la méthode ou elle est déclarée, elle est avant tout accessible "dans le bloc" ou elle est déclarée. Par exemple :

Code:

def uneMethode
  10.times do
      i = :abc
  end
  p i
end

Ne fonctionnera pas. De plus, normalement, mais c'est un peu particulier à Ruby (parce que sa gestion de la portée Lexicale est un petit peu nulle), une variable locale est utilisable partout dans le bloc local et dans ses enfants. si ma variable i avait été déclarée au dessus de mon itération, elle aurait été accessible.

Je n'aime pas trop l'appellation de variable de classe et variable de classe partagées. En général je préfère variable d'instance (attribut) et variable de classe. Et personnellement, suite à une conversation avec Zeus, j'évite les variables de classes @@, car elle sont partagées lors de l'héritage transversal... ce qui n'a pas de sens :/
Concernant la structure, je pense qu'une étude partant de Scene_Base, pour expliquer pourquoi c'est la méthode start qui est appelée et non le constructeur aurait été un plus.

Je pinaille beaucoup mais je te remercie pour ce tutoriel ! Bonne continuation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
shin
Chevalier Dragon (niveau 1)
Chevalier Dragon (niveau 1)
avatar

Masculin
Messages postés : 726
Date d'inscription : 18/10/2011
Jauge LPC :
43 / 10043 / 100










MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Mar 25 Fév 2014 - 14:04

Tous ce que t'as dis est vrai mais les point ou je ne suis pas trop entré dans les détail c'est surtout pour essayée de faire le plus simple et compréhensible possible pour que les personnes qui ne connaisse absolument rien en programmation puisse réussir par eux même à faire des script simples mais fonctionnelles ceux voulant rentré plus sérieusement dans le vif du sujet peuvent chercher par eux même ^^
(Et c'est aussi parce que je suis pas très doué pour expliquer quoi que ce sois ^^)
Citation :

Par exemple, au delà du fait qu'une variable locale est utilisable "uniquement" dans la méthode ou elle est déclarée, elle est avant tout accessible "dans le bloc" ou elle est déclarée

merci de l'info, je déclare toute mes variable local au début de mes method donc j'ai jamais eu de poblème avec mais c'est toujours bon à savoir pOuce´

Citation :
j'évite les variables de classes @@, car elle sont partagées lors de l'héritage transversal... ce qui n'a pas de sens :/
c'est vrai que c'est inutile c'est pour ça que je m'en sert jamais ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Meegr
Paysan (niveau 1)
Paysan (niveau 1)
avatar

Messages postés : 8
Date d'inscription : 24/02/2014
Jauge LPC :
5 / 1005 / 100


MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Mar 25 Fév 2014 - 14:22

Mais je t'assure que je trouve ça très bon, c'est mon côté "un peu trop rigoureux parfois" qui fait que je suis ennuyeux à répéter ce genre de chose. Sur mon ancien site, des autres membres avaient déjà essayé d'expliquer le RGSS "facilement", c'est vraiment pas évident :
http://www.biloucorp.com/creation-dun-shifumi-avec-le-rgss3-16 et http://www.biloucorp.com/creer-son-propre-systeme-de-quetes-partie-12-17 qui utilisent un peu ta structure.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kaled_
Paysan (niveau 2)
Paysan (niveau 2)
avatar

Messages postés : 17
Date d'inscription : 21/03/2015
Jauge LPC :
0 / 1000 / 100


MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   Sam 21 Mar 2015 - 13:33

J'ai un problème pour le script quand je fait entrée ça ne ferme pas la fenêtre alors que avec echap oui, quelqu’un peut m'aider ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Tuto RGSS3 n°1: Les bases de la prog et notre 1er script   

Revenir en haut Aller en bas
 
Tuto RGSS3 n°1: Les bases de la prog et notre 1er script
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tuto RGSS3 n°1: Les bases de la prog et notre 1er script
» [Tuto vidéo] Les bases basiques du RGSS3 !
» Les bases du Smokey eyes ??
» Comment dépotter les quads Spring Forecast: tuto photo
» (12) Portail des bases généalogiques Aveyronnaises

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ APPRENTISSAGE ~ :: Initiation :: Systèmes-
Sauter vers: