[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

交友的批处理

第一次在这里发帖,希望高手能帮忙下,最好显示的字体的颜色是红色或者绿色的。

内容都是对话的。应该不难哦,我是菜鸟,不会耶

比如对话:

我喜欢你很久了,你知道吗?   1 知道    2 不知道

如果电脑输入1(知道),电脑显示:我可以做你女朋友吗?     1 可以, 2 不可以   再分1。。。。 2......

如果电脑输入2(不知道),电脑显示:当我第一次看见你的时候,我就有一种特别的感觉,这个感觉你懂吗? 1 懂 2 不懂   再分1  我想追求你  2 请允许我每天多关心你

类似这样的批处理文件,还请高手帮忙

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p "input1=我喜欢你很久了,你知道吗?   1 知道    2 不知道:"
  4. if !input1! equ 1 (
  5.     set /p "input2=我可以做你女朋友吗?     1 可以, 2 不可以:"
  6.     if !input2! equ 1 (
  7.         echo 可以
  8.     ) else if !input2! equ 2 (
  9.         echo 不可以
  10.     )
  11. ) else if !input1! equ 2 (
  12.     set /p "input3=当我第一次看见你的时候,我就有一种特别的感觉,这个感觉你懂吗? 1 懂 2 不懂:"
  13.     if !input3! equ 1 (
  14.         echo 懂
  15.     ) else if !input3! equ 2 (
  16.         echo 不懂
  17.     )
  18. )
  19. pause
复制代码

TOP

处理这种对话选择逻辑有更通用的办法
而并非一堆嵌套的if_else
问题的关键在于数据结构的定义
下面是一个简单的例子
可以据此扩充更多的对话
  1. @echo off & setlocal EnableDelayedExpansion
  2. set 问题1=我喜欢你很久了,你知道吗?(1.知道 2.不知道)
  3. set 问题11=我可以做你女朋友吗?(1.可以 2.不可以)
  4. set 问题12=当我第一次看见你的时候,我就有一种特别的感觉,这个感觉你懂吗?(1.懂 2.不懂)
  5. set 问题121=我想追求你(1.好 2.不好)
  6. set 问题122=请允许我每天多关心你(1.行 2.不行)
  7. echo.
  8. echo 游戏开始
  9. set 索引=1
  10. :选择
  11. echo.
  12. echo %索引%:!问题%索引%!
  13. set /p 回答=请按可选答案的序号回答问题:
  14. set 索引=%索引%%回答%
  15. if defined 问题%索引% goto :选择
  16. :退出
  17. echo.
  18. echo. 游戏退出
  19. pause
复制代码
当然如果要建立逻辑完备的问答链库
则仅仅使用环境变量则可能不够
此时可以考虑使用类似的数据文件
天的白色影子

TOP

回复 3# qzwqzw


    感觉创建类“指针”的变量来指向数据可能更适合问答类的需求,因为许多时候数据与问题不是一一对应的的关系,小改一下:
  1. @echo off & setlocal EnableDelayedExpansion
  2. set 问题1=我喜欢你很久了,你知道吗?(1.知道 2.不知道)
  3. set 问题2=我可以做你女朋友吗?(1.可以 2.不可以)
  4. set 问题3=当我第一次看见你的时候,我就有一种特别的感觉,这个感觉你懂吗?(1.懂 2.不懂)
  5. set 问题4=我想追求你(1.好 2.不好)
  6. set 问题5=请允许我每天多关心你(1.行 2.不行)
  7. set 指针1=1
  8. set 指针11=2
  9. set 指针12=3
  10. set 指针121=4
  11. set 指针122=5
  12. echo.
  13. echo 游戏开始
  14. set 索引=1
  15. :选择
  16. echo.
  17. for %%z in (!指针%索引%!) do echo %%z:!问题%%z!
  18. set /p 回答=请按可选答案的序号回答问题:
  19. set 索引=%索引%%回答%
  20. if defined 指针%索引% goto :选择
  21. :退出
  22. echo.
  23. echo. 游戏退出
  24. pause
复制代码

TOP

又是人工智能,这个更类似于专家系统,对于自然语言的理解与处理,以及文本挖掘……
问题可以越谈越大,抓不到边际,无法实现。
如果想确实可行的方案,那还是需要预先定义问题和答案,但可以在流程和结构上进行模糊和选择,增加智能程度。也就是,问题和答案的总量是不变的,可以自动扩展,但问题和答案的对应关系可以千变万化,就像牌是54张牌,而牌的组合玩法则可以千变万化。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

这个还谈不上AI吧
语义分析与数据挖掘已经是另一个领域了

“数据与问题不是一一对应的的关系”时
指针的索引也未必非要用121的形式
可以使用类似 “指针31” 的形式
这样可以应对某些问题链打环的问题
天的白色影子

TOP

返回列表