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

[游戏娱乐] 人机对战五子棋批处理游戏

在网上看到多个关于五子棋的批处理游戏,已经可以做到,人与人对战,并判断胜负。但是大多数人认为批处理的效率有问题,都不敢做人与机对战的尝试。批处理的效率真的有那么低吗?出于对dos的热爱,我就不相信批处理真的就做不到真正的五字棋人机对战!于是,这个问题花了我二天的时间,功夫不负有心人,批处理人机对战游戏出来了! 此批处理的棋盘延用了batman的显示方案,但是在输出算法上有所不同。虽然,这个话题已经有很多人写了很多代码,但是,此批处理的算法关键部分由本人自己写出来,所以打上了原创,若有不妥,请大家指正改过。谢谢。(初版3.85K,已多次更新增强)

注:
一楼保持了第一版,是能实现的基本原理,不想改了。

以下为更新记录:
5.6 根据一些网友的意见,做了一点改进:
把棋盘搞大一点了,增加了悔棋功能,增加了音效,
把系统提示放到了更合理的地方,
并增加了一点电脑方的棋艺,(还是不够完善,没有做到多方考虑)

5.7 修改:增加了电脑方最后一手特别显示

5.10修改:固定为黑子先手,第一手固定下在天元 JJ10 位置增加了几行代码,却提速不少,

5.14 修改:提速100%(最主要是原来代码中的一个BUG改正)
以上修改在7楼)

5.17 修改(在20楼):电脑智能升级了,但速度却慢了,

5.21 更新(原在23楼):完善了电脑智能,并在有多个等效下法时进行随机取位,增加了可玩性,速度也不错。

5.25 增加了背景音乐《春江花月夜》,如高山流水般的声音,听着下五棋子,太爽了
6.2 小更新 (在23楼) 小更新:增强了一点点电脑棋艺。
      ***看到网上有人贴出,玩家先下时,九手就赢了电脑,特此改进。 ***
6.14 增加了可以用鼠标操作,但是用到了一个鼠标支持的三方工具,(请看32楼)

2009.8.14修改
修正一些bug,并更新三方鼠标工具,并组合了背景音乐。

2009.10.2 更新
修正了,存放路径中含有空格时出错的问题

