CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Help vbs

Sauvegarde2
Sauvegarde2
Niveau 9
09 juin 2008 à 20:03:03

Bonjour, voila le problème : je voudrais faire un simulateur de personnalité d'un copain (pour le fun) et donc j'ai une inputbox qui réagit à des phrases prédéfinis, le problème c'est que c'est un peu aléatoire comme procédé alors je voudrais le faire réagir à un seul mot contenu dans l'expression. Exemple : Au mot "sexe" dans la phrase "Quelle est la longueur de ton sexe ?" le programme répondrai "Là on aborde un sujet très gros..." (ou une connerie du style) et ça m'éviterai de prédéfinir tout un tas de phrases avec des variation sur la question. J'éspere que j'ai été compréhensible, en tout cas merci d'avoir lu ;-)

saleGauss
saleGauss
Niveau 9
09 juin 2008 à 21:03:03

bon et bien il te faut faire une petite analyse lexicale de ce qui est entré par l'utilisateur.

Donc tu vas parser les phrases de ton entrée clavier, et rechercher des mots clés comme "maison", "sexe" et "argent".

Précise un peu là ou tu bloque parce que comme ça, a part t'écrire le gros de ton programme, je ne vois pas bien ce que je peux faire.

Cherche peut etre simulateur de conversation sur google pour t'inspirer.

Bon courage

Sauvegarde2
Sauvegarde2
Niveau 9
09 juin 2008 à 21:15:35

Bon alors voici mon programme :
---
Question = InputBox ("","Sim 3","")

If Question = "" then

MsgBox "Pas très bavard, hein ?",,"Sim 3"

ElseIf Question = "Je t'aime" OR Question = "Je t'aime." OR Question = "Je t'aime!" OR Question = "Je t'aime !" Then

MsgBox "Oui moi aussi... je m'aime :3",, "Sim 3"

Else 'Une connerie définie par random

End If
---
Voila, j'ai pris cette exemple parce que les phrases pré-construites sont courtes et pour éviter de trop parler de sexe :coeur:

Sauvegarde2
Sauvegarde2
Niveau 9
09 juin 2008 à 21:19:37

Et je voudrais remplacer tout ce bazar bien lourd par

ElseIf Question = *au moins* "aime" then
etc

godrik
godrik
Niveau 30
10 juin 2008 à 00:22:16

je me permet de citer le psychanaliste de emacs qui est remarquable.

saleGauss
saleGauss
Niveau 9
10 juin 2008 à 13:16:51

bon et bien donc l'idée est que tu as présentement besoin d'une fonction ContientChaine, qui determine si une chaine A contient une chaine B.

Donc c'est une fonction qui va te renvoyer un booléen (true ou false).
En entrée : elle va prendre 2 chaines de caractères, la A, et la B, et elle va regarder si B est inclu dans A.

Bon alors pour cette fonction, l'idée est de commencer par regarder le premier caractère de B.
Tu regardes si ce caractère est présent dans A.
Si c'est le cas, tu regarde si le caractère suivant de A correspond bien au deuxieme caractère de B.
Et si c'est le cas, tu continue, jusqu'à ce que tu es dis "ok" pour tous les caractères de B.
Bien sur, si à un moment tu dis "non", tu peux faire renvoyer "faux" à ta fonction.

Exemple : A = "j'aime la biere"
B = "biere". (chaine à rechercher)

Bon donc je recherche 'b' dans A
-> trouvé en position 10
est-ce que le caractère 11 de A correspond aussi au caractère 2 de B ?
->oui, le 11eme de A est 'i' et le 2eme de B est 'i' aussi
Ensuite, est-ce que le 12 eme de A correspond au 3 eme de B ?
->oui, etc...

On arrive au dernier caractère de B. On a dis oui partout, donc la fonction peut renvoyer true : OUI A contient bien B.

Vois tu quelles sont les différentes manières d'écrire cette fonction ?

Ensuite, dans ta fonction principale ou tu recupere le texte de l'utilisateur, tu pourras faire tes "if" sur des mots ainsi :

-------------
utilisateur rentre A
if( ContientChaine(A, "maison") ) Then...

if( ContientChaine(A, "chien") ) Then...
---------------

Donc je pense qu'il peut etre interessant pour toi d'écrire cette fonction ContientChaine().

N'hésite pas à poser des questions si tu n'y arrive pas.

J'espere que je n'ai pas raconté de betises, car je ne connais pas bien VBS, j'ai juste parlé d'algo là...

Sauvegarde2
Sauvegarde2
Niveau 9
10 juin 2008 à 15:16:22

Eh bien j'ai esayé de faire la fonction avec InStr, qui renvoi la position du mot ou la valeur 0 le cas échéant (ça m'a parut plus simple) :
---
Function Recherche(Mot)
If InStr (Question, Mot) > 0 then
MsgBox Reponse
End If
End Function

Question = InputBox

Recherche (Mot)
If Mot = "a" then
Reponse = "1"
ElseIf Mot = "b" then
Reponse = "2"
ElseIf Mot = "c" then
Reponse = "3"
Else
Reponse = "Random"
End If
---
Malheureusement le script ne fonctionne pas et me renvoi une msgbox vide. Mais je pense etre sur la bonne voie.

Sauvegarde2
Sauvegarde2
Niveau 9
10 juin 2008 à 16:30:07

Je progresse :
---
Question = InputBox ("","Fox 3","")

Function Recherche(Mot)
If InStr (Question, Mot) > 0 then
MsgBox ReponseSpeciale
Wscript.quit
Else
ReponseSpeciale = vbEmpty
End If
End Function

ReponseSpeciale = "1"
Recherche ("a")

ReponseSpeciale = "2"
Recherche("b")

Reponse = "Random"
MsgBox Reponse
---
Mais comment rechercher deux choses en même temps ? Par exemple "Aime" et "aime" ?

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment