批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

批处理数独游戏

看VBT3群讨论这个问题好久自己闲的无聊也来练练手
擦!点错了,应该发到原创区的,不过算了就在这呆着吧
  1. @echo off&setlocal enabledelayedexpansion
  2. color f0&mode con cols=57 lines=16
  3. title  …数独…By 缘鸟_yangfengoo
  4. rem 看VBT3群讨论这个问题好久自己闲的无聊也来练练手
  5. rem NOW,LET'S GO!2010,10,9 22:59
  6. ::使用说明
  7. ECHO,
  8. echo, 1,本游戏支持鼠标需要第三发工具Cmos.exe,已打包
  9. echo, 2,原始数据偷懒采用Bathome水王523066680的代码生成
  10. echo, 3,本游戏会自动帮你分析某格内可能填写数字
  11. echo, 4,所以请输入提示中的数字,否则会屏蔽你的错误输入
  12. echo, 5,无聊练手之作,耗时一天仓促完成,欢迎大家测试并指正错误
  13. echo, 6,好了,LET'S GO!
  14. echo,                      BY 缘鸟_yangfengoo
  15. SET/P=
  16. mode con cols=45 lines=24
  17. :starts
  18. set bj=0&call :test
  19. ::布置数独数据
  20. for /l %%i in (1,1,81) do (
  21.     set /a s=!random!%%100
  22. if !s! lss 60 (set bj_%%i= !bj%%i!) else (set bj_%%i=¤)
  23. )
  24. call :huabiao xx 画初始表
  25. :st
  26. ::获得X Y的坐标
  27. cmos 0 -1 1 0 21
  28. set /a P=%errorlevel%
  29. set /a X=%P:~0,-3%
  30. set /a Y=%P%-1000*%X%
  31. ::坐标处理
  32. set/a x=(X-4),y=(Y-3),z=(x/2)%%2+y%%2
  33. if not !z!==2 echo,请左键单击 ¤ 来输入数据&goto st
  34. set/a xx=(x/2+1)/2,yy=y/2+1,zb=xx+yy*9-9
  35. ::echo xx=!xx! yy=!yy! zb=!zb!
  36. call :fuzhu
  37. if "!num!"=="" goto :shibai
  38. for /l %%a in (1,1,9) do set num=!num:%%a=%%a !
  39. for %%a in (!zb!) do (
  40.    if not "!bj_%%a!"=="¤" goto cxhb
  41.    set /p "sr=此处可填写数字(!num!):"
  42.    if !sr! geq 1 if !sr! leq 9 echo !num! | findstr /c:"!sr!" &&set bj_%%a= !sr!|| goto cxhb
  43.    )
  44. set sy=0&for /l %%a in (1,1,81) do if !bj_%%a!==¤ set/a sy+=1
  45. ::重新画表
  46. :cxhb
  47. call :huabiao
  48. if !sy!==0 msg * 祝贺你完成游戏! &pause&goto :starts
  49. goto :st
  50. pause
  51. ::此功能未作严格测试,可能出错
  52. :shibai
  53. set/p shi=你已经填写错误导致失败,是否查看答案(Y/N):
  54. if /i !shi!==n goto :starts
  55. set shi=&echo,>"%temp%\daan.txt"
  56. for /l %%a in (1,1,81) do (
  57.    set shi=!shi!!bj%%a!  
  58.    set/a bai=%%a%%9
  59.    if !bai!==0 echo,&echo,!shi!>>"%temp%\daan.txt"&set shi=
  60.    )
  61. >"%temp%\daan.bat" (
  62. echo @echo off
  63. echo mode con cols=45 lines=18
  64. echo type "%temp%\daan.txt"
  65. echo set/p=
  66. )
  67. start "" "%temp%\daan.bat"
  68. call :huabiao
  69. set/p shi=请对比后,按任意键重新开始&goto :starts
  70. ::辅助功能排除已存在的数据,显示可填写数字
  71. :fuzhu
  72. set/a num=123456789,heng1=yy*9-8,heng2=yy*9,xxx=72+xx
  73. call :tihuan !heng1! 1 !heng2!
  74. call :tihuan !xx! 9 !xxx!
  75. set/a xx=(xx-1)/3,yy=(yy-1)/3,zz=xx*3+1+yy*27,zzz=zz+2
  76. for %%a in (x y z) do call :tihuan !zz! 1 !zzz!&set/a zz+=9,zzz+=9
  77. goto :eof
  78. ::排除已存在的数据
  79. :tihuan
  80. for /l %%a in (%1,%2,%3) do (
  81.   if not "!bj_%%a!"=="¤" for %%b in (!bj_%%a!) do set num=!num:%%b=!
  82.   )
  83. if "!num!"=="" goto :shibai
  84. echo !num! | findstr /c:"=" && goto :shibai
  85. goto :eof
  86. ::画表
  87. :huabiao
  88. cls&cls&set _n=1&set _nn=9
  89. echo        ###请左键单击 ¤ 来输入数据###&echo,
  90. echo    ┏━┯━┯━┳━┯━┯━┳━┯━┯━┓
  91. for /l %%i in (1,1,9) do (
  92.    set hb=
  93.    for /l %%a in (!_n!,1,!_nn!) do (
  94.       set/a hb#=%%a%%3
  95.       if not !hb#!==0 (set hb=!hb!!bj_%%a!│) else (set hb=!hb!!bj_%%a!┃)
  96.    )
  97.    set/a _n+=9,_nn+=9,hb_=%%i%%3
  98.    echo    ┃!hb!
  99.    if not !hb_!==0 (
  100.       echo    ┠─┼─┼─╂─┼─┼─╂─┼─┼─┨
  101.    ) else (
  102.   if %%i lss 9 echo    ┣━┿━┿━╋━┿━┿━╋━┿━┿━┫
  103.    )
  104. )  
  105. echo    ┗━┷━┷━┻━┷━┷━┻━┷━┷━┛
  106. goto :eof
  107. ::随机生成数独数据,用现成的,稍作改动。
  108. ::code by 523066680@Bathome
  109. :test
  110. set "numx=123456789"
  111. set "ca=call :next"
  112. :first
  113. set /a ra=%random%%%9+1,rb=%random%%%9+1
  114. set numx=!numx:%ra%=x!
  115. set numx=!numx:%rb%=%ra%!
  116. set numx=!numx:x=%rb%!
  117. if %ra% neq 9 (goto :first)
  118. set h1=%numx%
  119. %ca% 1 2
  120. %ca% 2 3
  121. set h4=%h1:~2,1%%h1:~0,2%%h1:~5,1%%h1:~3,2%%h1:~8,1%%h1:~6,2%
  122. %ca% 4 5
  123. %ca% 5 6
  124. set h7=%h4:~2,1%%h4:~0,2%%h4:~5,1%%h4:~3,2%%h4:~8,1%%h4:~6,2%
  125. %ca% 7 8
  126. %ca% 8 9
  127. for /l %%a in (1,1,9) do (for /l %%b in (1,1,9) do (set h%%a=!h%%a:%%b=%%b !))
  128. for /l %%a in (1,1,9) do for %%b in (!h%%a!) do set/a bj+=1&set bj!bj!=%%b
  129. :next
  130. set h%2=!h%1:~3,3!!h%1:~6!!h%1:~0,3!
  131. goto :eof
复制代码

[ 本帖最后由 yangfengoo 于 2010-10-13 22:27 编辑 ]

哈哈,支持一个。
我们又碰面了  ——*
---学无止境---

TOP

擦。来的好快

TOP

批处理计算有规律的数独
http://bbs.bathome.net/thread-5358-1-1.html

批处理数独世界游戏
http://bbs.bathome.net/thread-9031-1-1.html

批处理数独解答三部曲
http://www.cn-dos.net/forum/viewthread.php?tid=42306
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,不用找我要支付宝或微信账号。如果一定要给,请到微信群给大家发红吧。

TOP

数学上那么多重要的知识不去普及、发展,偏偏又搞什么奥林匹克、数独残害小学生。

http://www.sciencenet.cn/m/user_content.aspx?id=367802

TOP

不清楚 +-*/

TOP

好强大的东东啊,拿来学习一下!

TOP

额 我看的头好晕啊  新手还没入门  不过貌似很好啊  我支持你  继续出游戏啊

TOP

第三发工具Cmos.exe在哪里啊?

TOP

嗯嗯   不错诶  我复制粘贴一下看看

TOP

需要cmos?看来我无法使用了

TOP

返回列表