Heures au format UTC + 1 heure [ Heure d’été ]




Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: [Ruby] Tuto n°2 : Les Planes (Plans)
MessagePublié: 25 Aoû 2007, 17:31 
Ancien membre du staff
Ancien membre du staff

Inscrit le: 24 Sep 2006, 00:00
Messages: 522
Points d'aide: 0/60

Créations :

Voir ses créations

[]Ruby,
Tuto n°2


[]Les Planes (Plans)


Auteur : Moi


Attention ! Il est nécessaire d'avoir un minimum de connaissance en Ruby pour comprendre ce tuto !
C'est pourquoi je conseillerais au débutant complet de commencer par => <=


1 - Qu'est-ce qu'un Plan ?

En Ruby, un Plan s'apparent fortement à un Sprite mais avec une particularité : il se répète
(voir plus bas pour de plus amples explications). Un Plan sert également à utiliser un Bitmap.

2 - Appel de la Classe :

Code: Tout sélectionner
Plane.new
Plane.new(viewport)

Comme le Sprite, on peut aussi spécifier un argument de type Viewport.
Faîtes attention à ne pas oublier le e de Plane.

3 - Méthodes et Propriétés :

Pour ceux qui ont lu mon premier tuto, vous pourrez voir que le Plan a pas mal de méthodes communes au Sprite.
Néanmoins, il y en a certaines qui le distingue (sinon pourquoi faire 2 classes différentes ?).

Je commencerais avec @plan = Plane.new pour les exemples.

Code: Tout sélectionner
@plan.viewport

Réfère au Viewport utilisé pour l'affichage du Plan (s'il y en a 1)

Code: Tout sélectionner
@plan.dispose

Efface le Plan.
Comme pour le Sprite, éviter de l'oublier !

Code: Tout sélectionner
@plan.disposed?

Renvoie TRUE si le Plane a été effacé, sinon renvoie FALSE.

Code: Tout sélectionner
@plan.bitmap

Réfère au Bitmap en rapport avec le Plan.

Code: Tout sélectionner
@plan.visible

Détermine si le Plan est visible (TRUE) ou pas (FALSE).

Code: Tout sélectionner
@plan.ox
@plan.oy
@plan.z

Les coordonnées du Plan.
ox : origine de l'abscisse
oy : origine de l'ordonnée
z : hauteur (l'objet avec la valeur la plus élevée est positionné au-dessus)
Attention ici, différence par rapport au Sprite, les coordonnées ne peuvent être définies que par rapport à leur origine sur une axe et non par rapport à un point précis.
En effet c'est logique puisqu'un Plan n'a pas de limite. Donc n'oubliez pas le o devant x et y (le z ne change pas).
Petite précision : le Sprite possède aussi les propriétés ox et oy, mais elles ne sont pas très utiles puisqu'elles font juste l'inverse (@sprite.ox += 1 revient à @sprite.x -= 1)

Code: Tout sélectionner
@plan.opacity

Détermine l'opacité du Plan (entre 0 et 255 inclus)

Code: Tout sélectionner
@plan.tone

Détermine les tons de couleur du Plan grâce à la classe Tone (fonctionne à peu près pareil que Color)

J'ai mis toutes les méthodes du Plan sauf 2 qui ne sont pas très utiles (à par pour les pros de chez pros, donc pas pour moi n37)
Ps : pour ceux qui ont remarqué qu'il n'y avait pas de méthode update, c'est parfaitement normal; rappellez-vous que dans le cas du Sprite ce n'est nécessaire que si on utilise le flash, or un Plan n'a pas de méthode flash ...

4 - Petit script d'exemple :

C'est là que ça devient interressant car je parie qu'en lisant vous vous êtes dits :
Lecteur a écrit:
Bof ...
Au fond un Plan c'est quasiment un Sprite ...
Ya juste quelques méthodes en moins ...

Alors ceux qui se disent ça, copiez/collez ce code dans RMXP directement sans le lire.
Essayez d'appuyer sur les touches Haut Bas Gauche Droite et Entrée.
PS : n'oubliez pas de mettre une image (n'importe laquelle) nommée Test dans votre dossier Pictures (modifiable en ligne 15 et 16).
Mettez plutôt une image de fond, pas forcement grande, l'effet sera meilleur.

Appelez le sript avec :
Code: Tout sélectionner
$scene = Scene_Plan.new


Code: Tout sélectionner
# Définition de la Classe
class Scene_Plan
 
  # Méthode Principale
  def main
       
    # On appelle 2 Plans (pour plus d'effet ^^)
    @plan = Plane.new
    @plan_2 = Plane.new
    # On attribue une image aux Bitmaps des Plans
    #-------------------------------------------
    # Note : RPG::Cacche.picture("nom de l'image")
    # correspond à un fichier image dans le dossier
    # Pictures du jeu
    @plan.bitmap = RPG::Cache.picture("Test")
    @plan_2.bitmap = RPG::Cache.picture("Test")
   
    # On change les couleurs des 2 Plans pour les différencier
    @plan.tone = Tone.new(0, 100, 0)
    @plan_2.tone = Tone.new(0, 0, 100)
   
    # On définit quelques variables qui serviront plus tard
    @mode = 0
    @x = 0
    @y = 0
   
    #-------------------------------------------
    # Ce morceau de code est présent dans toutes
    # les Scenes
    #-------------------------------------------
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    #---------------------
   
    # On efface les bitmap des 2 Plans ...
    @plan.bitmap.dispose
    @plan_2.bitmap.dispose
    # ... puis les 2 Plans
    @plan.dispose
    @plan_2.dispose
   
  # Fin de la méthode main 
  end
 
  # Méthode de mise à jour
  def update
   
    # C'est dans la méthode update qu'on va pouvoir
    # faire défiler le Plan.
    # Ces deux lignes le font suivant 2 variables
    # pour le plan n°1
    @plan.ox += @x
    @plan.oy += @y
    # Et celles-là pour le plan n°2
    @plan_2.ox -= @x
    @plan_2.oy -= @y
   
    # Si le bouton B (= 0 ou X) est pressé
    if Input.repeat?(Input::B)
      # On retourne à la Map
      $scene = Scene_Map.new
    end
   
    # Si le bouton C (= Entrée) est pressé
    if Input.repeat?(Input::C)
      # Si la varialbe @mode est égale à 1 ...
      if @mode == 1
        # .. on la remet à 0
        @mode = 0
      # Sinon ...
      else
        # ... on y ajoute 1
        @mode += 1
      end
    end
 
    # Dessous, les touches modifient des paramètres des Plans suivant
    # la valeur de la variable @mode.
    # Quand @mode est égal à 0, elles font défiler les Plans et
    # modifient la vitesse de défilement
    # Quand @mode est égal à 1, elles modifient l'opacitée
    # du Plan qui se trouve dessus.
    # Si vous n'avez pas tout compris, posez vos questions sur
    # le topic du forum, je détaillerais un peu plus.
   
   
    # Si le bouton Bas est pressé
    if Input.repeat?(Input::DOWN)
      case @mode
      when 0
        @y -= 1
      when 1
        @plan_2.opacity -= 10
      end
    end
    # Si le bouton Haut est pressé
    if Input.repeat?(Input::UP)
      case @mode
      when 0
        @y += 1
      when 1
        @plan_2.opacity += 10
      end
    end
    # Si le bouton Droite est pressé
    if Input.repeat?(Input::RIGHT)
      case @mode
      when 0
        @x -= 1
      when 1
        @plan_2.opacity -= 10
      end
    end
    # Si le bouton Gauche est pressé
    if Input.repeat?(Input::LEFT)
      case @mode
      when 0
        @x += 1
      when 1
        @plan_2.opacity += 10
      end
    end
   
  # Fin de la méthode update 
  end
 
# Fin de la Classe 
end


Alors ?
Je parie que vous avez changé d'avis sur les Plans...

Vous pouvez les utiliser de beaucoup de manière différentes ...
Laissez faire votre imagination !


n41

PS : Bientôt un tuto sur les Viewport où vous pourrez apprendre à localiser un Plan et à le flasher.

EDIT : Images :

Voilà l'image que j'avais à la base :
Image

Et voilà ce que ça donne avec le script d'au-dessus :
Image

Bon, c'est pas super impressionnant, et puis on ne voit pas l'animation des 2 Plans.
Le mieux c'est encore de tester vous-même ...


Haut
 Profil  
 
 Sujet du message: Re: [Ruby] Tuto n°2 : Les Planes (Plans)
MessagePublié: 25 Aoû 2007, 20:07 
Ancien membre du staff
Ancien membre du staff

Inscrit le: 07 Sep 2006, 00:00
Messages: 1165
Points d'aide: 0/60

Créations :

Voir ses créations

Très bien, toujours aussi bien détaillé et non-baclé Smile
Tu m'aides vraiment beaucoup en script et c'est cela qui me poussera à avoir moins la flemme en scriptant ^^'

Je t'offre à nouveau 5 PA, je devient très généreux puisque je crois que ça en aidera plus d'un :.

Merci encore, à la prochaine l'ami.


Haut
 Profil  
 
 Sujet du message: Re: [Ruby] Tuto n°2 : Les Planes (Plans)
MessagePublié: 25 Aoû 2007, 20:38 
Ancien membre du staff
Ancien membre du staff

Inscrit le: 24 Sep 2006, 00:00
Messages: 522
Points d'aide: 0/60

Créations :

Voir ses créations

Encore merci beaucoup n2

Vu le succés de mes tutos je pense que je ne vais pas m'arrêter aux Viewports comme j'en avais l'intention ...

... To Be Continued ...


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728