Bien, voici la première ressource que je présente, un module, j'espère qu'il vous sera utile, car à moi il l'est.
Lien :http://admin.no.uchi.free.fr/Module_Graphique.scmPrésentation :Ce module a pour but de faciliter la gestion des
Raws.
AGS permet de modifier le fond d'une Room à l'aide de différentes commandes qui commencent habituellement par ce mot-clé :
Raw.
Vous pouvez "dessiner par-dessus" le background avec des traits, des rectangles, etc. et même des
sprites !
C'est là que ça devient intéressant. Supposez que vous avez une animation à faire où vous devez déplacer des images en un temps donné, les rendre transparentes ou encore faire des effets de zoom/dézoom.
Si vous ne désirez pas faire appel à un fichier d'animation extérieur, vous devrez utiliser les commandes
Raws qui permettent de faire ces effets.
Bien, seulement, pour
animer il faut faire
image par image !
Mes premiers essais ne furent pas très concluant : après m'être longuement pris la tête pour faire des calculs de déplacements et donc ajouté plein de lignes de codes pour afficher image par image, je me rendais compte que l'instruction
Wait(N); "gelait" le jeu.
La
solution était donc de faire un
moteur, que je mets ici à votre disposition.
Principe :Ce module fonctionne par système de
Calques (en anglais "
Layers").
Chaque calque possède une image créée à partir d'une
Sprite que vous lui indiquez. Cette image est modelée selon vos souhaits puis affichée à l'écran par dessus le background, sans altérer la sprite orignale.
Les calques sont numérotés et sont affiché dans l'ordre croissant : l'image contenue dans le calque
1 sera affichée
sous l'image du calque
2.
ATTENTION : Puisque ces images sont dessinées directement par dessus le background, vos objets et personnages seront affichés par dessus ces images.
Note : Par défaut le nombre de calques est limité à
20, de 0 (pour le premier) à 19 (le dernier donc). Le moteur est ainsi fait que plus le nombre de calques est important, plus le code a à traiter d'information et est donc susceptible de ralentir le jeu.
Utilisation :Venons-en aux instructions.
-
Affimg(SPRITE,CALQUE,X,Y,ZOOM (optionnel)
,TRANSPARENCE (optionnel)
) :
Remplit le calque numéro
CALQUE avec la sprite numéro
SPRITE puis affiche l'image aux coordonnées x :
X ; y :
Y à partir du centre de l'image, dans un coefficient de zoom
ZOOM% avec une transparence de
TRANSPARENCE% .
Exemples : - Code:
-
Affimg(1,0,160,120);
Remplira le calque
0 avec l'image de la sprite
1 et l'affichera au centre de l'écran (
160;120).
- Code:
-
Affimg(2,1,160,120,200,75);
Remplira le calque
1 avec l'image de la sprite
2 dont la taille sera doublée (
200 %) avec une transparence de
75 %.
Note : Si le calque était utilisé par une autre image, celle-ci sera écrasée par la nouvelle.
-
Depimg(CALQUE,X,Y,CYCLES,ZOOM (optionnel)
,TRANSPARENCE (optionnel)
) :
Déplace l'image du calque numéro
CALQUE aux coordonnées
X;
Y en
CYCLES cycles (1 cycle = 25ms) en rendant progressivement l'image à
ZOOM% de sa taille (si non spécifié, le zoom d'affichage est gardé) et à une transparence de
TRANSPARENCE% (si non spécifiée, la transparence d'affichage est gardée).
Exemples : - Code:
-
Depimg(0,180,140,40);
Déplacera l'image du calque
0 aux coordonnées 180;140 (à partir du centre de l'image) en 1 seconde (=
40 cycles)
- Code:
-
Depimg(0,180,140,40,200,75);
Fera de même mais cette fois en
doublant la taille de l'image et en la rendant tranparente à
75%
Note : Le reste du script continue à être éxécuté durant le déplacement de l'image, si vous souhaitez attendre la fin pour poursuivre votre code, placer un
Wait(CYCLES); après l'instruction.
-
Supimg(CALQUE); :
Stop l'affichage de l'image du calque à l'écran.
Exemple : - Code:
-
Supimg(0);
Cessera d'afficher l'image contenue dans le calque
0.
Vous devrez refaire une instruction
Affimg() pour réutiliser ce calque, et donc redonner tous les attributs nécessaires.
Commentaires :
- Vous pouvez cesser l'éxécution du moteur dans votre code en entrant l'instruction ENTERED = false;. Si vous désirez le désactiver dans une Room, il faudra placer cette instruction dans l'événement "Player enters room (before fadein)". Pour réactiver le moteur, il suffit de taper l'instruction ENTERED = true;.
- ATTENTION :Le moteur utilise la commande RawSaveScreen(); lors de l'entrée dans une room, et s'en sert pour restaurer le fond d'écran original à chaque cycle. Dès lors, l'utilisation de la commande RawSaveScreen(); aura pour effet de "changer" le Background originel. Pour remédier à ce problème, vous pouvez toujours utiliser la variable ENTERED comme décrit juste au-dessus.
- Vous pouvez permuter l'affichage centré/sur le bord en éditant le script en ajoutant ou supprimant des // devant les instructions indiquée à ces effets.
- Je n'ai pas mis de commande pour l'angle d'affichage de l'image, si vous en avez besoin je le ferai, prévenez-moi ici, en PM ou par mail en précisant la raison.
Voilà, j'espère que ça vous servira, Ga !