
Il se peut que l'utilisateur soit "malpoli" donc j'aimerai rajouter une détection de "grossièretés". Ainsi, au bout de certaines mises en garde du chatbot, si l'utilisateur continue de mal s'exprimer, le programme se ferme.
J'avais commencé par écrire ceci (pour l'exemple j'ai "gentifié" les grossièretés xD):
var gm1a:Array = ["Ouhlà, c'est quoi ce langage?", "Je déteste les grossièretés " + usr.text + " . Veuillez parler correctement je vous prie.", "Cessez d'être malpoli s'il vous plait..."];
var gm1b:String = gm1a[Math.floor(Math.random()*gm1a.length)];
if(aok01.indexOf("diantre") != -1){att.text = gm1b;}
if(aok01.indexOf("fichtre") != -1){att.text = gm1b;}
if(aok01.indexOf("punaise") != -1){att.text = gm1b;}
Ca ça va mais si j'ai cent mots, ça va faire cent lignes. Et puis je me suis dit qu'avec "Array" (utilisé pour les réponses aléatoires), je pouvais sans doute gérer tous les mots d'un seul coup, en les mettant dans un tableau.
Donc Array serait utilisé pour trouver "plusieurs mots clés possibles", comme ça avait été fait pour afficher "plusieurs réponses possibles".
Alors j'ai tenté d'écrire ça :
var hhha:Array = ["diantre","fichtre","punaise"];
var gm1a:Array = ["Ouhlà, c'est quoi ce langage?", "Je déteste les grossièretés " + usr.text + " . Veuillez parler correctement je vous prie.", "Cessez d'être malpoli s'il vous plait..."];
var gm1b:String = gm1a[Math.floor(Math.random()*gm1a.length)];
if(aok01.indexOf(hhha) != -1){att.text = gm1b;}
Mais il m'affichait cette erreur :
Scene 1, Calque 'AS3 - Mode 1', Image 1, ligne 1416 1067: Contrainte implicite d'une valeur du type Array vers un type sans rapport String.
J'ai rectifié pour obtenir ce qui suit :
var hhha:Array = ["diantre","fichtre","punaise"];
var hhhb:String = hhha[Math.floor(Math.random()*hhha.length)];
var gm1a:Array = ["Ouhlà, c'est quoi ce langage?", "Je déteste les grossièretés " + usr.text + " . Veuillez parler correctement je vous prie.", "Cessez d'être malpoli s'il vous plait..."];
var gm1b:String = gm1a[Math.floor(Math.random()*gm1a.length)];
if(aok01.indexOf(hhhb) != -1){att.text = gm1b;}
Ca fonctionne... pas vraiment.
Dernier test avec "for" (une histoire de boucle?) où tant que les mots listés ne sont pas trouvés, il arrive ça, ou ça... bref, voilà :
var hhha:Array = ["diantre","fichtre","punaise"];
var hhhb:String = hhha[Math.floor(Math.random()*hhha.length)]; //à vrai dire là je ne sais pas trop quoi mettre après "String"
var gm1a:Array = ["Ouhlà, c'est quoi ce langage?", "Je déteste les grossièretés " + usr.text + ". Veuillez parler correctement je vous prie.", "Cessez d'être malpoli s'il vous plait..."];
var gm1b:String = gm1a[Math.floor(Math.random()*gm1a.length)];
for (var j:int = 0; j< hhha.length; j++){
hhha [j]+=2;
if(aok01.indexOf(hhhb) != -1){att.text = gm1b;}
}
Alors là ça semble fonctionne mais pas tout le temps x/. Je ne suis pas encore très logique sans doute, dans l'écriture de mon code


Merci de votre aide.