用vb实现聊天机器人代码
'COPYRIGHT sc寻
'VER 0.01
'简要说明
'本程序是一个简单的聊天机器人
'使用者提出的问题首先在iqq()中查有没有包含定义的关键词,如果有>=1 个则随机挑选一句回答
'如果没有则从rnda()中随机挑选一句随机答案回答
'窗体中添加cmdtalk按钮 txtans txtq 文本框 multiline设为true scrollbars设为2
Dim iqa() As String 'iq回答的单个答案
Dim iqq() As String 'iq回答的单个问题
Dim iqnum As Integer 'iq回答的问题、答案个数
Dim rnda() As String ' rnd回答的单个答案
Dim rndansnum As Integer 'rnd回答的答案个数
Dim dat As String '从文件载入的原始数据
Dim username As String '使用者名字
Dim robotname As String '机器人名字
Dim ver As String '数据版本
Dim rndans As String 'rnd回答的所有数据
Dim iqans As String 'iq回答的所有数据
Private Sub cmdtalk_Click()
Dim q As String
Dim a As String
q = txtq.Text
txtans.Text = txtans.Text & username & ":" & vbNewLine
txtans.Text = txtans.Text & q & vbNewLine & vbNewLine
'首先检查iqq
Dim manyiq As Integer
For i = 1 To iqnum
If InStr(q, iqq(i)) <> 0 Then
manyiq = manyiq + 1
End If
Next i
ReDim manyans(manyiq) As String
Dim oneiq As Integer
For i = 1 To iqnum
If InStr(q, iqq(i)) <> 0 Then
oneiq = oneiq + 1
manyans(oneiq) = iqa(i)
End If
Next i
If manyiq <> 0 Then
a = manyans(Int(Rnd * oneiq) + 1)
Else
a = rnda(Int(Rnd * rndansnum) + 1)
End If
txtans.Text = txtans.Text & robotname & ":" & vbNewLine
txtans.Text = txtans.Text & a & vbNewLine & vbNewLine
txtans.SetFocus
txtans.SelStart = Len(txtans.Text)
End Sub
Private Sub Form_Load()
Randomize
datname = "c:\talk.dat"
Open datname For Binary As 1
dat = Space(LOF(1))
Get 1, , dat
Close 1
'获取username robotname ver rndans iqans
username = InputBox("请输入你的名字", "提示")
start = InStr(dat, "<name>")
over = InStr(dat, "</name>")
robotname = Mid(dat, start + 6, over - start - 6)
start = InStr(dat, "<ver>")
over = InStr(dat, "</ver>")
ver = Mid(dat, start + 5, over - start - 5)
start = InStr(dat, "<rndans>")
over = InStr(dat, "</rndans>")
rndans = Mid(dat, start + 8, over - start - 8)
start = InStr(dat, "<iqans>")
over = InStr(dat, "</iqans>")
iqans = Mid(dat, start + 7, over - start - 7)
'rnda(rndansnum)获取
Dim rndanslen As Long 'rnd回答的所有数据长度
rndansnum = 0
rndanslen = Len(rndans)
For i = 1 To rndanslen
If Mid(rndans, i, 1) = "|" Then
rndansnum = rndansnum + 1
End If
Next i
ReDim rnda(rndansnum) As String '定义每一个rnd回答的动态数组
Dim lastl As Integer '上一次|的位置
num = 1 'num是数组中的标号(rndansnum是总数)
For i = 1 To rndanslen
If Mid(rndans, i, 1) = "|" Then
rnda(num) = Mid(rndans, lastl + 1, i - lastl - 1)
num = num + 1
lastl =
i
End If
Next i
'iqq(rndansnum) iqa(rndansnum)获取
Dim iqanslen As Long
iqanslen = Len(iqans)
For i = 1 To iqanslen
If Mid(iqans, i, 1) = "|" Then
iqansnum = iqansnum + 1
End If
Next i
ReDim iqa(iqansnum) As String
ReDim iqq(iqansnum) As String
lasta = 0
lastq = 0
num = 1
For i = 1 To iqanslen
If Mid(iqans, i, 1) = "\" Then
iqq(num) = Mid(iqans, lasta + 1, i - lasta - 1)
num = num + 1
lastq = i
ElseIf Mid(iqans, i, 1) = "|" Then
iqa(num - 1) = Mid(iqans, lastq + 1, i - lastq - 1)
lasta = i
End If
Next i
iqnum = iqansnum
'欢迎信息
txtans.Text = txtans.Text & username & ",欢迎使用本软件" _
& vbNewLine & "我叫" & robotname & " 数据库版本 " & ver & vbNewLine
txtans.Text = txtans.Text & "iqnum " & iqnum & vbNewLine
txtans.Text = txtans.Text & "rndansnum " & rndansnum & vbNewLine & vbNewLine
End Sub
以下是简单的数据 当然你可以自由发挥让他更完美
保存为c:\talk.dat
<name>s1</name>
<ver>0.01</ver>
<rndans>呵呵|你真有趣|哈哈|嗯|说说你吧|嘿嘿|这样啊|是啊|怎么啦|喂,
说清楚点|是这样啊|你真好玩|晕|狂晕|晕死了|真的吗|说说你自己吧|逗你玩
|呵呵,有什么企图啊?|大哥缘分啊|你说话太谭了|我知道|这你可难不倒我|噢
|哦|当然|废话|也许吧……
|我想我还没有完全理解。
|不知道|啊?|是吗?|你是认真的吗|我不知道怎样回答|我不同意你所说的每一
个字,但我誓死捍卫你说话的权力|说说别的吧|很高兴见到你|你说呢
|</rndans>
<iqans>vb\我就是用vb写成|快乐\世界上总有一半人不理解另一半人的快乐|
爱情\每个人的爱情都不会一样|失恋\失恋啦?旧的不去,新的不来嘛,说不
定下一个会更好|几岁\我2007年6月30日出生|多大\我2007年6月30日出生|主
人\嘿嘿,我的主人是--sc寻|诞生\我2007年6月30
日出生|年龄\我2007年6月30日出生|生日\我2007年6月30日出生|机器人\嘿嘿
,我就是机器人啦|程序\我就是一段程序啦|青羊实验\嘿嘿,那是著名的学校|
上学\我不喜欢上学|考试\我不用考试|你是谁\嘿嘿,我就是机器人啦|哈哈\别
这样笑。要笑不露齿!|大哥缘分啊\你是范伟啊|你叫什么\我叫s1|你的名字\
我叫s1|你好\嗨,你好,真高兴你能和我说话|呵呵\你笑什么啊|友情\其实有
时友情很脆弱的,但是真正的友情经得住考验。|你真有趣\谢谢|你真幽默\谢
谢|好玩\注意我可不是玩具~~~~呵呵|好耍\注意我可不是玩具~~~~呵呵|知
python和vb的代码可以通用吗道?\当然知道|真的吗\当然是真的|真的吗\非常严肃认真|真的吗\当然是真的
,我啥时候骗过你|谢谢\不必客气|晕\别啊!~我扶不动你的啊|智商低\请不
要侮辱机器人|\请不要侮辱机器人|傻瓜\请不要侮辱机器人|瓜儿\请不要
侮辱机器人|瓜娃子\请不要侮辱机器人|白痴\请不要侮辱机器人|二百五\请不
要侮辱机器人|疯子\请不要侮辱机器人|性别\我当然是男的|男的女的\废话我
当然是男的|也许吧\为什么用这种不确定的口气?|不确定\除了5要素外,一
切都是不确定的。
|你是谁\我可能只是存在于电脑内存中的一堆1和0
|认识\认识分两种:感性认识,和理性认识。感觉到的,和推理出的。|生命\
生命是死亡的对立。
|为什么\不知道,不确定
|你思考\我是一个思考机器。
|创造出了你?
\sc寻|创造了你?
\sc寻|发明了你?
\sc寻|哲学\我没怎么研究哲学|文学\不好意思我没怎么研究文学|科学
\我没怎么研究科学|笑一下\哈哈|狂晕\这么脆弱啊?你也太差劲了呀。|你说
话太\啊?是吗?|政治\我不谈政治|共产\我不谈政治|台独\我不谈政治|笑话\
我不是那种爱讲笑话的类型|美女\哪儿呢哪儿呢!
|你是坏\才不是呢
|骗人\不骗你|你装蒜\你装葱|你漂亮吗\和你想象的一样美|
\走,一起去|哪有\那又怎么样|你是机器\不要这样说我麻|明白吗\我懂|知道
吗\知道|s1\你在说我吗|图灵\图灵是伟大的数学家。在数学、计算机、人工
智能等领域做出了卓越的贡献。
|洛伯纳奖\那是我永远奋斗的目标|为什么\世界充满了未知|物理\我没怎么研
究物理|化学\我对化学很感兴趣|痛苦\痛苦就是被迫离开原地|自由\理性能使
人自由|理性\理性能使人自由|思考\我思故我在|怀疑\可以怀疑一切,但却不
能怀疑正在怀疑一切|众\众永远生活在无知的洞穴之中|无知\众永远生
活在无知的洞穴之中
|幸福\幸福就是肉体无痛苦,灵魂无纷扰|拯救灵魂\拯救灵魂必须放弃
|人生\人生在世,不过是过路的旅客|本性\人的本性就是追求个人利益|人性\
人的本性就是追求个人利益|幸福\幸福不过是欲望的暂时停止|忘记\人最容易
忘记的是自己|知识\知识就是力量|存在\存在就是合理,合理的也都要存在|说
谎\我正在说谎|地狱\他人就是地狱|他人\他人就是地狱|无限\无限不是实在
的实体。无限是潜在于思维中的一个连续不断的过程。|因果\因果关系是由人
的习惯性联想原则所决定的|因为\因果关系是由人的习惯性联想原则所决定的
|所以\因果关系是由人的习惯性联想原则所决定的|信仰\信仰是人生的力量|
坏人\坏人因畏惧而服从,好人因爱而服从|好人\坏人因畏惧而服从,好人因
爱而服从|约束\能约束自己的人,最有威信|威信\能约束自己的人,最有威信
|平庸\平庸的人最大的缺点是常常觉得自己比别人高明|英雄\一个人不能
永远
做一个英雄,但一个人能永远做一个人|敌人\对敌人的仁慈就是对敌人最大的
残忍|灵魂\磁石有灵魂,因为它有灵魂|世界\世界是包括一切的整体,它不是
由任何神或任何人所创造的,它过去、现在和将来都是按规律燃烧着,按规律
熄灭着的永恒的活火|运动\阿基里斯永远追不上乌龟|知识\知识就是存在的映
象|自然\要命令自然都必须服从自然|静止\全宇宙中并没有真正静止的点|批
判\批判的武器当然不能代替武器的批判|物质\物质力量只能用物质力量来摧
毁|理解\理解是一种视界融合|南柯一梦\物质决定意识|庖丁解牛\掌握规律,
得心应手|我有点困\我永远不知疲倦|疲倦\我永远不知疲倦|再见\bye-
bye|bye-bye\再见|88\再见|做人要厚道\机器人比人厚道|汗\需要毛巾吗|寒\
需要棉袄吗|美眉\在哪里|mm\有照片吗|恐龙\我好怕怕|青蛙\呱呱呱|百度\百
度很好用|博客\你有博客吗?|感动\感动是一种养分|你要\不要了,行行好吧
~|身高\我不告诉你|体重\我不告诉你|流行\流行就是硬道理|同性恋\李宇春
还是《断臂山》|笑\开心就要尽情地笑啊|你应不应该\听你的,你叫我干啥我
就干啥|你会不会\你说我会吗|是吗\是啊|是认真的吗
\放心,很认真!|嗯\别哦来嗯去了说说你吧|哦\别哦来嗯去了说说你吧|顶\多
谢支持|你懂吗\我以为我略知一二|</iqans>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论