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




Publier un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: [Ruby] Tuto n°1 : Les Sprites
MessagePublié: 23 Aoû 2007, 20:02 
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°1


[]Les Sprites


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 Sprite ?

En Ruby, un Sprite est un Objet utilisé pour afficher des images à l'écran.
Il permet d'utiliser des Bitmaps.

2 - Appel de la Classe :

Ici c'est simple :
Code: Tout sélectionner
Sprite.new
Sprite.new(viewport)

Il est aussi possible de spécifier un argument de type Viewport.

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

Méthodes habituelles :

Je commencerais avec @sprite = Sprite.new pour les exemples.

Code: Tout sélectionner
@sprite.update

Cette méthode permet de mettre à jour le Sprite.
Même si elle est très courante, elle est peu utilisée dans le cas du Sprite.

Code: Tout sélectionner
@sprite.viewport

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

Code: Tout sélectionner
@sprite.dispose

Cette méthode est utilisée pour effacer le Sprite
Attention à ne pas l'oublier n40

Code: Tout sélectionner
@sprite.disposed?

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

Code: Tout sélectionner
@sprite.flash(couleur, duree)

Flashe le Sprite avec la couleur spécifiée pendant la duree spécifiée.
Si cette méthode est utilisée, il ne faut pas oublier la mise à jour (update) qui devient alors indispensable.

Code: Tout sélectionner
@sprite.bitmap

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

Code: Tout sélectionner
@sprite.src_rect

Réfère au Rect en rapport avec le Bitmap du Sprite.

Code: Tout sélectionner
@sprite.visible

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

Code: Tout sélectionner
@sprite.x
@sprite.y
@sprite.z

Les coordonnées du Sprite.
x : abscisse
y : ordonnée
z : hauteur (l'objet avec la valeur la plus élevée est positionné au-dessus)

Code: Tout sélectionner
@sprite.opacity

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

Code: Tout sélectionner
@sprite.mirror

Utilisée pour retourner le Sprite horizontalement (=mirroir).
Si TRUE le Sprite est retourné.

Code: Tout sélectionner
@sprite.tone

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

Je n'ai mis que les méthodes les plus utilisées, donc sachez qu'il en existe d'autres ...

4 - Petit script d'exemple :

Copier/coller ce code dans RMXP (pour plus de lisibilité avec les couleurs) et lisez bien les commentaires.
Si vous avez été attentifs au-dessus, vous devriez comprendre très facilement.

EDIT : N'oubliez pas de mettre une image (n'importe laquelle) nommée Test dans votre dossier Pictures.
Vous pouvez bien sûr changer ça à la ligne 21.

Code: Tout sélectionner
# Définition de la Classe
# Cette classe sera appelée par le code :
# $scene = Scene_Sprite.new
# dans "Insérez un script" d'un event par exemple
class Scene_Sprite
 
  # Méthode Principale
  def main
   
    # On appelle le script Spriteset_Map qui permet d'avoir
    # une image de la map
    @fond_map = Spriteset_Map.new
   
    # C'est là qu'on appelle le fameux Sprite
    @sprite = Sprite.new
    # On attribue une image au Bitmap du Sprite
    #-------------------------------------------
    # Note : RPG::Cacche.picture("nom de l'image")
    # correspond à un fichier image dans le dossier
    # Pictures du jeu
    @sprite.bitmap = RPG::Cache.picture("Test")
   
    # On définit une variable qui servira plus tard
    @flash = false
   
    #-------------------------------------------
    # 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 le bitmap du Sprite ...
    @sprite.bitmap.dispose
    # ... puis le Sprite
    @sprite.dispose
   
    # Ne pas oublier Spriteset_Map
    @fond_map.dispose
 
  # Fin de la méthode main 
  end
 
  # Méthode de mise à jour
  def update
   
    # On met à jour le Sprite (mais pas le Bitmap) ...
    @sprite.update
    # Ainsi que Spriteset_Map
    @fond_map.update
   
    # Si le bouton B (= 0 ou X) est pressé
    if Input.trigger?(Input::B)
      # On retourne à la Map (Scene_Map)
      $scene = Scene_Map.new
    end
   
    # Si le bouton C (= Entrée) est pressé
    if Input.trigger?(Input::C)
    #/////////////////////////////////////////////////////////
      # A moins que la variable flash = true
      # Regardez plus haut où nous avons définit
      # cette variable
      unless @flash == true
        # On flashe le Sprite en blanc pendant 30 frames
        @sprite.flash(Color.new(255,255,255), 30)
        # On rend la variable flash = true
        @flash = true
        # On quitte la méthode
        # En réalité on retourne au début
        return
      end
      # Si le Sprite est visible
      if @sprite.visible
        # On rend le Sprite invisible
        @sprite.visible = false
      # Sinon
      else
        # On rend le Sprite visible
        @sprite.visible = true
      end
    # Tout ce qui est entre les #/// ... est exécuter
    # si on appuie sur Entrée
    #/////////////////////////////////////////////////////////
    end
 
    # Si le bouton Bas est pressé
    if Input.repeat?(Input::DOWN)
      # On déplace le Sprite vers le bas
      @sprite.y += 10
    end
    # Si le bouton Haut est pressé
    if Input.repeat?(Input::UP)
      # On déplace le Sprite vers le haut
      @sprite.y -= 10
    end
    # Si le bouton Droite est pressé
    if Input.repeat?(Input::RIGHT)
      # On déplace le Sprite vers la droite
      @sprite.x += 10
    end
    # Si le bouton Gauche est pressé
    if Input.repeat?(Input::LEFT)
      # On déplace le Sprite vers la gauche
      @sprite.x -= 10
    end
   
  # Fin de la méthode update 
  end
 
# Fin de la Classe 
end


Voilà, j'espère que ce tuto sera utile et donnera envie d'apprendre le Ruby plus profondement.
En tout cas n'hésitez pas à poser des questions (même idiotes happy ) ou à me corriger n37

Tous vos commentaires sont les bienvenus !


n41

PS : Prochainement, un Tuto sur les Plane et les Viewport et peut-être sur les Bitmap.

EDIT : Images :

Voilà une image qui peut vous donner un aperçu des fonctionalités d'un Sprite :

Image


Haut
 Profil  
 
 Sujet du message: Re: [Ruby] Tuto n°1 : Les Sprites
MessagePublié: 23 Aoû 2007, 20:06 
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

Wow, je suis fan de toi x)
Non sérieusement, je te remercie vraiment, ce tuto est simple mais il m'a beaucoup aidé pour connaître tout les methodes et fonctions.
Je te donne 5 PA, et je te félicite à nouveau pour ce tutoriel Smile


Haut
 Profil  
 
 Sujet du message: Re: [Ruby] Tuto n°1 : Les Sprites
MessagePublié: 23 Aoû 2007, 20:23 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 23 Jan 2007, 01:00
Messages: 1006
Localisation: lyon
Niveau RPG Maker: novice
Points d'aide: 0/60

Créations :

Voir ses créations

Un très bon tuto suivi d'un exemple que l'on peut introduire facilement dans un projet.
Après avoir tester ce script et avoir vu comment il marchait, vous pouvez vous amuser à modifier vous même les différentes propriétés de "@sprite" que The Metroid définit dans la première partie de son tuto. Et vous pourrez ensuite à chaque fois tester le script pour voir ce que ça donne graphiquement.
Si vous n'avez pas trop compris certaines parties, n'hésitez pas à demander à The Metroid sur ce post ^^.


Haut
 Profil  
 
 Sujet du message: Re: [Ruby] Tuto n°1 : Les Sprites
MessagePublié: 23 Aoû 2007, 20:28 
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

Mario Bros a écrit:
Wow, je suis fan de toi x)

blush lol !
Merci happy

Par contre il me semble avoir oublié de préciser qu'il fallait une image nommée "Test" dans le dossier Pictures pour que ça marche ...
Je vais édité ...

dani_nouvel_star a écrit:
vous pouvez vous amuser à modifier vous même les différentes propriétés de "@sprite" que The Metroid définit dans la première partie de son tuto

C'est exactement le but du tuto et c'est la meilleure manière d'apprendre happy


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

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


Qui est en ligne ?

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


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