rpgmakerxp.frbb.net

Un forum basé sur le rpg making via rmxp
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 Créer une scene

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
berka
Admin
Admin
avatar

Masculin
Nombre de messages : 842
Age : 27
Localisation : Devant mon ordi!
Projet en cours: : Secret ^^
Date d'inscription : 16/03/2007

niveau du maker
mapping:
0/100  (0/100)
events:
50/100  (50/100)
scriptage:
100/100  (100/100)

MessageSujet: Créer une scene   Mar 25 Sep - 23:09

Voici mon deuxieme tuto:

Creer une Scene

le Lecteur a écrit:
Hein ? c'est quoi une Scene

Le menu est une scene, le title est une scene... Une scene en gros c'est un script qui gere plusieurs window.

Veuillez lire avant de commencer mon tuto sur les window

Allez a l'attaque !

Creez un nouveau script, au dessus de main

On definit la classe:
Code:
class Scene_Exemple

Comme pour les scripts tout betes !

ensuite on ouvre la definition main:
Code:
def main

C'est ce qui gere l'appel du script (appel: $scene = Scene_Exemple )

ici on peut choisir le fond d'ecran de la scene:
Code:
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title("fond")
    Une image de 640ppx sur 480ppx doit etre placée dans le dossier Titles du projet
    Par default le fond est noir


pour mettre la map en fond:
Code:
@sprite = Spriteset_Map.new

Ensuite nous allons nous attaquer a une fentre de choix, comme le title:
Code:
s1 = "Objets"
s2 = "Status"
s3 = "Sortir"
    vous pouvez aller jusqu'ou vous voulez
    s1 = signifie le premier choix...


Nous allons créer la fenetre en elle meme, en ecrivant:
Code:
@n_importe_quoi = Window_Command.new(X, [s1, s2, s3])
    bien sur, vous pouvez changer la variable locale "@n_importe_quoi " en ce que vous voulez, mais sans espace et pensez a vous en souvenir, on va la reutiliser!
    Window_Command.new : en fait, là on appelle une Window spéciale qui definit les choix
    X représente les dimensions horizontales de la fenetre de choix, vous pouvez la changer, le menu de base utilise la valeur 160
    Si vous avez 4 choix (s4 = ...) pensez a rajouter s4 dans les crochets


On va ajouter des fenetres, par exemple la fenetre de l'autre tuto "Creer une Window":
Code:
@fenetre_exemple = Window_Exemple.new
    La on appelle la fenetre (souvenez vous dans l'autre tuto !)
    @fenetre_exemple: bien sur vous pouvez changer la variable locale (sans espace !) pensez a vous en souvenir et ne la prenez pas trop longue !


Gestion de la fenetre appelee:
    position horizontale:
    Code:
    @fenetre_exemple.x = 200
    position verticale
    Code:
    @fenetre_exemple.y = 248

    Largeur de la fenetre:
    Code:
    @fenetre_exemple.width = 401
    Hauteur de la fenetre:
    Code:
    @fenetre_exemple.height = 168

    Opacité du contour de la fenetre (.../255):
    Code:
    @fenetre_exemple.opacity = 210
    Opacité du fond de la fenetre (.../255):
    Code:
    @fenetre_exemple.back_opacity = 175
    Opacité du contenu de la fenetre (.../255):
    Code:
    @fenetre_exemple.contents_opacity = 132
    Sans windowskin:
    Code:
    @fenetre_exemple.windowskin = nil

    Fenetre visible ou non:
    Code:
    @fenetre_exemple.visible = false # ou "true"

Voila! Une fois que vous avez concocté votre fenetre: :content:

La mise a jour de la scene:

Code:
Graphics.transition
Pour eviter que la scene arrive trop brusquement lors de l'appel

Une boucle de mise a jour:
Code:
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
    loop do : debut de la boucle
    Graphics.update : mise a jour des objets utilisés
    Input.update : mise a jour des touches (C, B...)
    update : la on met a jour toute cette scene
    if $scene != self : si une scene est appelee
    break : on arrete cette scene
    end : on ferme la condition (if)
    end : et on ferme la boucle


fondu si la scene est quittee:
Code:
Graphics.freeze

et la on eleve tout
Code:
@fenetre_exemple.dispose
on supprime la fenetre de choix:
Code:
@n_importe_quoi.dispose
et si on a mit un fond:
Code:
@sprite.dispose

et on ferme la definition def main:
Code:
end

vous vous souvenez du petit mot tout seul: "update" dans la boucle de mise a jour ?
et bien il sert a "aller" vers cette definition:
Code:
def update

on met a jour les differentes fenetres:
Code:
@fenetre_exemple.update
la fenetre de choix:
Code:
@n_importe_quoi.update
et les autres, si vous les avez utilisées:
Code:
@sprite.update

Bon, maintenant nous allons nous attaquer aux choix!
Code:
if Input.trigger?(Input::B)
Si la touche Echap est pressée...
jouer le son "annuler":
Code:
$game_system.se_play($data_system.cancel_se)
et revenir a la map (a la scene_map):
Code:
$scene = Scene_Map.new
et on ferme:
Code:
end

Si la touche valider (espace) est pressée
Code:
if Input.trigger?(Input::C)

Code:
case @n_importe_guoi.index
on a defini les choix

dans le premier choix:
Code:
when 0

appel d'une scene :
Code:
$scene = Scene_Objets.new
(a creer Laughing )

dans le deuxieme choix
Code:
when 1

appel d'une scene :
Code:
$scene = Scene_Statut.new

dans le dernier choix
Code:
when 2

appel d'une scene :
Code:
$scene = Scene_Map.new
pour revenir a la map

on ferme:
    la condition "si la touche..."
    Code:
    end
    la def update:
    Code:
    end
    et la classe Scene_Exemple
    Code:
    end

Et voila

Pour appeler cette scene, creez un event
mettez appel d'un script
et mettez:
Code:
$scene = Scene_Exemple.new

Ah oui, pendant que j'y pense, pensez a mettre des commentaires dans vos scripts, comme ca:
Code:
Graphics.update  #mises a jour des objets utilisés



bonus le recapitulatif du script:
Code:
class Scene_Exemple
def main
@sprite = Spriteset_Map.new
s1 = "Objets"
s2 = "Status"
s3 = "Sortir"
@n_importe_quoi = Window_Command.new(160, [s1, s2, s3])
@fenetre_exemple = Window_Gold.new
@fenetre_exemple.x = 200
@fenetre_exemple.y = 248
@fenetre_exemple.width = 401
@fenetre_exemple.height = 168
@fenetre_exemple.windowskin = nil
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@fenetre_exemple.dispose
@n_importe_quoi.dispose
@sprite.dispose
end

def update
@fenetre_exemple.update
@n_importe_quoi.update
@sprite.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
case @n_importe_quoi.index
when 0
$scene = Scene_Objets.new
when 1
$scene = Scene_Statut.new
when 2
$scene = Scene_Map.new
end
end
end

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://rpgmakerxp.frbb.net
 
Créer une scene
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» LA SCENE GORE DU MOIS
» SGU "Air" 1x01-02-03 [SPOILERS!]
» Est-ce que Haldir existe? O_o
» Yvon Zap-Zap remonte en scene pour defendre le mandat de Preval.
» ? Juste une envie d'oublier ... [ Libre ]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
rpgmakerxp.frbb.net :: Les Tutoriaux :: Les Tutoriaux :: Apprendre le Ruby-
Sauter vers: