Pourquoi ça bloque?

Résolu
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014
- Modifié par Whismeril le 8/03/2014 à 13:47
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 9 mars 2014 à 08:07
Bonjour
Me revoilà sur ce forum, je suis à la retraite depuis peu et je me remets à la création d'un chatterbot. J'ai beaucoup perdu durant toutes ces années sans programmer et je vous demande une grande indulgence.
je me lance dans la création d'un chatterbot et dès mes premières lignes ça bloque! Mais ou?
Je joins a ce msg le code en espérant une aide
Cordialement

Option Strict On
Public Class Form1
    WithEvents txtChatInput As New TextBox
    WithEvents btnSendInput As New Button
    WithEvents txtOutput As New TextBox
    Dim ChatItems As New List(Of ChatItem)
    Dim CantAnswer As New List(Of String)
    Dim CantRespond As New List(Of String)
    Dim MonospacedFont As New Font("consolas", 12)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Width = 500
        Me.Height = 500
        txtChatInput.Size = New Size(New Point(191, 20))
        txtChatInput.Location = New Point(13, 29)
        btnSendInput.Size = New Size(New Point(75, 20))
        btnSendInput.Location = New Point(210, 29)
        btnSendInput.Text = "Envoyer"
        txtOutput.Font = MonospacedFont
        txtOutput.Left = 0
        txtOutput.Multiline = True
        txtOutput.WordWrap = False
        txtOutput.ScrollBars = ScrollBars.Both
        txtOutput.Top = txtChatInput.Top + txtChatInput.Height
        txtOutput.Height = Me.ClientRectangle.Height - txtOutput.Top
        txtOutput.Width = Me.ClientRectangle.Width
        ' txtOutput.Dock = DockStyle.Bottom
        Me.Controls.Add(txtChatInput)
        Me.Controls.Add(btnSendInput)
        Me.Controls.Add(txtOutput)
        Dim C1prompts As New List(Of String)
        Dim C1Responses As New List(Of String)
        C1prompts.Add("Bonjour")
        C1prompts.Add("salut")
        C1prompts.Add("coucou")
        C1prompts.Add("Comment vas tu aujourd'hui?")
        C1prompts.Add("Comment vas tu?")
        C1prompts.Add("Tu vas bien?")
        C1prompts.Add("Tout va bien?")
        C1Responses.Add("Bonjour!")
        C1Responses.Add("Enfin, te revoilà")
        C1Responses.Add("Bonjour!")
        C1Responses.Add("Je suis en grande forme! Merci de le demander!")
        C1Responses.Add("Pas trop mal...")
        C1Responses.Add("Je ne sais pas!")
        Dim ChatItem1 As New ChatItem(C1prompts, C1Responses)
        ChatItems.Add(ChatItem1)
        Dim C2prompts As New List(Of String)
        Dim C2Responses As New List(Of String)
        C2prompts.Add("Oui")
        C2Responses.Add("ça va bien...")
        C2Responses.Add("c'est bien d'entendre ça...")
        Dim ChatItem2 As New ChatItem(C2prompts, C2Responses)
        ChatItems.Add(ChatItem2)
        CantAnswer.Add("Je ne peux pas te répondre")
        CantAnswer.Add("pourquoi demande tu cela...")
        CantAnswer.Add("je ne sais pas!")
        CantAnswer.Add("je ne suis pas une encyclopédie?")
        CantAnswer.Add("parlons d'autre chose")
        CantRespond.Add("c'est comme ça")
        CantRespond.Add("je ne connais pas...")
        CantRespond.Add("pourquoi me dis tu ça?")
        CantRespond.Add("je suis stupéfaite...")
        CantRespond.Add("es ce raisonnable?")
    End Sub
    Sub
        Dim usernick As String = "Utilisateur" '<- User's nickname
        chatbox.Items.Add(usernick & ": " & TextBox1.Text)
        Dim botnickname As String = "Bot" '<- Chatbot's nickname
        If LCase(TextBox1.Text) = ("hi") Or LCase(TextBox.Text) = ("Bienvenue") Then
            chatbox.Items.Add(botnickname & ": Bonjour mon ami.")
        ElseIf LCase(TextBox1.Text) = "Aurevoir" Then
            chatbox.Items.Add(botnickname & ": A plus tard.")
        End If
    End Sub
    Sub btnClick(ByVal sender As Object, ByVal e As EventArgs) Handles btnSendInput.Click
        Randomize()
        Dim Random As New Random
        Dim Index As Integer

        Dim Prompt As String = txtChatInput.Text
        Dim PromptFound As Boolean = False
        For Each ChatItem As ChatItem In ChatItems
            If ChatItem.PromptFound(Prompt, False) Then
                PromptFound = True
                Select Case ChatItem.PromptCount < 3
                    Case True
                        Index = Random.Next(0, ChatItem.Responses.Count - 1)
                        txtOutput.Text = txtOutput.Text & vbCrLf & "Tu:         " & Prompt & vbCrLf & "Odinateur:    " & ChatItem.Responses(Index) & vbCrLf
                        ChatItem.PromptCount = ChatItem.PromptCount + 1
                    Case Else
                        Select Case ChatItem.PromptCount < 4
                            Case True
                                Select Case InStr(Prompt, "?") > 0
                                    Case True
                                        txtOutput.Text = txtOutput.Text & vbCrLf & "tu:         " & Prompt & vbCrLf & "Odinateur:    " & "tu m'as déjà demandé ça " & ChatItem.PromptCount & " fois... tu as la réponse..." & vbCrLf
                                    Case Else
                                        txtOutput.Text = txtOutput.Text & vbCrLf & "tu:         " & Prompt & vbCrLf & "Odinateur:    " & "tu as déjà dit ça " & ChatItem.PromptCount & " fois... je vais ignorer cette question..." & vbCrLf
                                End Select
                                ChatItem.PromptCount = ChatItem.PromptCount + 1
                                Exit For
                            Case Else
                                txtOutput.Text = txtOutput.Text & vbCrLf & "tu:         " & Prompt & vbCrLf & "Odinateur:    " & "des nouvelles..." & vbCrLf
                                ChatItem.PromptCount = ChatItem.PromptCount + 1
                                Exit For
                        End Select
                End Select
            Else
                ChatItem.PromptCount = 0
            End If
        Next
        If Not PromptFound Then
            If Not InStr(Prompt, "?") > 0 Then
                Index = Random.Next(0, CantRespond.Count - 1)
                txtOutput.Text = txtOutput.Text & vbCrLf & "tu:    " & Prompt & vbCrLf & "Odinateur:    " & CantRespond(Index) & vbCrLf
            Else
                Index = Random.Next(0, CantAnswer.Count - 1)
                txtOutput.Text = txtOutput.Text & vbCrLf & "tu:    " & Prompt & vbCrLf & "Odinateur:    " & CantAnswer(Index) & vbCrLf
            End If
        End If
    End Sub
End Class
Class ChatItem
    Public Prompts As New List(Of String)
    Public Responses As List(Of String)
    Public PromptCount As Integer
    Sub New(ByVal Prompts As List(Of String), ByVal Responses As List(Of String))
        Me.Prompts = Prompts
        Me.Responses = Responses
        Me.PromptCount = 0
    End Sub
    Function PromptFound(ByVal Prompt As String, ByVal CaseSensitive As Boolean) As Boolean
        Select Case CaseSensitive
            Case True
                If Not Prompts.IndexOf(Prompt) = -1 Then Return True
                Return False
            Case Else
                Dim Exists As Boolean = False
                For Each S As String In Prompts
                    If LCase(S) = LCase(Prompt) Then
                        Exists = True
                    End If
                Next
                Return Exists
        End Select
    End Function
End Class

9 réponses

Whismeril
Messages postés
17474
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
600
Modifié par Whismeril le 8/03/2014 à 13:47
Bonjour, merci de penser aux balises de coloration syntaxique voir ici .
Je modifie.
0
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

8 mars 2014 à 16:25
merci de votre réponse mais j'ai tout revérifié et je ne sais pas ou ca bloque (donc je ne connais pas le bout de code à publier)

Merci de votre aide
a bientôt
0
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

8 mars 2014 à 16:27
en fait je pense que l'erreur se trouve ici (mais ou?)
Sub
Dim usernick As String = "Utilisateur" '<- User's nickname
chatbox.Items.Add(usernick & ": " & TextBox1.Text)
Dim botnickname As String = "Bot" '<- Chatbot's nickname
If LCase(TextBox1.Text) = ("hi") Or LCase(TextBox.Text) = ("Bienvenue") Then
chatbox.Items.Add(botnickname & ": Bonjour mon ami.")
ElseIf LCase(TextBox1.Text) = "Aurevoir" Then
chatbox.Items.Add(botnickname & ": A plus tard.")
End If
End Sub

J'utilise VS Express 2012
0
vb95
Messages postés
2775
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
30 juin 2022
151
8 mars 2014 à 16:51
Salut

If LCase(TextBox1.Text) = ("hi") Or LCase(TextBox.Text) = ("Bienvenue") Then

("hi") : à quoi servent les parenthèses ?
("Bienvenue") : idem
0
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

8 mars 2014 à 17:11
bonjour

Dans mes souvenirs je pensais bien faire en mettant des parenthèses, faut il que je les supprime?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
358
8 mars 2014 à 17:23
Bonjour.
Ta sub ne porte pas de nom ?
Sub toto ()
0
vb95
Messages postés
2775
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
30 juin 2022
151
8 mars 2014 à 17:23
oui ! essaie ainsi

If LCase(TextBox1.Text) = "hi" Or LCase(TextBox.Text) = "Bienvenue" Then

Autre chose : tu ne codes pas en pur VB Net mais en utilisant la compatibilité VB 6

LCase(TextBox1.Text : compatibilité VB 6
TextBox1.Text.ToLower : pur VB Net
0
vb95
Messages postés
2775
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
30 juin 2022
151
8 mars 2014 à 17:38
bonjour ! bien vu Jordane45 !
0
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

8 mars 2014 à 17:56
mille mercis!
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
358
8 mars 2014 à 20:51
si ton soucis est réglé n'oublie pas de mettre le sujet en résolu. ^^
0
marquis34
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

9 mars 2014 à 05:46
votre aide a été d'un grand secours, je ne manquerais pas de vous tenir au courant de l'évolution de mon chatterbot. Problème résolu
Cordialement
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
9 mars 2014 à 08:07
Bonjour,
Ce n'est pas ainsi que l'on marque un sujet en "résolu", mais en cliquant sur le bouton RESOLU au niveau de ton tout premier message.
Je le fais cette fois-ci à ta place
0