Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -35%
-35% sur la machine à café Expresso ...
Voir le deal
359.99 €

 

 Problème de syntaxe avec IF

Aller en bas 
3 participants
AuteurMessage
actaria
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
actaria


Nombre de messages : 14

Date d'inscription : 04/06/2022


Problème de syntaxe avec IF Empty
MessageSujet: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptySam 23 Juil 2022 - 7:59

Bonjour,

Je bloque malheureusement sur la syntaxe avec la commande IF

Voici le code très court:

Code:
function oObject1_Interact()
{
if (oObject1.Visible = true) {
player.Say("La porte est vérrouillée");

}

J'ai l'erreur suivante:
Failed to save room room10.crm; details below
room10.asc(77): Error (line 77): Parse error in expr near 'oObject1'

L'objet oObjet1 existe bien il s'agit de la porte en position fermée j'avoue que je suis un peu perdue.

Si quelqu'un peut me donner un coup de main ce serait vraiment très gentil, un grand merci par avance
Revenir en haut Aller en bas
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptySam 23 Juil 2022 - 8:32

Attention sur les opérateurs, le signe = permet d'assigner une valeur. Pour vérifier une valeur il faut utiliser le signe doublé ==

Ça donne donc ça :

Code:
function oObject1_Interact()
{
if (oObject1.Visible == true) {
player.Say("La porte est vérrouillée");
}

Attention aussi de bien fermer toutes les accolades, mais ici je suppose que ça vient du copier/coller.

Plus d'infos sur les opérateurs : http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php?id=mots-cles#operateurs

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
actaria
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
actaria


Nombre de messages : 14

Date d'inscription : 04/06/2022


Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptySam 23 Juil 2022 - 8:53

Bonjour et merci beaucoup  pour ton aide donc ça venait bien du fait que j'ai utilisé = au lieu de ==
Concernant l'accolade mon erreur vient du fait que j'ai laissé une ligne vide avant de fermer ?

il y a visiblement quelque chose que je n'ai pas compris avec les accolades car je n'ai plus l'erreur précédente mais une nouvelle erreur par rapport à l'ouverture de la fonction suivante dans le code
qui fonctionnait bien avant cet ajout

La fonction qui est à la suite ligne 81 est:
Code:

function oObject1_UseInv()

Et maintenant j'ai cette erreur qui m'indique qu'il doit manquer une accolade fermante mais je ne comprends pas où.

Failed to save room room10.crm; details below
room10.asc(81): Error (line 81): Nested functions not supported (you may have forgotten a closing brace)

voici le code plus complet:
Code:

if (oObject1.Visible == true) {
player.Say("La porte est verrouillée");
}


function oObject1_UseInv()
{
  cChar1.Walk(872, 712, eBlock);
cChar1.FaceDirection(eDirectionUp);
if(player.ActiveInventory == iclechambre) {
  
    door1.Play(eAudioPriorityNormal, eOnce);
player.Say("j'ouvre la porte");
oObject1.Visible = false;
porte_ouverte.Visible = true;

}
}

voilà tout fonctionnait bien et je voulais juste ajouter que si on clique sur la porte et que celle-ci à déjà été ouverte il n'y ai plus le message " cette porte est verrouilée"
Revenir en haut Aller en bas
actaria
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
actaria


Nombre de messages : 14

Date d'inscription : 04/06/2022


Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptySam 23 Juil 2022 - 9:05

Bon alors bonne nouvelle j'ai réussi à placer l'accolade comme il faut
Merci une nouvelle fois pour ton aide je vais pouvoir avancer sourire
Revenir en haut Aller en bas
valoulef
Délégué de la tasse bleue
Délégué de la tasse bleue
valoulef


Nombre de messages : 1791

Age : 35

Localisation : Condate

Date d'inscription : 01/08/2011


Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptySam 23 Juil 2022 - 18:45

Je faisais la remarque car dans ton premier exemple il y avait deux accolades ouvrantes et seulement une fermante (mais l'accolade fermante se situait probablement plus loin dans ton code). Et en effet dans ton second message il y a un "if" qui soit se ballade en dehors de toute fonction (ce qui, me semble-t-il n'est jamais possible, ou en tout cas c'est pas quelque chose à faire), soit était dans une fonction qui n'était pas fermée.

Mais tant mieux si tu as trouvé. clin d'oeil

_________________
Vous êtes déjà allés à Condate ? Ils ont un petit vin qui à un goût de pierre à catapulte. C'est Toutatis en culotte de velours si j'ose m'exprimer ainsi.
Revenir en haut Aller en bas
Clique
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue
Clique


Nombre de messages : 106

Date d'inscription : 11/05/2022


Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF EmptyDim 14 Aoû 2022 - 12:58

Pour les accolades, rien n'y oblige mais le mieux c'est de toujours correctement indenter ton code.
C'est à dire :
Après avoir ouvert une accolades, tu ajoute une tabulation au début de chaque ligne. Beaucoup de logiciels le font automatiquement.

Code:
if (oObject1.Visible == true) {
   player.Say("La porte est verrouillée");
}


function oObject1_UseInv() {
   cChar1.Walk(872, 712, eBlock);
   cChar1.FaceDirection(eDirectionUp);
   
   if(player.ActiveInventory == iclechambre) {
      door1.Play(eAudioPriorityNormal, eOnce);
      player.Say("j'ouvre la porte");
      oObject1.Visible = false;
      porte_ouverte.Visible = true;
   }
}

Tu maintiens cette indentation pour chaque ligne, jusqu'à ce que :

1) Tu ouvres une seconde accolade : et donc ajoute une tabulation en début de ligne en plus des autres.
2) Tu referme une accolade, et donc tu réduis l'indentation d'une tabulation.

Ainsi tu peux plus facilement d'y retrouver entre ce qui est ouvert/fermé, quelle parties du code est dans quoi etc.

C'est une source d'erreur/bug très-très récurrente, comme l'oubli de mettre un point virgule en fin de ligne.

Après chacun a sa manière de faire. Certains utilisent 2 espaces à la place d'une tabulation :

Code:
if(true) {
  // 2 espaces
}

if(false) {
   // 1 tabulation
}

Ou bien organisent différemment les accolades :
Code:
if(true) {
   // Une façon
}

if(false)
{
   // Une autre façon
}

Pour les imbrications :

Code:
if(true) {
   // Un truc
   if(false) {
      // Un autre truc
   }
}

if(true) {
   // Un truc
   if(false) {
      // Un autre truc
}   } // <-- façon plus compacte, mais risque de confusion dans l'ordre si y rajoute des choses

L'important c'est de choisir la façon qui te semble la plus lisible et aisée à taper. Puis de s'y tenir.

Rien n'interdit de coder salement, tant que ça marche, tant que ça va vite, tant qu'on s'y retrouve...
Mais si tu rencontre un bug, ou une erreur de syntaxe, le réflexe n°1 c'est d'aller à la ligne rapportée par le message d'erreur et tout mettre au propre.

Quand on récupère des bouts de codes/exemples à droite à gauche, ils sont souvent organisés d'une autre façon que la sienne. Après un premier test (voir si ça marche), prendre le temps de les reformater à sa façon est un bon moyen de s'approprier la chose, et comprendre comment ce code fonctionne.
Revenir en haut Aller en bas
Contenu sponsorisé





Problème de syntaxe avec IF Empty
MessageSujet: Re: Problème de syntaxe avec IF   Problème de syntaxe avec IF Empty

Revenir en haut Aller en bas
 
Problème de syntaxe avec IF
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec ResetRoom
» probleme avec le fichier ac2game.dta
» Problême avec les collisions ?????
» problème avec l'interface
» Probleme avec set-globalint

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: