Page 1 sur 1
[..] Scripts pour "discuter avec l'ordi"
Posté : mer. 08 juil. 2009 16:27
par flotos
Bonjour, j'aimerai faire une sorte de robot avec qui ont pourrait discuter virtuellement.
Voici le début du scripts, mais il y a un problème quand je répond "bonjour" il revient au début...
► Afficher le texte
Code : Tout sélectionner
Local $fichierini, $user, $fichier, $domaine, $bloop = 1, $text
$bloop = 1
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error = 1 Then
msgbox(1,"Quitter","Quitter")
Exit
Else
If $text <> "Bonjour" Then
If $text <> "Salut" then
MsgBox(4096, "Erreur", "Je ne te comprend pas")
Else
$bLoop = 0
EndIf
EndIf
EndIf
WEnd
Re: [DEMANDE] Scripts pour "discuter avec l'ordi"
Posté : mer. 08 juil. 2009 17:17
par tolf
1- Editez votre titre en mettant une balise appropriée.
2- Lisez cette page :
http://www.autoitscript.fr/forum/viewto ... f=35&t=595
3- Pour la présentation de votre code, je vous conseille d'utiliser CTRL+T dans SciTE pour mettre les bons espaces et rendre le code plus lisible.
4- Pourquoi initialisez vous deux fois $bLoop au début ?
5- Vous devez réarranger vos conditions (d'où l'intérêt de CTRL+T pour y voir clair ^^) :
Code : Tout sélectionner
If $text = "Bonjour" Or $text = "Salut !" Then
$sLoop = 0
Else
MsgBox ...
EndIf
Sinon, vous pouvez utiliser ExitLoop pour sortir de la boucle directement sans utiliser de variable $bLoop.
Re: [DEMANDE] Scripts pour "discuter avec l'ordi"
Posté : jeu. 09 juil. 2009 18:12
par flotos
Merci beaucoup à votre réponse, cela m'était très utile, est, désolé pour le post...
Re: [DEMANDE] Scripts pour "discuter avec l'ordi"
Posté : jeu. 09 juil. 2009 18:35
par flotos
Pour le même sujet, j'ai un autre problème quand je veut proposer 2 types de réponse, une positive, et une négative... voici ce que le code donne (avec le bug) :
► Afficher le texte
Code : Tout sélectionner
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
$sLoop = 0
Else
MsgBox(0, "Rob-auto", "Cool alors")
If $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
$sLoop = 0
Else
MsgBox(0, "Rob-auto", "Dommage...")
EndIf
EndIf
$bloop = 0
WEnd
PS : difficile de s'y retrouver...
A chaque fois, a la fin, quand je dit "non" il me dit "cool alors" et quand je dit oui, il ne fait rien

Re: [DEMANDE] Scripts pour "discuter avec l'ordi"
Posté : jeu. 09 juil. 2009 19:04
par ani
Bonjour
En faite les msgbox se trouve en dehors des conditions, il est normal que çà ne fonctionne pas comme vous le vouliez

