[RÉSOLU] place_free() d'un objet precis identifié avec son id. Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le deal à ne pas rater :
Display 24 boosters Star Wars Unlimited – Crépuscule de la ...
Voir le deal

 

 [RÉSOLU] place_free() d'un objet precis identifié avec son id.

Aller en bas 
2 participants
AuteurMessage
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ÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 21:54

Bonsoir,

Je ne connais pas très bien le gml, et ça fait moins d'une semaine que je code dans ce langage.

Je n'aime pas trop coder directement dans mes objets mais le faire dans des fonctions.
J'ai donc bien compris que les fonctions se créées dans "script".

Donc voici mon soucis, j’appelle une fonction dans mon objet "obj_hero" mais la fonction manipule l'objet "obj_block_magique".

Mon soucis est de savoir si j'ai la place pour créer mon "block".

Voici ma fonction:
Code:

// S'il y a deja un block dans la room.
if(instance_number(obj_block_magique) >= 1)
    //on detruit le block
    with obj_block_magique instance_destroy();

// Auqu'un block n'est dans la room.
else
{
        // On creer un block et on récupére son ID
        block = instance_create(mouse_x,mouse_y,obj_block_magique);
       
        // Si le block touche quelque chose de solid on le suprime.   
        if( place_free(block.x,block.y) )
            // On supprime le block.
            with obj_block_magique instance_destroy();
}

Je pense que c'est juste une histoire de syntaxe que je ne connais pas mais impossible de trouver une réponse sur les source d'infos que j'ai consulté.

Un grand merci d'avance.


Dernière édition par Caly le Mar 13 Sep 2011 - 23:07, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[RÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 22:00

Pourquoi if( place_free(block.x,block.y) ) ? Ça c'est plutot le bloc qui touche rien de solide :p

Met plutot
if( !place_free(block.x,block.y) )

En tout cas ça va, pour un 'débutant' gml t'as l'air de bien t'y faire a GM gnii
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ÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 22:20

Merci pour la réponse onilink_.

Oui un petit oublis pour la négation.
Mais je ne comprend pas trop le résultat.

Sur
if( place_free(block.x,block.y) ) je peut créer le "block" où je veux et sur un
if( !place_free(block.x,block.y) ) je ne peut créer aucun "block".

Je ne comprend pas.

On ne peut pas faire quelque chose de ce genre "block.place_free()" ?
Car je pense que le problème viens de là, en ne marquant que "place_free" on ne sais pas trop sur qu'elle instance on exécute la fonction vus que j’appelle le script à partir d'un autre objet.

Nb: le GML étant un langage orienté objet et ressemblant au C ça va je m'en sort assez facilement faut juste que j’apprenne les variables/global/constantes/fonctions etc du langage, avec le temps ça viendra, enfin je l’espère...
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[RÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 22:51

En fait on gml on peut pas faire instance.methode()

T'est obligé de faire
with(instance)
methode()

Bref pas super pratique.
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ÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 23:06

Merci onilink_ tu viens de résoudre mon problème Smile.

Je n'avais pas trop compris à quoi servait "with" en gros c'est un pointeur d'objet, c'est assez bien à savoir vus qu'en ne travaillant que sur des fonctions je vais en avoir grandement besoin.

Parcontre
block = instance_create(mouse_x,mouse_y,obj_block_magique);
fait que block est une variable inconue, mais bon je verais ça plus tard quand j'optimiserais mon code, là pour le moment ça fonctionne c'est le principal.

Voici le code final:
Code:

// S'il y a deja un block dans la room.
if(instance_number(obj_block_magique) >= 1)
    //on detruit le block
    with obj_block_magique instance_destroy();

// Auqu'un block n'est dans la room.
else
{
        // On creer un block
      instance_create(mouse_x,mouse_y,obj_block_magique);
       
        // Si le block touche quelque chose de solid on le suprime.   
        with obj_block_magique if( !place_free(x,y) )
            // On supprime le block.
            instance_destroy();
}

Un grand merci pour ton aide onilink_
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[RÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 23:11

A ton service Wink

Et si tu veux récupérer la variable block depuis le with tu peut utiliser le mot clé other :
other.block
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ÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. EmptyMar 13 Sep 2011 - 23:12

Bha, encore merci; tu viens encore de résoudre mon problème, je vais aller lire la doc sur "other".
En tout cas merci. Je vais pouvoir optimiser le code tout de suite.
Revenir en haut Aller en bas
Contenu sponsorisé





[RÉSOLU] place_free() d'un objet precis identifié avec son id. Empty
MessageSujet: Re: [RÉSOLU] place_free() d'un objet precis identifié avec son id.   [RÉSOLU] place_free() d'un objet precis identifié avec son id. Empty

Revenir en haut Aller en bas
 
[RÉSOLU] place_free() d'un objet precis identifié avec son id.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Remplacement d'objet lors d'un score précis
» [Résolu] Objet qui suis le view d'un autre objet
» état d'un objet précis
» arréter un objet en mouvement vers un point précis
» [Résolu] Timing précis

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: