Créer et manipuler des objets
Page 1 sur 1 • Partagez
Créer et manipuler des objets
Programmer sur Script
Créer et manipuler des objets
Créer et manipuler des objets
Un objet, qu'est ce que c'est? C'est surement la première question qui vous est passé par la tête. Dans la vie de tous les jours, nous savons très bien définir ce qu'est un objet, mais en programmation, cette notion devient trouble.
Rassurez-vous, la différence n'est pas très grande. Je vais cependant quand même vous détailler cette explication avec des illustrations.
Concrètement, un objet c'est quoi?
Ca peut être des voitures, des tables, des boites, un peu de tout en fait.
En programmation, toute entité qui sont créé à partir d'un modèle est un objet.
C'est encore très abstrait pour vous mais ces images vont vous aider à comprendre.
Vous souhaitez afficher plusieurs fois cette entité dans votre programme. Au lieu de copier coller des dixaines de fois le code d'une seule entité, vous allez pouvoir le ranger dans un objet, et dessiner des copies de ce même objet sur l'écran, avec des paramètres propre à chaque copie (coordonnée, sprite, vitesse de déplacement, angle de déplacement, etc...).
- Pour les personnes ayant déjà utilisé des objets dans d'autres langages de programmation:
Si vous avez programmé en C++ ou autre langage contenant des objets, vous savez surement que les variables contenus dans un objet ne sont pas accessibles dehors de l'objet. Ce n'est pas le cas sur Script, toute variable est accessible partout dans le code de votre programme.
Pour comprendre ces fonctions, vous aurez besoin de savoir maîtriser les listes.
Les listes sont des tableaux très particuliers, puisqu'ils fonctionnent un peu comme une liste d'attente. Si on supprime la valeur 2, la valeur 4 devient la valeur 3, et la valeur 3 devient la valeur 2.
L'utilisation de listes va nous être très utile pour créer des objets.
Pour vous faire aborder un aspect pratique des listes, sans rester trop dans l'aspect théorique, je vous propose de les étudier au cours de ce chapitre sur les objets.
Si vous souhaitez utiliser les listes dans un contexte différent, vous pouvez consulter la documentation de Script qui vous renseignera sur l'utilisation de chaque fonction sur les listes.
Nous allons donc créer chaque fonction une par une en étudiant son fonctionnement.
Pour commencer, comme les objets utilisent des listes, nous allons voir comment créer et supprimer une liste.
Nous allons créer une liste par paramètre. Je rappelle que les paramètres des objets sont les informations modifiables qui les rendent différents des autres objets (les coordonnées, l'apparence, l'angle, le déplacement, etc...).
La création des listes se fait au début du programme, c'est à dire dans l'event_start
(merci de faire les manipulations en même temps que moi afin de garantir une meilleure compréhension du cours)
- Code:
if event_start()
{
obj_x = ds_list_create();
obj_y = ds_list_create();
obj_txt = ds_list_create();
}
Dans cet exemple, les objets n'auront que trois paramètres. Les coordonnées x et y de l'objet et un texte.
La suppression de listes s'effectue à la fin du programme, dans l'event_end
- Code:
if event_end()
{
ds_list_destroy(obj_x);
ds_list_destroy(obj_y);
ds_list_destroy(obj_txt);
}
Nous sommes maintenant prêt à créer les différentes fonctions qui manipuleront ces objets que voici:
- create_object
- delete_object
- object_set
- object_get
- draw_object
Je vous décris le rôle qu'aura chacune de ces fonctions.
- create_object:
Créer un nouvel objet
- delete_object:
Supprimer un objet
- object_set:
Modifier un paramètre d'un objet
- object_get:
Obtenir un paramètre d'un objet
- draw_object:
Actualiser et dessiner un objet
Créez donc la première fonction, la fonction "create_object".
Rappel: Créer et exécuter vos propres fonctions
Cette fonction servira à créer un objet et l'ajouter aux listes. Pour faire cela, la fonction ds_list_add(liste,valeur); permet d'ajouter une nouvelle valeur à la suite d'une liste.
La fonction create_object contiendra alors le code suivant:
- Code:
ds_list_add(obj_x, argument0);
ds_list_add(obj_y, argument1);
ds_list_add(obj_txt, argument2);
la fonction create_object s'utilisera donc comme ceci:
- Code:
function("create_object", x, y, "texte");
Pour supprimer un objet, c'est un peu le même principe, il s'agit de la fonction delete_object.
La fonction s'utilise comme ceci:
- Code:
function("delete_object", id);
- Code:
ds_list_delete(obj_x, argument0);
ds_list_delete(obj_y, argument0);
ds_list_delete(obj_txt, argument0);
Nous allons maintenant créer la fonction object_set, qui permet de modifier la valeur d'un paramètre d'un objet.
Pour cela, nous allons utiliser la fonction ds_list_replace(liste, id, valeur); qui remplace la valeur d'identifiant spécifié par la valeur donnée dans la liste choisi.
Le code de cette fonction sera le suivant:
- Code:
ds_list_replace(argument1, argument0, argument2);
- Code:
function("object_set", id, paramètre, valeur);
Exemple:
- Code:
function("object_set", 0, objet_txt, "Salut");
La fonction object_get servira à obtenir la valeur d'un paramètre d'un objet.
Son code:
- Code:
return ds_list_find_value(argument1, argument0);
- Code:
variable = function("object_get", id, paramètre);
Il reste plus qu'une fonction à créer avant de pouvoir créer et manipuler les objets, la fonction draw_object. Cette fonction va permettre d'actualiser les objets ainsi que de les dessiner.
Nous allons avoir besoin de la fonction ds_list_size(liste); qui retourne le nombre de valeurs contenu dans une liste.
Voici le code de la fonction draw_object:
- Code:
// Execute le code pour chaque identifiant d'objet
for (i=0; i<ds_list_size(obj_x); i+=1)
{
// Met les informations de l'objet dans des variables temporaires
x_temp = function("object_get", i, obj_x);
y_temp = function("object_get", i, obj_y);
txt_temp = function("object_get", i, obj_txt);
// Modifie les informations de l'objet (désolé, j'ai pas d'autre idée de modification plus intéressante graphiquement)
y_temp += 1;
// Sauvegarde les modifications
function("object_set", i, obj_x, x_temp);
function("object_set", i, obj_y, y_temp);
function("object_set", i, obj_txt, txt_temp);
// Dessine l'objet
draw_text(x_temp,y_temp,txt_temp);
// Suppression de l'objet s'il quitte la zone de l'écran (trop d'objets fait laguer)
if (y_temp > room_height)
{
function("delete_object", i);
// Comme cet identifiant est supprimé, l'identifiant doit rester le même lors de la prochaine exécution de la boucle "for"
i -= 1;
}
}
Voila, je vous ai mis des commentaires dans le code pour vous simplifier sa compréhension.
Mettons maintenant l'ensemble de ces codes en pratique dans le fichier program.script
Voici le code de votre program.script:
- Code:
if event_start()
{
program_name = "Script _ Exemple création et utilisation d'objets";
obj_x=ds_list_create();
obj_y=ds_list_create();
obj_txt=ds_list_create();
}
if mouse_check_button_pressed(mb_left)
function("create_object", mouse_x,mouse_y, get_string("Entre un texte ici:", "Texte"));
function("draw_object");
// Et pour le fun, on va afficher le nombre d'objets dans le coin de la fenêtre
draw_text(10, 10, "Nombre d'objets: " + string(ds_list_size(obj_x)));
if event_end()
{
ds_list_destroy(obj_x);
ds_list_destroy(obj_y);
ds_list_destroy(obj_txt);
}
Et voila. Un jeu utilisant des objets personnalisables devient très facile à créer. Le code du fichier program.script est très simple à comprendre et ne fait que 25 lignes.
Vous pouvez utiliser des objets pour:
- Créer des balles tirées par une arme
- Créer des personnages avec déplacements et collisions
- Créer un tchat
- Créer une liste de joueurs sur un serveur de jeu multijoueur
- Créer des objets en tout genre, comme par exemple des murs
etc...
Voici quelques idées de nouveaux paramètres à ajouter:
- x
- y
- sprite
- angle
- vitesse
- nom
- code
- couleur
etc...
Si vous avez des questions ou si vous rencontrez des problèmes en utilisant des objets dans vos projets, n'hésitez pas à poser vos question.
Et n'hésitez pas à commenter le tutoriel si celui-ci vous a plu. Merci
draw_2D erreur
Très bon tuto mais j'ai une erreur dans le résultat final:
COMPILATION ERROR in string to be executed
Error in code at line 18:
draw_2D();
^
at position 1: Unknown function or script: draw_2D
COMPILATION ERROR in string to be executed
Error in code at line 18:
draw_2D();
^
at position 1: Unknown function or script: draw_2D
BaptisteOuille- Peu actif
- Messages : 13
Date d'inscription : 06/01/2015
Age : 28
Localisation : Tournai
Projet(s)
Niveau de connaissances dans Script: Moyen
Spécialité: Pas vraiment de spécialité
Re: Créer et manipuler des objets
Le tutoriel n'était pas à jour, la fonction draw_2D(); n'existe plus.
T'as juste à retirer cette ligne de ton code.
(Au passage, j'ai corrigé autre chose, les fonctions fonction(); sont remplacées par function(); )
T'as juste à retirer cette ligne de ton code.
(Au passage, j'ai corrigé autre chose, les fonctions fonction(); sont remplacées par function(); )
Re: Créer et manipuler des objets
Et pourquoi dans le code de la fonction create_object on a les arguments 0, 1, 2 mais que dans le code de la fonction delete_object on n'a que l'argument 0 ?
BaptisteOuille- Peu actif
- Messages : 13
Date d'inscription : 06/01/2015
Age : 28
Localisation : Tournai
Projet(s)
Niveau de connaissances dans Script: Moyen
Spécialité: Pas vraiment de spécialité
Re: Créer et manipuler des objets
La fonction create_object sert à créer un nouvel objet (et à le stocker quand une liste).
Lors de la création d'un nouvel objet, celui-ci à besoin de paramètres pour être unique, différent des autres objets déjà existants. Ces paramètres sont les coordonnées x et y ainsi qu'un texte.
L'objet sera donc matérialisé par un texte écrit à ces coordonnées particulières de l'écran.
Lors de la suppression d'un objet (avec la fonction delete_object), la fonction n'a pas besoin qu'on lui précise les coordonnées ainsi que le texte de l'objet pour pouvoir le supprimer.
Les objets sont stockés dans une liste, donc sont numérotés et accessibles via leur identifiant.
Pour supprimer un objet, il suffit donc de lui passer qu'un seul paramètre, l'identifiant de l'objet à supprimer.
Voilou
Lors de la création d'un nouvel objet, celui-ci à besoin de paramètres pour être unique, différent des autres objets déjà existants. Ces paramètres sont les coordonnées x et y ainsi qu'un texte.
L'objet sera donc matérialisé par un texte écrit à ces coordonnées particulières de l'écran.
Lors de la suppression d'un objet (avec la fonction delete_object), la fonction n'a pas besoin qu'on lui précise les coordonnées ainsi que le texte de l'objet pour pouvoir le supprimer.
Les objets sont stockés dans une liste, donc sont numérotés et accessibles via leur identifiant.
Pour supprimer un objet, il suffit donc de lui passer qu'un seul paramètre, l'identifiant de l'objet à supprimer.
Voilou
Re: Créer et manipuler des objets
D'accord merci
BaptisteOuille- Peu actif
- Messages : 13
Date d'inscription : 06/01/2015
Age : 28
Localisation : Tournai
Projet(s)
Niveau de connaissances dans Script: Moyen
Spécialité: Pas vraiment de spécialité
Sujets similaires
» Créer un nouveau projet Script vierge
» Objets sur Script: Méthode des listes: Partie 2: Michael Bay et Interaction sexuelle
» Comment créer un plugin
» Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite
» Créer et exécuter vos propres fonctions
» Objets sur Script: Méthode des listes: Partie 2: Michael Bay et Interaction sexuelle
» Comment créer un plugin
» Objets sur Script: Méthode des listes: Partie-1: La genèse, le Périple et le sandwich à la bite
» Créer et exécuter vos propres fonctions
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|