[..] Scripts pour "discuter avec l'ordi"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

[..] Scripts pour "discuter avec l'ordi"

#1

Message 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
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [DEMANDE] Scripts pour "discuter avec l'ordi"

#2

Message 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.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

Re: [DEMANDE] Scripts pour "discuter avec l'ordi"

#3

Message par flotos »

Merci beaucoup à votre réponse, cela m'était très utile, est, désolé pour le post...
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

Re: [DEMANDE] Scripts pour "discuter avec l'ordi"

#4

Message 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:
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [DEMANDE] Scripts pour "discuter avec l'ordi"

#5

Message 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.
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#6

Message 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
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#7

Message 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
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#8

Message 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
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#9

Message 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
flotos
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 20 mai 2009 17:29
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#10

Message 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...
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] Scripts pour "discuter avec l'ordi"

#11

Message 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
Répondre