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

re 楼上

我只能做到这样了。


另外,在7楼做了一点修改:增加了最后一步特别显示,这样更容易看清电脑下在哪里了。

TOP

^G音效太恐怖了。。。

TOP

在顶楼更新一下就好了

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 #@@@##2 ##@@@#5 #@@#@#3 #@#@@#4 #@#@@3 @#@@#4 #@@@#1
  36. set idea=!idea! ##@@@4 @@@##2 @##@@#4 #@##@@3 #@#@#@4 @#@#@#3 #$$#$#3 #$#$$#4 ##$$$#5 #$$$##2 #$$$#1 ##@@#4 #@@##2 #@#@#3 ##$$#4 #$$##2 #$#$#3 #$##$#3
  37. set idea=!idea! @@###3 ###@@3 ##@##2 ###@#3 #@###3 @####4 ####@2 ##$##2 #####3
  38. set idea=!idea! #$###3 $####3 ##$##2 ###$#3 ####$3 $$###3 ###$$3 $#$##2 ##$#$4 #$##$3 $##$#3 $###$3 $$$##2 #$$#$2 $$##$2 $#$$#4 $##$$3 ##$$$4
  39. :restart
  40. (
  41. setlocal enabledelayedexpansion
  42. for /l %%a in (0,1,39) do (echo    !li%%a!)
  43. set li39=!li39!   reboot重新开始,exit退出。
  44. set li37=!li37!       back 悔棋
  45. set /p var=选择谁先下[ W,玩家  D,电脑  Q,退出 ]:
  46. if /i "!var!" equ "Q" goto :eof
  47. if /i "!var!" equ "D" (set onez=○&set towz=●&set hou=☆) else (set onez=●&set towz=○&set hou=★)
  48. set a!onez!=电脑&set a!towz!=玩家
  49. )
  50. (
  51. set ttr=!idea:@=%onez%!&set ttr=!ttr:$=%towz%!
  52. set idea=
  53. for %%a in (!ttr!) do (set var=%%a&set !var:~,-1!=!var:~-1!&set idea=!idea! !var:~,-1!)
  54. set ttr=
  55. set li27=!li27!    !onez! !a%onez%!
  56. set li25=!li25!    !towz! !a%towz%!
  57. set/a pos=10,poh=10&goto :getok
  58. )
  59. :loop
  60. (if %zhi% equ %onez% goto :men
  61. set .=
  62. for %%a in (!idea!) do (
  63. for %%b in (he sh) do (
  64.   set all=!%%b1!!%%b2!!%%b3!!%%b4!!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!
  65.   if "!all:%%a=!" neq "!all!" (
  66.    for /l %%c in (1,1,19) do (
  67.     if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c
  68.    )
  69. ) )
  70. for %%b in (pi ni) do (
  71.   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!
  72.   if "!all:%%a=!" neq "!all!" (
  73.    for /l %%c in (5,1,33) do (
  74.     if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c
  75.    )
  76. ) )
  77. if defined . set put=%%a&goto :get
  78. ))
  79. echo. 已经和棋了
  80. pause
  81. endlocal&goto :restart
  82. :men
  83. (
  84. set/a .=lips-1&for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%hou%!%%b:~%%c!)
  85. set li38=!li38![%悔:~,24%]
  86. cls
  87. for /l %%a in (0,1,39) do (echo    !li%%a!)
  88. for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  89. set li38=%li38%
  90. set /p user=!say:say=%error%! [列前,行后]:
  91. if "!user!" equ "reboot" endlocal&goto :restart
  92. if "!user!" equ "exit" exit
  93. if "!user!" equ "back" call :悔&goto :men
  94. set/a pos=!user:~0,1!,poh=!user:~1,2!,var=pos-1 2>nul
  95. if not defined [!poh!.!pos! set error=输入点不存在&goto :men
  96. )
  97. if "!he%poh%:~%var%,1!" neq "#" set error=该点已经有子&goto men
  98. goto :getok
  99. :get
  100. set /a .=!random!%%.+1
  101. set put=!put%.%! !put!
  102. ::随机取最佳的走法
  103. for /f "tokens=1-3" %%a in ("%put%") do (
  104. set var=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
  105. set/a var=!var:~19,1!+%%c
  106. if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
  107. if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
  108. if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
  109. 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))
  110. 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))
  111. )
  112. set say=say !z%pos%!!z%poh%!(%poh%)&set error=电脑最后下在:
  113. :getok
  114. set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
  115. (set/a piph=poh+pos-1,lips=pos*2+1,niph=19+pos-poh,liph=poh*2-1
  116. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  117. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  118. for %%a in ("li!liph! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  119. for /f "tokens=1,2" %%b in (%%a) do (
  120.   set/a .=%%c-1
  121.   for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
  122.   if "!%%b:%win%=!" neq "!%%b!" set win=y
  123. )
  124. ))
  125. (set/a asc%zhi%+=1
  126. set 悔= !z%pos%!!z%poh%!!悔!
  127. if !win! neq y goto :loop)
  128. for /l %%a in (0,1,39) do (echo    !li%%a!)
  129. set/p=   !a%zhi%! %zhi%子 第!asc%zhi%!手 !z%pos%!!z%poh%!(%poh%)  胜出     <nul
  130. pause
  131. endlocal&goto :restart
  132. :悔
  133. if not defined 悔 goto :eof
  134. if "!悔:~6,1!" equ "" goto :eof
  135. for %%a in (!悔:~^,6!) do (set str=%%a
  136. set/a poh=!str:~-1!,pos=!str:~,1!
  137. set/a piph=poh+pos-1,niph=19+pos-poh,liph=poh*2-1,lips=pos*2+1
  138. if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
  139. if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
  140. for %%a in ( "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
  141. for /f "tokens=1,2" %%b in (%%a) do (
  142.    set/a .=%%c-1
  143.    for %%d in (!.!) do (set %%b=!%%b:~0,%%d!#!%%b:~%%c!)
  144. )
  145. )
  146. for /f "tokens=1,2" %%b in ("li!liph! !lips!") do (
  147. set/a .=%%c-1
  148. for %%d in (!.!) do (set %%b=!%%b:~0,%%d!┼!%%b:~%%c!)
  149. ))
  150. set/a asc%zhi%-=1
  151. set 悔=!悔:~6!
  152. set error=你悔棋,耍赖皮!
  153. if not defined 悔 goto :eof
  154. set/a poh=!悔:~2,1!,pos=!悔:~1,1!,liph=poh*2-1,lips=pos*2+1
  155. set say=say !z%pos%!!z%poh%!(%poh%)
  156. goto :eof
复制代码

[ 本帖最后由 netbenton 于 2009-5-19 12:55 编辑 ]

TOP

实在静不下心来研究楼主的算法,
测试了下,智能很不错,效率也很不错,佩服!
技术问题请到论坛发帖求助!

TOP

       A B C D E F G H I J K L M N O P Q R S      reboot重新开始,exit退出。
   玩家 ○子 第10手  胜出     请按任意键继续. . .
    ┌───────────────────┐
   A│┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐│1
   B│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│2
   C│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│3
   D│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│4
   E│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│5   五 棋 子 人 机 对 战
   F│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│6
   G│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│7        批 处 理
   H│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│8
   I│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│9   电 脑 水 平 中 等
   J│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│10
   K│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│11
   L│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│12  由 netbenton 编写完成
   M│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│13
   N│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│14  棋盘设计参照了 batman
   O│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│15
   P│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│16
   Q│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│17
   R│├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤│18
   S│└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘│19
    └───────────────────┘
       A B C D E F G H I J K L M N O P Q R S
选择谁先下[ W,玩家  D,电脑  Q,退出 ]:
少了cls不好看。
还有,电脑的智商还是不高,能不能像Flash那样把我下赢?

[ 本帖最后由 yslyxqysl 于 2009-5-6 16:55 编辑 ]

TOP

set idea 这个思路相当精彩!相当!
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

厉害,这个五子棋p的iq 很棒。

TOP

占位,发红包,发红包^_%

[ 本帖最后由 wjjy 于 2009-5-6 02:52 编辑 ]
1

评分人数

TOP

返回列表