[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
其实我对五子棋的规则只知道连五为胜,其它规则还不是很了解,对于“花月”“浦月”技巧也不了解,呵呵



re 15楼:
12楼的是html脚本

[ 本帖最后由 netbenton 于 2009-5-10 13:28 编辑 ]

TOP

回复 15楼 的帖子

看看你电脑的HTA文件关联是不是出问题了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

高手!!!
不错!

TOP

很认同楼主说的话:
但是大多数人认为批处理的效率有问题,都不敢做人与机对战的尝试。批处理的效率真的有那么低吗?出于对dos的热爱,我就不相信批处理真的就做不到真正的五字棋人机对战!


真正热爱批处理的,是知难而上,而不是因为一些条件框框而止步,试过了才知道。
楼主的行动将改变一些人对批处理的观点。

[ 本帖最后由 523066680 于 2009-5-17 08:05 编辑 ]

TOP

升级了!电脑智能增强了。

  1. @echo off&setlocal enabledelayedexpansion
  2. mode con: lines=43 cols=110
  3. set li39=    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S
  4. set  li0=  ┌─────────────────────────────────────┐
  5. set  li1=A│┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐│A
  6. set var=1
  7. for %%a in (!li39:~5^,-1!) do (set/a var+=2&set li!var!=%%a│├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤│%%a)
  8. for /l %%a in (2,2,36) do (set li%%a=  ││  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  ││)
  9. set li37=S│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘│S
  10. set li38=  └─────────────────────────────────────┘
  11. set str=a b c d e f g h i j k l m n o p q r s
  12. for %%a in (%str%) do (set/a .+=1,%%a=.&set z!.!=%%a)
  13. set li5=!li5!   五 棋 子 人 机 对 战
  14. set li7=!li7!        批 处 理
  15. set li10=!li10!      电 脑 水 平 中 等
  16. set li31=!li31!  由 netbenton 编写完成
  17. set li33=!li33!  棋盘设计参照了 batman
  18. title   批处理五子棋
  19. set str=###################
  20. set .=0
  21. for /l %%a in (1,1,19) do (
  22.         set he%%a=!str!&set sh%%a=!str!
  23.         for /l %%b in (1,1,19) do set [%%a.%%b=0
  24. )
  25. set .=33
  26. for /l %%a in (5,1,19) do (
  27.         set pi%%a=!str:~,%%a!&set ni%%a=!str:~,%%a!
  28.         set pi!.!=!str:~,%%a!&set ni!.!=!str:~,%%a!
  29.         set/a .-=1
  30. )
  31. set ●=○&set ○=●
  32. set zhi=●
  33. set say=say
  34. ::设置电脑IQ
  35. set idea=@@@@#.1 #@@@@.5 @#@@@.4 @@@#@.2 @@#@@.3 $$$$#.1 #$$$$.5 $$#$$.3 $#$$$.4 $$$#$.2 vs1 #@@@##.2 ##@@@#.5 #@@#@#.3 #@#@@#.4 vs2 #@##@@#.4-5 #@@##@#.4-3 #@#@@.3-5 @#@@#.4-1 #@@@#.1-5 vs3
  36. set idea=!idea! ##@@@.4-5 @@@##.2-1 @##@@#.4-5 #@##@@.3-4 #@#@#@.4-2 @#@#@#.3-5 vs4 #$$#$#.3-6-1 #$#$$#.4-1-6 ##$$$#.5-1 #$$$##.2-5 vs5 #$$$#.1-5 ##@@#.4-5-1 #@@##.2-1-5 #@#@#.3 vs6 ##$$#.4-1-5 #$$##.2-5-1 #$#$#.3 #$##$#.3-4 vs7
  37. set idea=!idea! @@###.3-2 ###@@.3-4 ##@###.3-5 ###@##.2-4 ###@#.3 #@###.3 vs8 @####.4 ####@.2 ##$##.2-4 #$###.3 ###$#.3 ##@##.2-4 vs9
  38. set idea=!idea! #####.3 $####.3 ####$.3 $$###.3 ###$$.3 $#$##.2 ##$#$.4 #$##$.3 $##$#.3 $###$.3 $$$##.2 #$$#$.2 $$##$.2 $#$$#.4 $##$$.3 ##$$$.4 vs10
  39. set iqam=1000000000
  40. :restart
  41. (
  42. setlocal enabledelayedexpansion
  43. for /l %%a in (0,1,39) do (echo    !li%%a!)
  44. set li39=!li39!   reboot重新开始,exit退出。
  45. set li37=!li37!       back 悔棋
  46. set /p var=选择谁先下[ W,玩家  D,电脑  Q,退出 ]:
  47. if /i "!var!" equ "Q" goto :eof
  48. if /i "!var!" equ "D" (set onez=○&set towz=●&set hou=☆) else (set onez=●&set towz=○&set hou=★)
  49. set a!onez!=电脑&set a!towz!=玩家
  50. )
  51. (
  52. set ttr=!idea:@=%onez%!&set ttr=!ttr:$=%towz%!
  53. set idea=
  54. for %%a in (!ttr!) do (
  55.         for /f "tokens=1,2 delims=." %%b in ("%%a") do (set %%b=%%c&set idea=!idea! %%b)
  56. )
  57. set ttr=
  58. set li27=!li27!    !onez! !a%onez%!
  59. set li25=!li25!    !towz! !a%towz%!
  60. set/a pos=10,poh=10&goto :getok
  61. )
  62. :loop
  63. (if %zhi% equ %onez% goto :men
  64. set .=
  65. setlocal enabledelayedexpansion
  66. for %%a in (!idea!) do (
  67.         set str=%%a
  68.         if "!str:~,2!" neq "vs" (
  69.         for %%b in (he sh) do (
  70.                 set all=!%%b1!!%%b2!!%%b3!!%%b4!!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!
  71.                 if "!all:%%a=!" neq "!all!" (
  72.                         for /l %%c in (1,1,19) do (
  73.                                 if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  74.                         )
  75.         )        )
  76.         for %%b in (pi ni) do (
  77.                 set all=!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!!%%b20!!%%b21!!%%b22!!%%b23!!%%b24!!%%b25!!%%b26!!%%b27!!%%b28!!%%b29!!%%b30!!%%b31!!%%b32!!%%b33!
  78.                 if "!all:%%a=!" neq "!all!" (
  79.                         for /l %%c in (5,1,33) do (
  80.                                 if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  81.                         )
  82.         )        )
  83.         ) else (
  84.                 set/a "iqam=(iqam+1)/8"
  85.                 if !.! gtr 20 goto :get
  86.                
  87.                
  88.         )
  89. ))
  90. if defined . (goto :get)
  91. echo. 已经和棋了
  92. pause
  93. endlocal&goto :restart
  94. :men
  95. (
  96. set/a .=lips-1&for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%hou%!%%b:~%%c!)
  97. set li38=!li38![%悔:~,24%]
  98. cls
  99. for /l %%a in (0,1,39) do (echo    !li%%a!)
  100. for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  101. set li38=%li38%
  102. set /p user=!say:say=%error%! [列前,行后]:
  103. if "!user!" equ "reboot" endlocal&goto :restart
  104. if "!user!" equ "exit" exit
  105. if "!user!" equ "back" call :悔&goto :men
  106. set/a pos=!user:~0,1!,poh=!user:~1,2!,var=pos-1 2>nul
  107. if not defined [!poh!.!pos! set error=输入点不存在&goto :men
  108. )
  109. if "!he%poh%:~%var%,1!" neq "#" set error=该点已经有子&goto men
  110. goto :getok
  111. :get
  112. set `=
  113. ::取最佳的走法
  114. for /l %%z in (!.!,-1,1) do (
  115. for /f "tokens=1,2,3 delims=." %%1 in ("!put%%z!") do (
  116. for /f "tokens=1-4" %%a in ("%%1 %%2") do (
  117.         set vara=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
  118.         set iqm=%%3
  119. for %%4 in (!%%2:-^=;!) do (
  120.         set/a var=!vara:~19,1!+%%4
  121.         if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
  122.         if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
  123.         if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
  124.         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))
  125.         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))
  126.         if not defined R!pos!R!poh!R set /a `+=1&set ram!`!=R!pos!R!poh!R
  127.         set/a R!pos!R!poh!R+=iqm,"iqm=%%3/16"
  128. )
  129. )
  130. )
  131. )
  132. set rmk=0
  133. for /l %%a in (1,1,!.!) do (
  134.         for %%b in (!ram%%a!) do (
  135.                 for %%c in (!%%b!) do (
  136.                         if %%c gtr !rmk! set rmk=%%c&set rmz=%%b
  137.                 )
  138. )        )
  139. for /f "tokens=1,2 delims=R" %%a in ("!rmz!") do (set/a pos=%%a,poh=%%b)
  140. rem start set r^&pause^&exit
  141. endlocal&set/a pos=%pos%,poh=%poh%
  142. set say=say !z%pos%!!z%poh%!(%poh%)&set error=电脑最后下在:
  143. :getok
  144. set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
  145. (set/a piph=poh+pos-1,lips=pos*2+1,niph=19+pos-poh,liph=poh*2-1
  146. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  147. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  148. for %%a in ("li!liph! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  149.         for /f "tokens=1,2" %%b in (%%a) do (
  150.                 set/a .=%%c-1
  151.                 for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  152.                 if "!%%b:%win%=!" neq "!%%b!" set win=y
  153.         )
  154. ))
  155. (set/a asc%zhi%+=1
  156. set 悔= !z%pos%!!z%poh%!!悔!
  157. if !win! neq y goto :loop)
  158. for /l %%a in (0,1,39) do (echo    !li%%a!)
  159. set/p=   !a%zhi%! %zhi%子 第!asc%zhi%!手 !z%pos%!!z%poh%!(%poh%)  胜出     <NUL
  160. pause
  161. endlocal&goto :restart
  162. :悔
  163. if not defined 悔 goto :eof
  164. if "!悔:~6,1!" equ "" goto :eof
  165. for %%a in (!悔:~^,6!) do (set str=%%a
  166. set/a poh=!str:~-1!,pos=!str:~,1!
  167. set/a piph=poh+pos-1,niph=19+pos-poh,liph=poh*2-1,lips=pos*2+1
  168. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  169. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  170. for %%a in ( "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  171.         for /f "tokens=1,2" %%b in (%%a) do (
  172.                         set/a .=%%c-1
  173.                         for %%d in (!.!) do (set %%b=!%%b:~0,%%d!#!%%b:~%%c!)
  174.         )
  175. )
  176. for /f "tokens=1,2" %%b in ("li!liph! !lips!") do (
  177.         set/a .=%%c-1
  178.         for %%d in (!.!) do (set %%b=!%%b:~0,%%d!┼!%%b:~%%c!)
  179. ))
  180. set/a asc%zhi%-=1
  181. set 悔=!悔:~6!
  182. set error=你悔棋,耍赖皮!
  183. if not defined 悔 goto :eof
  184. set/a poh=!悔:~2,1!,pos=!悔:~1,1!,liph=poh*2-1,lips=pos*2+1
  185. set say=say !z%pos%!!z%poh%!(%poh%)
  186. goto :eof
复制代码

TOP

1、能否在顶楼记录一下更新历史?
2、围棋、五子棋、国际象棋的棋盘和落点通常是用英文字母+数字来表示的,是否考虑更新一下?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2009-5-19 11:54 发表
1、能否在顶楼记录一下更新历史?
2、围棋、五子棋、国际象棋的棋盘和落点通常是用英文字母+数字来表示的,是否考虑更新一下?

原来是这样呀,我当初想的是为了输入点时能方便一点,因为又要输入字母又要输入数字,而且数字的还是两位
不方便。

TOP

现在下起来,是有输有赢了!
通常是先下的赢。
2009.6.2 更新

  1. @echo off&setlocal enabledelayedexpansion
  2. mode con: lines=43 cols=110
  3. set li39=    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S
  4. set  li0=  ┌─────────────────────────────────────┐
  5. set  li1=A│┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐│A
  6. set var=1
  7. for %%a in (!li39:~5^,-1!) do (set/a var+=2&set li!var!=%%a│├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤│%%a)
  8. for /l %%a in (2,2,36) do (set li%%a=  ││  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  ││)
  9. set li37=S│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘│S
  10. set li38=  └─────────────────────────────────────┘
  11. set str=a b c d e f g h i j k l m n o p q r s
  12. for %%a in (%str%) do (set/a .+=1,%%a=.&set z!.!=%%a)
  13. set li5=!li5!   五 棋 子 人 机 对 战
  14. set li7=!li7!        批 处 理
  15. set li10=!li10!      电 脑 水 平 中 等
  16. set li31=!li31!  由 netbenton 编写完成
  17. set li33=!li33!  棋盘设计参照了 batman
  18. title   批处理五子棋
  19. set str=###################
  20. set .=0
  21. for /l %%a in (1,1,19) do (
  22. set he%%a=!str!&set sh%%a=!str!
  23. for /l %%b in (1,1,19) do set [%%a.%%b=0
  24. )
  25. set .=33
  26. for /l %%a in (5,1,19) do (
  27. set pi%%a=!str:~,%%a!&set ni%%a=!str:~,%%a!
  28. set pi!.!=!str:~,%%a!&set ni!.!=!str:~,%%a!
  29. set/a .-=1
  30. )
  31. set ●=○&set ○=●
  32. set zhi=●
  33. set say=say
  34. ::设置电脑IQ
  35. set idea=@@@@#.1 #@@@@.5 @#@@@.4 @@@#@.2 @@#@@.3 vs0 $$$$#.1 #$$$$.5 $$#$$.3 $#$$$.4 $$$#$.2 vs1 #@@@##.2 ##@@@#.5 #@@#@#.3 #@#@@#.4 vs2 #@##@@#.4-5 #@@##@#.4-3 #@#@@.3-5 @#@@#.4-1 #@@@##.2-W-1 ##@@@#.5-W-6 vs3
  36. set idea=!idea! ##@@@.4-W-5 @@@##.2-W-1 @##@@#.4-5 #@##@@.3-4 #@#@#@.4-2 @#@#@#.3-5 vs4 #$$#$#.3-W-6-1 #$#$$#.4-W-1-6 ##$$$#.5-W-1-6 #$$$##.2-W-1-6 vs5 ##@@##.2-5-W-6-1 #@#@#.3-w-1-5 ##$$$.W-4-5 $$$##.W-2-1 $$##$.W-2-3 $##$$.W-3-4 $#$$#.W-4-1 $#$#$.W-4-2 #$$#$.W-2-5 ##$$#.W-4-W-1-5 #$$##.W-2-W-1-5 #$#$#.W-3-W-1-5 #$##$#.W-3-4
  37. set idea=!idea! vs7 #$$$#.1-5 @@###.4-3 ###@@.3-4 ###@###.3-5-W-2-6-W-1-7 vs8 ###$###.3-5 vs9 @####.4 ####@.2 #$###.3 ###$#.3
  38. set idea=!idea! ###@#.3 #@###.3 $####.3 ####$.3 $$###.3 ###$$.3 $#$##.2 ##$#$.4 #$##$.3 $##$#.3 $###$.3 vs10
  39. set iqam=1000000000
  40. :restart
  41. (
  42. setlocal enabledelayedexpansion
  43. for /l %%a in (0,1,39) do (echo    !li%%a!)
  44. set li39=!li39!   reboot重新开始,exit退出。
  45. set li37=!li37!       back 悔棋
  46. set /p var=选择谁先下[ W,玩家  D,电脑  Q,退出 ]:
  47. if /i "!var!" equ "Q" goto :quit
  48. if /i "!var!" equ "D" (set onez=○&set towz=●&set hou=☆) else (set onez=●&set towz=○&set hou=★)
  49. set a!onez!=电脑&set a!towz!=玩家
  50. )
  51. (
  52. set ttr=!idea:@=%onez%!&set ttr=!ttr:$=%towz%!
  53. set idea=
  54. for %%a in (!ttr!) do (
  55. for /f "tokens=1,2 delims=." %%b in ("%%a") do (set %%b=%%c&set idea=!idea! %%b)
  56. )
  57. set ttr=
  58. set li27=!li27!    !onez! !a%onez%!
  59. set li25=!li25!    !towz! !a%towz%!
  60. set/a pos=10,poh=10&goto :getok
  61. )
  62. :loop
  63. (if %zhi% equ %onez% goto :men
  64. set .=
  65. setlocal enabledelayedexpansion
  66. for %%a in (!idea!) do (
  67. set str=%%a
  68. if "!str:~,2!" neq "vs" (
  69. for %%b in (he sh) do (
  70.   set all=!%%b1!!%%b2!!%%b3!!%%b4!!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!
  71.   if "!all:%%a=!" neq "!all!" (
  72.    for /l %%c in (1,1,19) do (
  73.     if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  74.    )
  75. ) )
  76. for %%b in (pi ni) do (
  77.   set all=!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!!%%b20!!%%b21!!%%b22!!%%b23!!%%b24!!%%b25!!%%b26!!%%b27!!%%b28!!%%b29!!%%b30!!%%b31!!%%b32!!%%b33!
  78.   if "!all:%%a=!" neq "!all!" (
  79.    for /l %%c in (5,1,33) do (
  80.     if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  81.    )
  82. ) )
  83. ) else (
  84.   set/a "iqam=(iqam+1)/8"
  85.   if %%a equ vs8 if defined . goto :get
  86.   if %%a equ vs9 if defined . goto :get
  87.   
  88.   
  89. )
  90. ))
  91. if defined . (goto :get)
  92. echo. 已经和棋了
  93. pause
  94. endlocal&goto :restart
  95. :men
  96. (
  97. set/a .=lips-1&for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%hou%!%%b:~%%c!)
  98. set li38=!li38![%悔:~,24%]
  99. cls
  100. for /l %%a in (0,1,39) do (echo    !li%%a!)
  101. for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  102. set li38=%li38%
  103. set /p user=!say:say=%error%! [列前,行后]:
  104. if "!user!" equ "reboot" endlocal&goto :restart
  105. if "!user!" equ "exit" goto :quit
  106. if "!user!" equ "back" call :悔&goto :men
  107. set/a pos=!user:~0,1!,poh=!user:~1,2!,var=pos-1 2>nul
  108. if not defined [!poh!.!pos! set error=输入点不存在&goto :men
  109. )
  110. if "!he%poh%:~%var%,1!" neq "#" set error=该点已经有子&goto men
  111. goto :getok
  112. :get
  113. set `=
  114. ::取最佳的走法
  115. for /l %%z in (!.!,-1,1) do (
  116. for /f "tokens=1,2,3 delims=." %%1 in ("!put%%z!") do (
  117. for /f "tokens=1-4" %%a in ("%%1 %%2") do (
  118. set iqm=%%3
  119. set vara=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
  120. for %%4 in (!%%2:-^=;!) do (
  121.    if "%%4" equ "W" (set/a iqm=iqm/5*3) else (
  122.   set/a var=!vara:~19,1!+%%4
  123.   if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
  124.   if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
  125.   if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
  126.   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))
  127.   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))
  128.   if not defined R!pos!R!poh!R set /a `+=1&set ram!`!=R!pos!R!poh!R
  129.   set/a R!pos!R!poh!R+=iqm
  130.    )
  131. )
  132. )
  133. )
  134. )
  135. set rmk=0
  136. for /l %%a in (1,1,!`!) do (
  137. for %%b in (!ram%%a!) do (
  138.   for %%c in (!%%b!) do (
  139.    if %%c gtr !rmk! set/a rmk=%%c,.=0
  140.    if %%c equ !rmk! set rmz!.!=%%b&set/a .+=1
  141.   )
  142. ) )
  143. set/a .=!random!%%.
  144. for /f "tokens=1,2 delims=R" %%a in ("!rmz%.%!") do (set/a pos=%%a,poh=%%b)
  145. rem start set r^&echo !.!^&pause^&exit
  146. endlocal&set/a pos=%pos%,poh=%poh%
  147. set say=say !z%pos%!!z%poh%!(%poh%)&set error=电脑最后下在:
  148. :getok
  149. set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
  150. (set/a piph=poh+pos-1,lips=pos*2+1,niph=19+pos-poh,liph=poh*2-1
  151. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  152. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  153. for %%a in ("li!liph! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  154. for /f "tokens=1,2" %%b in (%%a) do (
  155.   set/a .=%%c-1
  156.   for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  157.   if "!%%b:%win%=!" neq "!%%b!" set win=y
  158. )
  159. ))
  160. (set/a asc%zhi%+=1
  161. set 悔= !z%pos%!!z%poh%!!悔!
  162. if !win! neq y goto :loop)
  163. for /l %%a in (0,1,39) do (echo    !li%%a!)
  164. set/p=   !a%zhi%! %zhi%子 第!asc%zhi%!手 !z%pos%!!z%poh%!(%poh%)  胜出   <nul
  165. pause
  166. endlocal&goto :restart
  167. :悔
  168. if not defined 悔 goto :eof
  169. if "!悔:~6,1!" equ "" goto :eof
  170. for %%a in (!悔:~^,6!) do (set str=%%a
  171. set/a poh=!str:~-1!,pos=!str:~,1!
  172. set/a piph=poh+pos-1,niph=19+pos-poh,liph=poh*2-1,lips=pos*2+1
  173. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  174. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  175. for %%a in ( "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  176. for /f "tokens=1,2" %%b in (%%a) do (
  177.    set/a .=%%c-1
  178.    for %%d in (!.!) do (set %%b=!%%b:~0,%%d!#!%%b:~%%c!)
  179. )
  180. )
  181. for /f "tokens=1,2" %%b in ("li!liph! !lips!") do (
  182. set/a .=%%c-1
  183. for %%d in (!.!) do (set %%b=!%%b:~0,%%d!┼!%%b:~%%c!)
  184. ))
  185. set/a asc%zhi%-=1
  186. set 悔=!悔:~6!
  187. set error=你悔棋,耍赖皮!
  188. if not defined 悔 goto :eof
  189. set/a poh=!悔:~2,1!,pos=!悔:~1,1!,liph=poh*2-1,lips=pos*2+1
  190. set say=say !z%pos%!!z%poh%!(%poh%)
  191. goto :eof
  192. :quit
  193. taskkill /fi "WINDOWTITLE eq 批处理五子棋*" /im cmd.exe
复制代码

[ 本帖最后由 netbenton 于 2009-6-4 12:42 编辑 ]

TOP

增加了背景音乐《春江花月夜》,如高山流水般的声音,听着下五棋子,太爽了,包含播放代码及音乐文件仅96K,请看链接:http://www.cn-dos.net/forum/viewthread.php?tid=47326&fpage=1 (在41楼)


正在想学习vbs,所以搞了这个;写得不好,大家不要见笑呀!

[要看最终修改请到一楼下载附件]

[ 本帖最后由 netbenton 于 2009-8-14 21:02 编辑 ]

TOP

23楼没有看到更新记录啊?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这个都能做出来,真是让我这个菜鸟震惊!是在佩服楼主的强大能力。五体投地佩服ing..
只是我老是看花眼,如果能支持鼠标的话那真是完美啊!!.
逍遙濤濤

TOP

re 25楼
不好意思,现在补上了

re 26楼
有时间的话,看来要做个支持鼠标的才行;不过得用到三方。
要是用vbs协助,可以支持鼠标的话就好了。

TOP

看来我得加紧的学习 这样的都有

TOP

努力

我玩过LZ的老版本,那个时候我还能赢上几盘,现在真是没的赢了。
我是新手,看到各位老师如此厉害,试想我也行吗?
为明天奋斗

TOP

鼠标版批处理五子棋做好了,需要cmos.exe三方鼠标支持
cmos.exe 下载地址:http://bbs.bathome.net/viewthread.php?tid=3148&extra=&page=1

  1. @echo off&setlocal enabledelayedexpansion
  2. mode con: lines=43 cols=110
  3. set li39=    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S
  4. set  li0=  ┌─────────────────────────────────────┐
  5. set  li1=A│┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐│A
  6. set var=1
  7. for %%a in (!li39:~5^,-1!) do (set/a var+=2&set li!var!=%%a│├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤│%%a)
  8. for /l %%a in (2,2,36) do (set li%%a=  ││  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  ││)
  9. set li37=S│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘│S
  10. set li38=  └─────────────────────────────────────┘
  11. set str=a b c d e f g h i j k l m n o p q r s
  12. for %%a in (%str%) do (set/a .+=1,%%a=.&set z!.!=%%a)
  13. set li5=!li5!   五 棋 子 人 机 对 战
  14. set li7=!li7!        批 处 理
  15. set li10=!li10!      电 脑 水 平 中 等
  16. set li31=!li31!  由 netbenton 编写完成
  17. set li33=!li33!  棋盘设计参照了 batman
  18. set li35=!li35!  鼠标三方支持  Defanive
  19. set li16=!li16!           [重来]
  20. set li17=!li17!         [退出]
  21. set li22=!li22!           [悔棋]
  22. set li19=!li19!       电脑最后下在:
  23. title   批处理五子棋
  24. set str=###################
  25. set .=0
  26. for /l %%a in (1,1,19) do (
  27.         set he%%a=!str!&set sh%%a=!str!
  28.         for /l %%b in (1,1,19) do set [%%a.%%b=0
  29. )
  30. set .=33
  31. for /l %%a in (5,1,19) do (
  32.         set pi%%a=!str:~,%%a!&set ni%%a=!str:~,%%a!
  33.         set pi!.!=!str:~,%%a!&set ni!.!=!str:~,%%a!
  34.         set/a .-=1
  35. )
  36. set ●=○&set ○=●
  37. set zhi=●
  38. set say=say
  39. ::设置电脑IQ
  40. set idea=@@@@#.1 #@@@@.5 @#@@@.4 @@@#@.2 @@#@@.3 vs0 $$$$#.1 #$$$$.5 $$#$$.3 $#$$$.4 $$$#$.2 vs1 #@@@##.2 ##@@@#.5 #@@#@#.3 #@#@@#.4 vs2 #@##@@#.4-5 #@@##@#.4-3 #@#@@.3-5 @#@@#.4-1 #@@@##.2-W-1 ##@@@#.5-W-6 vs3
  41. set idea=!idea! ##@@@.4-W-5 @@@##.2-W-1 @##@@#.4-5 #@##@@.3-4 #@#@#@.4-2 @#@#@#.3-5 vs4 #$$#$#.3-W-6-1 #$#$$#.4-W-1-6 ##$$$#.5-W-1-6 #$$$##.2-W-1-6 vs5 ##@@##.2-5-W-6-1 #@#@#.3-w-1-5 ##$$$.W-4-5 $$$##.W-2-1 $$##$.W-2-3 $##$$.W-3-4 $#$$#.W-4-1 $#$#$.W-4-2 #$$#$.W-2-5 ##$$#.W-4-W-1-5 #$$##.W-2-W-1-5 #$#$#.W-3-W-1-5 #$##$#.W-3-4
  42. set idea=!idea! vs7 #$$$#.1-5 @@###.4-3 ###@@.3-4 ###@###.3-5-W-2-6-W-1-7 vs8 ###$###.3-5 vs9 @####.4 ####@.2 #$###.3 ###$#.3
  43. set idea=!idea! ###@#.3 #@###.3 $####.3 ####$.3 $$###.3 ###$$.3 $#$##.2 ##$#$.4 #$##$.3 $##$#.3 $###$.3 vs10
  44. set iqam=1000000000
  45. color 2f
  46. :restart
  47. cls
  48. setlocal enabledelayedexpansion
  49. for /l %%a in (0,1,18) do (echo;  )
  50. set /p =                              选择谁先下: [玩家]  [电脑]  [退出]<NUL
  51. :cmos1
  52. cmos c f
  53. set var=!errorlevel!
  54. set /a var=!var:~-2!*100+!var:~-6,-3!/4
  55. if "!var!" equ "2015" goto :quit
  56. if "!var!" equ "2013" (set onez=○&set towz=●&set hou=☆)
  57. if "!var!" equ "2011" (set onez=●&set towz=○&set hou=★)
  58. if not defined onez goto :cmos1
  59. set a!onez!=电脑&set a!towz!=玩家
  60. (
  61. set ttr=!idea:@=%onez%!&set ttr=!ttr:$=%towz%!
  62. set idea=
  63. for %%a in (!ttr!) do (
  64.         for /f "tokens=1,2 delims=." %%b in ("%%a") do (set %%b=%%c&set idea=!idea! %%b)
  65. )
  66. set ttr=
  67. set li27=!li27!    !onez! !a%onez%!
  68. set li25=!li25!    !towz! !a%towz%!
  69. set/a pos=10,poh=10&goto :getok
  70. )
  71. :loop
  72. (if %zhi% equ %onez% goto :men
  73. set .=
  74. setlocal enabledelayedexpansion
  75. for %%a in (!idea!) do (
  76.         set str=%%a
  77.         if "!str:~,2!" neq "vs" (
  78.         for %%b in (he sh) do (
  79.                 set all=!%%b1!!%%b2!!%%b3!!%%b4!!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!
  80.                 if "!all:%%a=!" neq "!all!" (
  81.                         for /l %%c in (1,1,19) do (
  82.                                 if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  83.                         )
  84.         )        )
  85.         for %%b in (pi ni) do (
  86.                 set all=!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!!%%b20!!%%b21!!%%b22!!%%b23!!%%b24!!%%b25!!%%b26!!%%b27!!%%b28!!%%b29!!%%b30!!%%b31!!%%b32!!%%b33!
  87.                 if "!all:%%a=!" neq "!all!" (
  88.                         for /l %%c in (5,1,33) do (
  89.                                 if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
  90.                         )
  91.         )        )
  92.         ) else (
  93.                 set/a "iqam=(iqam+1)/8"
  94.                 if %%a equ vs8 if defined . goto :get
  95.                 if %%a equ vs9 if defined . goto :get
  96.                
  97.                
  98.         )
  99. ))
  100. if defined . (goto :get)
  101. echo. 已经和棋了
  102. pause
  103. endlocal&goto :restart
  104. :men
  105. (
  106. set/a .=lips-1&for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%hou%!%%b:~%%c!)
  107. set li38=!li38![%悔:~,24%]
  108. cls
  109. for /l %%a in (0,1,39) do (echo    !li%%a!)
  110. for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  111. set li38=%li38%
  112. echo !say:say=%error%!
  113. )
  114. :cmoslp
  115. (cmos c f
  116. set user=!errorlevel!
  117. set/a poh1=1!user:~-2!-100,pos1=!user:~-6,-3!/2-2
  118. set/a poh=poh1/2,pos=pos1/2,poh1=poh1-poh,pos1=pos1-pos,var=pos-1
  119. if "!poh!.!pos!" equ "8.23" endlocal&goto :restart
  120. if "!poh!.!pos!" equ "9.23" goto :quit
  121. if "!poh!.!pos!" equ "11.23" call :悔&goto :men
  122. if !poh1!!pos1! neq !poh!!pos! goto :cmoslp
  123. if not defined [!poh!.!pos! set error=输入点不存在!auser!&goto :men
  124. )
  125. if "!he%poh%:~%var%,1!" neq "#" set error=该点已经有子&goto men
  126. goto :getok
  127. :get
  128. set `=
  129. ::取最佳的走法
  130. for /l %%z in (!.!,-1,1) do (
  131. for /f "tokens=1,2,3 delims=." %%1 in ("!put%%z!") do (
  132. for /f "tokens=1-4" %%a in ("%%1 %%2") do (
  133.         set iqm=%%3
  134.         set vara=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
  135.         for %%4 in (!%%2:-^=;!) do (
  136.           if "%%4" equ "W" (set/a iqm=iqm/5*3) else (
  137.                 set/a var=!vara:~19,1!+%%4
  138.                 if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
  139.                 if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
  140.                 if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
  141.                 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))
  142.                 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))
  143.                 if not defined R!pos!R!poh!R set /a `+=1&set ram!`!=R!pos!R!poh!R
  144.                 set/a R!pos!R!poh!R+=iqm
  145.           )
  146.         )
  147. )
  148. )
  149. )
  150. set rmk=0
  151. for /l %%a in (1,1,!`!) do (
  152.         for %%b in (!ram%%a!) do (
  153.                 for %%c in (!%%b!) do (
  154.                         if %%c gtr !rmk! set/a rmk=%%c,.=0
  155.                         if %%c equ !rmk! set rmz!.!=%%b&set/a .+=1
  156.                 )
  157. )        )
  158. set/a .=!random!%%.
  159. for /f "tokens=1,2 delims=R" %%a in ("!rmz%.%!") do (set/a pos=%%a,poh=%%b)
  160. rem start set r^&echo !.!^&pause^&exit
  161. endlocal&set/a pos=%pos%,poh=%poh%
  162. set say=say !z%pos%!!z%poh%!(%poh%)&set error=电脑最后下在:
  163. :getok
  164. set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
  165. (set/a piph=poh+pos-1,lips=pos*2+1,niph=19+pos-poh,liph=poh*2-1
  166. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  167. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  168. for %%a in ("li!liph! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  169.         for /f "tokens=1,2" %%b in (%%a) do (
  170.                 set/a .=%%c-1
  171.                 for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  172.                 if "!%%b:%win%=!" neq "!%%b!" set win=y
  173.         )
  174. ))
  175. (set/a asc%zhi%+=1
  176. set 悔= !z%pos%!!z%poh%!!悔!
  177. if !win! neq y goto :loop)
  178. cls
  179. for /l %%a in (0,1,39) do (echo    !li%%a!)
  180. set/p=   !a%zhi%! %zhi%子 第!asc%zhi%!手 !z%pos%!!z%poh%!(%poh%)  胜出 单击鼠标继续。。。  <NUL
  181. cmos c f
  182. endlocal&goto :restart
  183. :悔
  184. if not defined 悔 goto :eof
  185. if "!悔:~6,1!" equ "" goto :eof
  186. for %%a in (!悔:~^,6!) do (set str=%%a
  187. set/a poh=!str:~-1!,pos=!str:~,1!
  188. set/a piph=poh+pos-1,niph=19+pos-poh,liph=poh*2-1,lips=pos*2+1
  189. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  190. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  191. for %%a in ( "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  192.         for /f "tokens=1,2" %%b in (%%a) do (
  193.                         set/a .=%%c-1
  194.                         for %%d in (!.!) do (set %%b=!%%b:~0,%%d!#!%%b:~%%c!)
  195.         )
  196. )
  197. for /f "tokens=1,2" %%b in ("li!liph! !lips!") do (
  198.         set/a .=%%c-1
  199.         for %%d in (!.!) do (set %%b=!%%b:~0,%%d!┼!%%b:~%%c!)
  200. ))
  201. set/a asc%zhi%-=1
  202. set 悔=!悔:~6!
  203. set error=你悔棋,耍赖皮!
  204. if not defined 悔 goto :eof
  205. set/a poh=!悔:~2,1!,pos=!悔:~1,1!,liph=poh*2-1,lips=pos*2+1
  206. set say=say !z%pos%!!z%poh%!(%poh%)
  207. goto :eof
  208. :quit
  209. taskkill /fi "WINDOWTITLE eq 批处理五子棋*" /im cmd.exe
复制代码

TOP

返回列表