请看一楼附件
  1. @echo off&setlocal enabledelayedexpansion
  2. set li0=┌───────────────────┐
  3. set li1=│┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐│1
  4. for /l %%a in (2,1,18) do (set li%%a=│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│%%a)
  5. set li19=│└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘│19
  6. set li20=└───────────────────┘
  7. set li21=   A B C D E F G H I J K L M N O P Q R S
  8. for %%a in (%li21%) do (set/a .+=1,%%a=.&set z!.!=%%a)
  9. set z0= &set z20= &set "z21= "
  10. set li5=!li5!   五 棋 子 人 机 对 战
  11. set li7=!li7!        批 处 理
  12. set li9=!li9!   电 脑 水 平 中 等
  13. set li12=!li12!  由 netbenton 编写完成
  14. set li14=!li14!  棋盘设计参照了 batman
  15. title   批处理五子棋
  16. set str=###################
  17. set .=0
  18. for /l %%a in (1,1,19) do (
  19. set he%%a=!str!&set sh%%a=!str!
  20. for /l %%b in (1,1,19) do set [%%a.%%b=0
  21. )
  22. set .=33
  23. for /l %%a in (5,1,19) do (
  24. set pi%%a=!str:~,%%a!&set ni%%a=!str:~,%%a!
  25. set pi!.!=!str:~,%%a!&set ni!.!=!str:~,%%a!
  26. set/a .-=1
  27. )
  28. set ●=○&set a●=电脑
  29. set ○=●&set a○=玩家
  30. ::设置电脑IQ
  31. set idea=@@@@#1 #@@@@5 @#@@@4 @@@#@2 @@#@@3 $#$$$4 $$#$$3 $$$#$2 $$$$#1 #$$$$5 #$$#$#3 #$#$$#4 #@@@##2 ##@@@#5 #@@#@#3 #@#@@#4 #@@@#1
  32. set idea=!idea! ##@@@4 @@@##2 ##$$$#5 #$$$##2 #$$$#1 ##@@#4 #@@##2 ##$$#4 #$$##2 #$#$#3 @@###3 ###@@3
  33. set idea=!idea! ##@##2 ###@#3 #@###3 @####4 ####@2 ##############7 ###########6 ########4 #####3 ####2
  34. set ttr=!idea:@=●!&set ttr=!ttr:$=○!
  35. for %%a in (!ttr!) do (set var=%%a&set !var:~,-1!=!var:~-1!&set idea=!idea! !var:~,-1!)
  36. set ttr=
  37. ::设置电脑IQ
  38. :restart
  39. for /l %%a in (0,1,21) do (echo    !z%%a!!li%%a!)
  40. setlocal enabledelayedexpansion
  41. set li21=!li21!      reboot重新开始,exit退出。
  42. set /p var=选择谁先下[ W,玩家  D,电脑  Q,退出 ]:
  43. if /i "!var!" equ "Q" goto :eof
  44. if /i "!var!" equ "W" (set zhi=●) else (set zhi=○)
  45. echo.
  46. :loop
  47. if %zhi% equ ● goto :men
  48. set .=&set put1=
  49. for %%a in (!idea!) do (
  50. for %%b in (he sh) do (
  51.   for /l %%c in (1,1,19) do (
  52.    if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c
  53. ) )
  54. for %%b in (pi ni) do (
  55.   for /l %%c in (5,1,33) do (
  56.    if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c
  57. ) )
  58. if defined put1 set put=%%a&goto :get
  59. )
  60. echo. 已经和棋了
  61. pause
  62. goto :restart
  63. :men
  64. for /l %%a in (0,1,21) do (echo    !z%%a!!li%%a!)
  65. set /p user=[列前,行后]:
  66. echo.
  67. if "!user!" equ "reboot" endlocal&goto :restart
  68. if "!user!" equ "exit" exit
  69. set/a pos=!user:~0,1!,poh=!user:~1,2!,var=pos-1 2>nul
  70. if not defined [!poh!.!pos! echo 输入点不存在&goto :men
  71. if "!he%poh%:~%var%,1!" neq "#" echo 该点已经有子&goto men
  72. goto :getok
  73. :get
  74. set /a .=!random!%%.+1
  75. set put=!put%.%! !put!
  76. ::随机取最佳的走法
  77. for /f "tokens=1-3" %%a in ("%put%") do (
  78. set var=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
  79. set/a var=!var:~19,1!+%%c
  80. if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
  81. if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
  82. if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
  83. if "%%a" equ "pi" (if %%b lss 19 (set/a pos=var,poh=%%b-var+1) else (set/a poh=20-var,pos=%%b-19+var))
  84. if "%%a" equ "ni" (if %%b lss 19 (set/a pos=var,poh=19-%%b+var) else (set/a poh=var,pos=%%b-19+var))
  85. )
  86. echo  电脑最后下在:!z%pos%!!z%poh%!(%poh%)
  87. :getok
  88. set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
  89. set/a piph=poh+pos-1,lips=pos+1,niph=19+pos-poh
  90. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  91. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  92. for %%a in ("li!poh! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  93. for /f "tokens=1,2" %%b in (%%a) do (
  94.   if defined %%b (
  95.    set/a .=%%c-1
  96.    for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  97.   if "!%%b:%win%=!" neq "!%%b!" set win=y
  98.   )
  99. )
  100. )
  101. set/a asc%zhi%+=1
  102. if !win! neq y goto :loop
  103. for /l %%a in (0,1,21) do (echo    !z%%a!!li%%a!)
  104. set/p=   !a%zhi%! %zhi%子 第!asc%zhi%!手  胜出     <nul
  105. pause
  106. endlocal&goto :restart
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
6

评分人数

    • 基拉freedom: 支持!技术 + 1 PB + 5
    • Seter: 大大加油啊!PB + 10
    • 523066680: 这将改变一些人对批处理的观点。技术 + 1 PB + 30
    • 随风: 智能和效率都很不错啊!技术 + 1 PB + 20
    • yslyxqysl: 加入技术组吧技术 + 1

东西南北合

TOP

好多大神牛掰

TOP

牛逼啊,好游戏

TOP


牛人.
1

评分人数

TOP

感谢楼主分享,下载还不要积分,楼主真好,论坛真好

TOP

不支持win10啊,鼠标点不了

TOP

测试 win7退出时 会出现不能关闭的现象 比如CMD窗口标题获取管理员权限时会加上 管理员:  批处理五子棋什么什么,而导致不能识别,xp没试
可以稍微动下taskkill命令

TOP

唉!!!这都行。。。。真是佩服

TOP

回复 15# 随风
十二楼是网页代码,但我的是
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

这个不错 下来研究下

TOP

我想,我如果看完这个看懂的话,那就好了。
我也能达到初级或中级的级别了,膜拜了!

TOP

有点小难,跟我差不多水平- =不错 就是看不到电脑下的那颗棋子

TOP

學習了,趕快玩看看

TOP

回复 1# netbenton


    这个怎么用啊

TOP

返回列表