| Récupération et modification du nom de sprite[RESOLUE] | |
|
|
Auteur | Message |
---|
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Récupération et modification du nom de sprite[RESOLUE] Dim 5 Fév 2012 - 23:32 | |
| Bonsoir, bonjour. Question : Comment récupérer le nom d'un objet, y ajouter un mot, et le comparer au sprite? Explication : Pour commencer, la question n'est pas explicite du tout, alors je ferait de mon mieux pour vous expliquer. Disons que j'ai l'objet "fleche", je souhaite receuillir son nom dans une variable : - Code:
-
object_get_name(fleche) Ensuite, y ajouter un bout de mot, pour le comparer a 4 sprites(qui sont "flecheHaut, flecheBas, flecheDroite, flecheGauche") : - Code:
-
nom = string(object_get_name(fleche))+"Haut" Et pour finir on impose notre condition : - Code:
-
if keyboard_check(vk_up) { nom = string(object_get_name(fleche))+"Haut" if sprite_exists(nom) { sprite_index=nom } } Problème : Soit le l'objet prend le sprite1 comme résultat, qu'importe son nom, et donc son image. Comment y remédier? Merci aux lecteur, et a ceux qui me prêterons une petite attention.
Dernière édition par Caohimin le Lun 6 Fév 2012 - 20:05, édité 1 fois |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 0:09 | |
| Gna oO what this?? Bonsoir, je n'ai pas compris ce que tu veux faire mais si tu veux attribuer un sprite à ton objet suffis de faire un "sprite_index"... Edit: je viens de comprendre ce que tu veux faire. Voici plus simple: - Code:
-
if( keyboard_check(vk_up) ) sprite_index = spr_arrowTop; else if( keyboard_check(vk_down) ) sprite_index = spr_arrowBottom; else if( keyboard_check(vk_left) ) sprite_index = spr_arrowLeft; else if( keyboard_check(vk_right) ) sprite_index = spr_arrowRight; Tu peut l'améliorer avec un switch et un script qui contrôle les touches pressées. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 4:03 | |
| Euh... Effectivement tu n'as pas compris Caly. C'est pour créer une fonction en faite, qui gérera automatiquement les animations de(s) personnage(s) joueur(s). - Code:
-
Fonction_animation(joueur) et le script se présente comme ça : - Code:
-
with(argument0) begin
if hspeed!=0 { if hspeed>1 { nom=string(objet_get_name(argument0))+"_droite_sprite" //ou aussi nom=string(argument0)+"_droite_sprite" if sprite_exists(nom) { sprite_index=nom } else { show_message("Aucun sprite nommé "+string(nom)+" n'existe.") } } }
end C'est pour que celui qui utilise la fonction, assigne comme nom d'objet (par exemple "joueur") et comme nom de sprite (le nom de l'objet + l’extension, par exemple "joueur_droite_sprite") Ensuite en Step sur l'objet "joueur", il ne lui restera qu'a mettre : - Code:
-
Fonction_animation(joueur) Et toute les animations créer par l'utilisateur s'y accorderons automatiquement. Mais je ne comprend pas, car si a la fin du code je met un : - Code:
-
show_message(nom) Il me donne la chaine qui ce trouve dans nom, qui équivaux à : joueur_droite_sprite. Le : - Code:
-
if sprite_exists(nom) Renvoie true que lorsque l'on a crée le 1er sprite du programme, et il prend lui comme sprite, quelque soit, son nom, et son image. Mais si je supprime ce sprite et en créer un autre, identique, cette fois si il ne renvoie plus true, mais false, et m'affiche le message d'erreur (qui au passage sert d'aide si l'on a oublier ou si on a mal écrit le nom du sprite, ou de l'objet) Je me creuse la tête pour trouver, mais sans résultat. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 9:09 | |
| Ca doit etre pour un cas particulier car je ne vois pas trop l'utulité, mais tu as l'air de savoir coder donc c'est que tu as du réflechir dessus. - Citation :
- Renvoie true que lorsque l'on a crée le 1er sprite du programme, et il prend lui comme sprite, quelque soit, son nom, et son image.
Mais si je supprime ce sprite et en créer un autre, identique, cette fois si il ne renvoie plus true, mais false, et m'affiche le message d'erreur (qui au passage sert d'aide si l'on a oublier ou si on a mal écrit le nom du sprite, ou de l'objet) Alors par contre là je peut t'expliquer. Quant on créer des sprites ils ont une ID croissante à chaque création le tout en commençant par l'id 1. D'où que le premier vaux true et les autres false. Ensuite les sprites et les objets etc sont gérés avec des ID numériques et non des chaines. Ce qui fait qu'en fait tu appels un sprite avec une chaines donc normal que ça ne fonctionne pas (je me trompe peut être là). Va falloir te débrouiller avec les ID. Et oublie pas que GM n'est pas toujours logique dans son fonctionnement et fait des truc bizarres des fois. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 11:45 | |
| Alors le but est la : Prenons l'exemple suivant : joueur (qui est un objet) Et ça flopée de sprite : joueur_saut_G joueur_saut_D joueur_marche_D joueur_marche_G joueur_court_D joueur_court_G joueur_accroupi_D joueur_accroupi_G joueur_rampe_D joueur_rampe_G joueur_arret_G joueur_arret_D joueur_arret_accroupit_D joueur_arret_accroupit_G joueur_arret_rampe_D joueur_arret_rampe_G ... Le code prendra le nom de l'objet (ici joueur) Les conditions : Si droite (joueur+(_marche_D)) changer sprite Si saute gauche (joueur+(_saut_G)) changer sprite ... Tu imagine le nombre? De plus ça permettait : D'avoir plusieurs objets avec LEURS propre sprite. Joueur joueur_spr1,joueur_spr2... Enemi enemi_spr1,enemi_spr2... Et si l'utilisateur a besoin de nommer son objet autrement pour X raison : Truc_muche_chose truc_muche_chose_spr1, truc_muche_chose_spr2... À la condition que le sprite comporte (nom de l'objet + extension(qui sert à la reconnaissance lors du calcul)) Mais essayer de récupérer son ID n'est pas une mauvaise idée Je vais essayer ça ce soir. |
|
| |
Pixel-boy Utilisateur confirmé: Rang *
Messages : 270
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 12:01 | |
| J'ai pas trop suivi mais je ne pense pas que tu sois obliger de mettre en sprite pour la gauche et un sprite pour la droite à chaque fois, un image_xscale = -1 suffit ( dsl si je suis hors sujet xD )
Edit: Je crois que j'ai compris ton problème mais je ne suis pas sur qu'il y ai une solution qui ne t'oblige pas à tout déclarer au début.
Moi dans ce genre de cas je lance une fonction au début qui créer des variables contenant le nom des sprites pour chaque objets ( avec un switch ) et ensuite t'as plus qu'à réutiliser le nom des variables dans les fonctions de déplacement.
Dernière édition par Pixel-boy le Lun 6 Fév 2012 - 12:33, édité 1 fois |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 12:27 | |
| Pixel-boy, oui tu est hors-sujet, mais ce n'est rien. - Code:
-
image-xscale Sert a modifier la taille, et le rendre = à -1, revient a faire un miroir, aucun rapport avec le la fonction de gestion des sprite par objet... Il est vrai que faire un miroir permettrait de gagner en sprite, seulement, et oui il y a toujours un mais, comme dans un zelda si il a une épée dans la main droite, et qu'il se dirige a droite, on verra son épée, puis en arrière le bouclier. en faisant : - Code:
-
image-xscale=-1 Lorsque le joueur ira à gauche, l'épée passera à gauche... Esthétiquement ce n'est pas super. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 12:40 | |
| - Pixel-boy a écrit:
Edit: Je crois que j'ai compris ton problème mais je ne suis pas sur qu'il y ai une solution qui ne t'oblige pas à tout déclarer au début.
Moi dans ce genre de cas je lance une fonction au début qui créer des variables contenant le nom des sprites pour chaque objets ( avec un switch ) et ensuite t'as plus qu'à réutiliser le nom des variables dans les fonctions de déplacement. Je comprend comment tu veux faire, mais en sachant que déclarer des variable qui possède le nom des sprite qui n'existe pas... c'est plutôt difficile |
|
| |
Pixel-boy Utilisateur confirmé: Rang *
Messages : 270
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 12:41 | |
| Ouais, si tu fais attention à ce genre de détails t'es obligé de faire un sprite pour chaque côté, en tout cas si tu trouve la solution à ton problème ça m'intéresserait de savoir comment on fait ^^
Edit: En gros il te faut une fonction qui retourne l'id d'un sprite lorsque que tu donne son nom. Je suis pas sur que ça existe mais tu peux peut-être la créer.
Dernière édition par Pixel-boy le Lun 6 Fév 2012 - 14:08, édité 2 fois |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 13:11 | |
| Je vais plancher dessus, si je trouve je partagerait. |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 14:27 | |
| execute_string(), mais attention, c'est lourd. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 20:01 | |
| Eurêka j'ai trouver! Je vais expliquer comment j'ai procéder, je voulais savoir que retournait comme valeur les sprites : - Code:
-
draw_text(10,10,joueurHaut) draw_text(10,30,joueurBas) draw_text(10,50,joueurDroite) draw_text(10,70,joueurGauche) Elle retourne un nombre (0, 1, 2, 3...) donc je sait que chaque sprite possède son "ID". Si je compare le nom de l'objet : - Code:
-
object_get_name() Avec le nom du sprite : - Code:
-
sprite_get_name() je peut savoir si ils sont identique ou non : - Code:
-
while object_get_name() != sprite_get_name() Vue comme cela la boucle est infinie, c'est donc pour cela qu'il fois lui ajouter l'extension, pour droite (_droite) pour gauche (_gauche)... etc Ça donne : - Code:
-
if keyboard_check(vk_left) { i=0 while object_get_name(argument0)+"_gauche" != sprite_get_name(i) { i+=1 if !sprite_exists(i) { show_message("Le sprite "+ object_get_name(argument0)+"Droite, n'existe pas, ou est mal orthographié") } } sprite_index=i } Evidemment la condition qui se trouve dans la boucle, avec le show_message pourra être supprimer lorsque l'utilisateur aura fini avec le script. Voila! |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 20:40 | |
| Yep bien vus. Ça venait belle est bien de ce que je t'avais expliqué. Par contre une boucle for est plus adapté dans ce cas: - Code:
-
if keyboard_check(vk_left) { for(i=0; object_get_name(argument0)+"_gauche" != sprite_get_name(i), i++) if( !sprite_exists(i) ) show_message("Le sprite "+ object_get_name(argument0)+"Droite, n'existe pas, ou est mal orthographié") sprite_index=i } |
|
| |
Pixel-boy Utilisateur confirmé: Rang *
Messages : 270
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 20:56 | |
| Bien joué , merci d'avoir partagé le code |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 21:32 | |
| Oh nice, je ne connaissais pas ces fonctions (7.0 ?) |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Lun 6 Fév 2012 - 22:16 | |
| D-z GM 8.0 pro (cracked) je la test avant d'acheter. Pixel-boy Il m'en a donner du fil a retordre ce script, mais 10 bonne heure, et le voilà. Caly J'ai mit la boucle while par question d'habitude, la for est mieux adapté c'est vrai. Et oui c'est bien ce que tu ma dit, a une chose près c'est que les ID ne commence pas à 1 mais à 0. Et pour ceux qui veulent l'utiliser, bien faites en bonne usage! Edit :Et dite moi, car ça fait une petite semaine que j'ai commencer avec Game maker, et évidemment le GML aussi, j'aimerait savoir si il y a des graphiste, des musiciens, sur le forum? |
|
| |
Pixel-boy Utilisateur confirmé: Rang *
Messages : 270
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Mar 7 Fév 2012 - 0:04 | |
| Je suis graphiste |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Mar 7 Fév 2012 - 0:27 | |
| Intéressant, tu es en plein projet en se moment? Tu as du temps libre? Si évidemment tu accepte de porter tes créations au projet. Mais je préfère prévenir, je suis très exigeant. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Mar 7 Fév 2012 - 12:36 | |
| Bonjour, Après test du script, j'ai découvert quelque problème : Lorsque les sprites se trouve dans un sous-dossier du dossier sprites, cela provoque des erreurs, et les sprites afficher ne sont pas celui demander, je suppose que les dossier on aussi une ID. Mais je peux me tromper. Et aussi étrange que cela puisse paraître le : - Code:
-
if !sprite_exists(i) Vaux true, même si le sprite a était modifier avec le bon sprite. et affiche donc le show_message, et me met le bon sprite. C'est juste pour aider, et non demander une solution a ce problème. |
|
| |
Pixel-boy Utilisateur confirmé: Rang *
Messages : 270
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] Mar 7 Fév 2012 - 12:38 | |
| J'vais pas te mentir, niveau temps libre en ce moment c'est pas l'idéal.
J'bosse sur un jeux ( pas un gros truc ) j'aurais bientôt finis, et j'aimerais bien participer à la compétition n°8, en plus j'ai pas mal de boulot pour l'école, j'passe mon bac cette d'année et faut que j'me prépare pour les concours d'entrée pour une poursuite d'études.
En gros je n''aurais pas énormément de temps à accorder à un autres projets, mais bon rien ne t'empêche de m'envoyer un mp m'expliquant ton projet, la quantité de travail à fournir et les délais. |
|
| |
Contenu sponsorisé
| Sujet: Re: Récupération et modification du nom de sprite[RESOLUE] | |
| |
|
| |
| Récupération et modification du nom de sprite[RESOLUE] | |
|