if....elseif...endif
si....sinonsi...fin
Code : Tout sélectionner
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
MsgBox(0, "Rob-auto", "Cool alors")
$sLoop = 0
ElseIf $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
MsgBox(0, "Rob-auto", "Dommage...")
$sLoop = 0
EndIf
$bloop = 0
WEnd
bonne continuation.
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : ven. 10 juil. 2009 13:35
par flotos
Et j'ai un dernier problème (encore ?!) car, quand je lance le script et que je répond à la 1ere question, il me dit sa : Line 6 If @error=1 then Error: too many "else" statements for matching "if" statement. sa veut dire, je croit, qu'il y a trop de "Else" pour pas assez de "If" non ? Bon, voici le code
► Afficher le texte
Code : Tout sélectionner
$bloop = 1
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
[color=#BF0000]If @error = 1 Then[/color] [color=#40FF00]c'est ici le problème[/color]
msgbox(1,"Quitter","Quitter")
Exit
Else
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
Else
MsgBox ...
EndIf
MsgBox(4096, "Erreur", "Je ne te comprend pas")
Else
$bLoop = 0
EndIf
WEnd
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : ven. 10 juil. 2009 15:15
par ani
l'inputbox nous dit
Failure: Returns "" (blank string) and sets @error as follows:
@Error 0 = The string returned is valid.
1 = The Cancel button was pushed.
2 = The Timeout time was reached.
3 = The InputBox failed to open. This is usually caused by bad arguments.
Vous indiquez if @error = 1 then (le 1 c'est si on appuie sur cancel)
Si y a une erreur alors action fin de condition
Ensuite
Si le texte correspond au mot clé alors action, Sinon message je ne comprend pas, fin de condition
Code : Tout sélectionner
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
MsgBox(0,"Rob-auto", $text & " " @username)
Else
MsgBox(4096, "Erreur", "Je ne te comprend pas")
EndIf
l'erreur que vous retourne autoit, dit simplement qui y a un problème avec la condition (if..else...endif)
Code : Tout sélectionner
$bloop = 1
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error Then ;c'est ici le problème
msgbox(1,"Quitter","Quitter")
Exit
EndIf
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
MsgBox(0,"Rob-auto", $text & " " @username)
Else
MsgBox(4096, "Erreur", "Je ne te comprend pas")
EndIf
$bLoop = 0
WEnd
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : mar. 14 juil. 2009 12:04
par flotos
Et ensuite, (c'est mon dernier problème, juré !)
Quand je met les 2 a la suite, après l'inputbox "bonjour" sa ne passe pas à l'inputbox "sa va ?" pourquoi ?
Le code encore...
► Afficher le texte
Code : Tout sélectionner
Local $bloop = 1, $text, $humeur = 0
$bloop = 1
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error = 1 Then
msgbox(1,"Quitter","Quitter")
Exit
EndIf
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
MsgBox(0,"Rob-auto",": Sa va ?")
Else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
$bLoop = 0
WEnd
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
$sLoop = 0
MsgBox(0, "Rob-auto", "Cool alors")
ElseIf $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
MsgBox(0, "Rob-auto", "Dommage...")
$sLoop = 0
else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
$bloop = 0
WEnd
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : mar. 14 juil. 2009 12:46
par jumby
Ton problème vient lorsque ton script sort de la première boucle par :
$bLoop = 0
Etant donné que tu as défini $bLoop comme étant égal à 0, la seconde boucle ne peut se faire.
Pour sortir d'une boucle tu peux sois utiliser ta méthode mais en redéfinissant $bLoop égal à 1 une fois sorti de ta boucle pour que la seconde puisse avoir lieu, soit passer tout simplement par un exitloop.
Exemple avec Exitloop :
► Afficher le texte
Code : Tout sélectionner
Local $bloop = 1, $text, $humeur = 0
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error = 1 Then
msgbox(1,"Quitter","Quitter")
Exit
EndIf
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
MsgBox(0,"Rob-auto",": Sa va ?")
Else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
ExitLoop
WEnd
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
$sLoop = 0
MsgBox(0, "Rob-auto", "Cool alors")
ElseIf $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
MsgBox(0, "Rob-auto", "Dommage...")
$sLoop = 0
else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
ExitLoop
WEnd
Exemple fonctionnel avec ta méthode :
► Afficher le texte
Code : Tout sélectionner
Local $bloop = 1, $text, $humeur = 0
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error = 1 Then
msgbox(1,"Quitter","Quitter")
Exit
EndIf
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
$sLoop = 0
MsgBox(0,"Rob-auto",": Sa va ?")
Else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
$bloop = 0
WEnd
$bloop = 1
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
$sLoop = 0
MsgBox(0, "Rob-auto", "Cool alors")
ElseIf $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
MsgBox(0, "Rob-auto", "Dommage...")
$sLoop = 0
else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
$bloop = 0
WEnd
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : mar. 14 juil. 2009 19:59
par flotos
Voilà, merci beaucoup à tous, tout marche...
Sauf un petit porblème
Quand je répond faux à la première question, (ou qu'il ne reconnaît pas le message) il passe quand même à la suite...
Re: [..] Scripts pour "discuter avec l'ordi"
Posté : mar. 14 juil. 2009 20:27
par jumby
Il y avait une sortie de boucle même si les conditions n'étaient pas remplies.
Ceci répond à tes attentes :
► Afficher le texte
Code : Tout sélectionner
Local $bloop = 1, $text, $humeur = 0
While $bLoop = 1
$text = InputBox("Rob-auto", "Bonjour")
If @error = 1 Then
msgbox(1,"Quitter","Quitter")
Exit
EndIf
If $text = "Bonjour" Or $text = "Salut" Or $text = "lu" Or $text = "yo" Or $text = "yolvuuk" Or $text = "slt" Or $text = "salu" Or $text = "yolvuk" Then
MsgBox(0,"Rob-auto",": Sa va ?")
ExitLoop
Else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
WEnd
While $bloop = 1
$text = InputBox("Rob-auto", "Sa va ?")
If $text = "oué" Or $text = "ouai" Or $text = "oui" Or $text = "trop" Or $text = "bien" Or $text = "sa va" Or $text = "a fond" Then
MsgBox(0, "Rob-auto", "Cool alors")
ExitLoop
ElseIf $text = "non" Or $text = "pas du tout" Or $text = "pas trop" Or $text = "non" Or $text = "bof" Or $text = "snirf" Or $text = "triste" Then
MsgBox(0, "Rob-auto", "Dommage...")
ExitLoop
else
MsgBox(4096,"Rob-auto", $text & ": Je ne t'ai pas compris")
EndIf
WEnd