====== Si (condition) ====== //Il s’agit d’une instruction de contrôle qui dépend d’une condition. Les instructions exécutées seront différentes selon que la condition est remplie ou non.// ===== Verbes utilisables dans les conditions ===== ===== Comment écrire une condition ===== ==== Dans une routine ==== === Bloc si === si le sac se trouve ici: dire "En cherchant un peu, vous devriez trouver de quoi transporter ces pommes." sinon dire "À priori cela va être difficile de transporter ces nombreux fruits." fin si === Si rapide === Cette forme est plus simple à écrire : la condition est suivie d’une virgule '','' et d’une instruction unique. règle après aller vers la chambre: si le joueur est fatigué, dire "Vous iriez bien dormir.". fin règle === Plusieurs cas : sinonsi === Pour enchaîner plusieurs cas, intercalez une ou plusieurs branches ''sinonsi'' entre le ''si'' et le ''sinon'' final. Le moteur s’arrête à la première branche vraie. si le niveau vaut 1: dire "Débutant.". sinonsi le niveau vaut 2: dire "Confirmé.". sinon dire "Expert.". fin si [[djnc>wiki_conditions_branches|tester si / sinonsi / sinon]] ==== Dans un texte ==== dire "Vous êtes fatigué et [si le joueur est énervé]énervé[sinon]paisible[fin si]." ===== Désigner le sujet par sa position ===== Quand plusieurs objets se ressemblent, on peut préciser **lequel** tester d’après **où il se trouve**, avec ''situé(e)(s) (dans|sur|sous) '' (et ''… ici''). Le locateur choisit le sujet, puis le verbe (''est'', ''contient''…) teste cet objet précis : si la clé située sur la table est rouge, dire "C'est la bonne clé.". si le sol situé dans la cuisine est sale, dire "Le carrelage est gras.". si la torche située ici est allumée, dire "La salle est éclairée.". C’est particulièrement utile avec un [[reference:definitions:fonds|fond « propre à chaque lieu »]], dont chaque lieu possède sa propre instance — voir un exemple jouable sur la [[reference:definitions:fonds#dans_une_condition|page des fonds]]. Dans une condition, utilisez **uniquement** la forme ''situé'' (''la clé **située** sur la table''). La forme ''qui se trouve'' n’y est **pas** reconnue : elle entre en conflit avec le verbe « se trouver » (test de position) et la condition serait silencieusement fausse. Ne confondez pas les deux usages : ''si le joueur **se trouve** dans la tour'' //teste une position// (le joueur est-il là ?), tandis que ''si le sol **situé** dans la cuisine est sale'' //choisit une instance puis teste son état//. Pour le test de position, voir [[reference:instructions:controle:si:verbes:se_trouver|se trouver]]. ===== Comparer un nombre ===== Pour un compteur ou une valeur numérique : ^ Forme ^ Vraie quand… ^ | ''vaut N'' | la valeur est égale à N | | ''atteint N'' | la valeur est supérieure ou égale à N (''≥ N'') | | ''dépasse N'' | la valeur est strictement supérieure à N (''> N'') | | ''n’atteint pas N'' | la valeur est strictement inférieure à N (''< N'') | | ''ne dépasse pas N'' | la valeur est inférieure ou égale à N (''≤ N'') | si le score atteint 100, dire "Vous gagnez !". si les points de vie n’atteignent pas 1, dire "Vous avez perdu.". [[djnc>wiki_conditions_comparateurs|tester les comparateurs]] ===== Combiner plusieurs conditions ===== Pour relier **deux conditions complètes** (chacune avec son propre sujet et son propre verbe), utilisez ''et si'' / ''et que'' (les deux doivent être vraies) ou ''ou si'' / ''ou que'' (au moins une vraie) : si la lampe est allumée et si la trappe est ouverte, dire "Vous voyez le passage.". si la lampe est éteinte ou si la trappe est ouverte, dire "Quelque chose cloche.". Pour relier **deux conditions distinctes**, écrivez ''et si'' / ''ou si'' (et non ''et'' / ''ou'' tout seuls). ''et'' / ''ou'' seuls servent à **partager un même sujet** : ''si le joueur possède la couronne **et** le sceptre'' (un seul verbe, deux compléments). ==== Grouper avec des parenthèses ==== Les parenthèses regroupent des sous-conditions pour maîtriser l’ordre d’évaluation : si (la lampe est éteinte ou si la lampe est allumée) et si la trappe est ouverte: dire "La trappe est ouverte, quel que soit l’état de la lampe.". fin si ==== soit … soit … (exactement un) ==== ''soit A soit B'' est vrai lorsque **exactement une** des deux conditions est vraie (ni les deux, ni aucune) : si le moule est soit beurré soit fariné, dire "Vous avez préparé le moule (mais pas les deux).". ==== Exclure : ni … ni … / mais pas ==== si le joueur ne possède ni l’anneau ni le bouclier, dire "Vous êtes sans protection.". si la trappe est ouverte mais pas fermée, dire "Le passage est dégagé.". [[djnc>wiki_conditions_combiner|tester ces combinaisons]] ===== Sujets spéciaux ===== Certains sujets de condition ne désignent pas un élément du jeu : ^ Sujet ^ Exemple ^ Vrai quand… ^ | ''le jeu'' | ''si le jeu est commencé'' | la partie a démarré | | ::: | ''si le jeu est terminé'' | la partie est finie (après [[reference:instructions:terminer|terminer le jeu]]) | | ''la réponse'' | ''si la réponse est "limonade"'' | le joueur a donné cette réponse au dernier [[reference:instructions:controle:choisir|choix]] | | ::: | ''si la réponse commence par "café"'' | la réponse commence/termine par ce texte — voir [[reference:instructions:controle:si:verbes:commencer_terminer|commencer par / terminer par]] | | ''l’infinitif de l’action'' | ''si l’infinitif de l’action est prendre'' | dans une [[reference:routines:regle:start|règle]], l’action en cours utilise ce verbe | L’infinitif accepte aussi la forme « ni … ni … » pour exclure plusieurs verbes d’un coup : ''si l’infinitif de l’action n’est ni détruire ni prendre, …''. Le belvédère est un lieu. La lunette est un objet ici. action méditer: si le jeu est commencé: dire "La partie est bel et bien commencée.". fin si si le jeu n’est pas terminé: dire "Et elle n’est pas encore terminée.". fin si fin action règle après prendre la lunette: si l’infinitif de l’action est prendre: dire "La règle sait que vous venez de la prendre.". fin si fin règle action abandonner: terminer le jeu. si le jeu est terminé: dire "La partie est finie.". fin si fin action règle avant commencer le jeu: dire "Essayez : {/méditer/}, {/prendre la lunette/}, {/abandonner/}.". fin règle [[djnc>wiki_conditions_sujets_speciaux|tester ces sujets spéciaux]] ===== Plus d’exemples ===== si le joueur possède l’anneau magique, dire "Vous êtes protégé grâce à votre anneau.". si le dragon n’est pas réveillé: dire "Les paupières du dragon sont toujours closes. Espérons que ça dure…". sinon dire "Il vous semble avoir vu remuer le dragon.". fin si si l’historique contient "sortie grotte bloquée", dire "Pas moyen de sortir de la grotte pour le moment.". -- Le joueur doit posséder tous les objets listés si le joueur possède la couronne et le sceptre, dire "Les gardes vous laissent entrer dans votre palais.". -- Le joueur ne possède aucun des objets listés si le joueur ne possède ni l’anneau magique ni le bouclier : dire "Vous êtes touché par les flammes du dragon". changer l’historique contient "dragon rencontré". changer le joueur est brulé. fin si -- Si uniquement une des conditions est remplie si le moule est soit beurré soit fariné, dire "Vous avez oublié quelque chose.". si l’assiette contient les légumes mais pas la viande, dire "C’est surtout un carnivore, vous savez.". ===== Voir aussi ===== * [[reference:instructions:controle:si:verbes:|Verbes utilisables dans une condition]] — être, vaut, possède, se trouve, contient, atteint, dépasse… * [[reference:instructions:controle:choisir|Choisir]] — proposer un choix au joueur. * [[reference:texte:conditions|Conditions et blocs textuels]] — la forme ''%%[si …]%%'' à l’intérieur d’un texte. * [[reference:memoire:compteurs|Compteurs]] — comparer une valeur numérique. * [[reference:definitions:fonds|Fonds]] — désigner une instance par sa position (locateur ''situé''). {{tag>si sinon sinonsi condition conditions test tester vérifier verifier controle contrôle comparateur comparateurs sujet_special soit ni_ni mais_pas parenthèses}}