Pourquoi ça bloque? [Résolu]

Signaler
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
16025
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
549
Bonjour, merci de penser aux balises de coloration syntaxique voir ici .
Je modifie.
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

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
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

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
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
Salut

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

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

bonjour

Dans mes souvenirs je pensais bien faire en mettant des parenthèses, faut il que je les supprime?
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Bonjour.
Ta sub ne porte pas de nom ?
Sub toto ()
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
bonjour ! bien vu Jordane45 !
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

mille mercis!
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
si ton soucis est réglé n'oublie pas de mettre le sujet en résolu. ^^
Messages postés
14
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
9 mars 2014

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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