AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 Récupération et modification du nom de sprite[RESOLUE]

Aller en bas 
4 participants
AuteurMessage
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyDim 5 Fév 2012 - 23:32

Bonsoir, bonjour.

fleche_d Question : Comment récupérer le nom d'un objet, y ajouter un mot, et le comparer au sprite?

fleche_d 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
        }
    }

fleche_d 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.

Le CBNA


Dernière édition par Caohimin le Lun 6 Fév 2012 - 20:05, édité 1 fois
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


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.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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.

Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


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.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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.

Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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 fleche_d joueur_spr1,joueur_spr2...
Enemi fleche_d enemi_spr1,enemi_spr2...

Et si l'utilisateur a besoin de nommer son objet autrement pour X raison :
Truc_muche_chose fleche_d 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.
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 6 Fév 2012 - 13:11

Je vais plancher dessus, si je trouve je partagerait.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 6 Fév 2012 - 14:27

execute_string(), mais attention, c'est lourd.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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!
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


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.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 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
}
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 6 Fév 2012 - 20:56

Bien joué , merci d'avoir partagé le code Wink
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 6 Fév 2012 - 21:32

Oh nice, je ne connaissais pas ces fonctions (7.0 ?)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyLun 6 Fév 2012 - 22:16

fleche_d D-z fleche_g
GM 8.0 pro (cracked) je la test avant d'acheter.

fleche_d Pixel-boy fleche_g
Il m'en a donner du fil a retordre ce script, mais 10 bonne heure, et le voilà.

fleche_d Caly fleche_g
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!

fleche_d 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?
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyMar 7 Fév 2012 - 0:04

Je suis graphiste gnii
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyMar 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.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyMar 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.
Revenir en haut Aller en bas
Pixel-boy
Utilisateur confirmé: Rang *
Pixel-boy


Messages : 270

Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] EmptyMar 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.
Revenir en haut Aller en bas
http://leblogtwoplayers.blogspot.fr/
Contenu sponsorisé





Récupération et modification du nom de sprite[RESOLUE] Empty
MessageSujet: Re: Récupération et modification du nom de sprite[RESOLUE]   Récupération et modification du nom de sprite[RESOLUE] Empty

Revenir en haut Aller en bas
 
Récupération et modification du nom de sprite[RESOLUE]
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec la modification d'un sprite
» récupération de variable
» Modification d'héritage.
» créer un sprite à partir d'un autre sprite
» [Résolu] Récupération d'un texte saisi

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: