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

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
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 :cry:

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

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

Code : Tout sélectionner

If @error then
    msgbox(0,"titre","message")
    exit
Endif
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

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
Exemple fonctionnel avec ta méthode :
► Afficher le texte

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 :mrgreen: :mrgreen:

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