批处理之家's Archiver

yangfengoo 发表于 2010-10-10 21:46

批处理数独游戏

看VBT3群讨论这个问题好久自己闲的无聊也来练练手
擦!点错了,应该发到原创区的,不过算了就在这呆着吧[code]
@echo off&setlocal enabledelayedexpansion
color f0&mode con cols=57 lines=16
title  …数独…By 缘鸟_yangfengoo
rem 看VBT3群讨论这个问题好久自己闲的无聊也来练练手
rem NOW,LET'S GO!2010,10,9 22:59
::使用说明
ECHO,
echo, 1,本游戏支持鼠标需要第三发工具Cmos.exe,已打包
echo, 2,原始数据偷懒采用Bathome水王523066680的代码生成
echo, 3,本游戏会自动帮你分析某格内可能填写数字
echo, 4,所以请输入提示中的数字,否则会屏蔽你的错误输入
echo, 5,无聊练手之作,耗时一天仓促完成,欢迎大家测试并指正错误
echo, 6,好了,LET'S GO!
echo,                      BY 缘鸟_yangfengoo
SET/P=
mode con cols=45 lines=24
:starts
set bj=0&call :test
::布置数独数据
for /l %%i in (1,1,81) do (
    set /a s=!random!%%100
if !s! lss 60 (set bj_%%i= !bj%%i!) else (set bj_%%i=¤)
)
call :huabiao xx 画初始表
:st
::获得X Y的坐标
cmos 0 -1 1 0 21
set /a P=%errorlevel%
set /a X=%P:~0,-3%
set /a Y=%P%-1000*%X%
::坐标处理
set/a x=(X-4),y=(Y-3),z=(x/2)%%2+y%%2
if not !z!==2 echo,请左键单击 ¤ 来输入数据&goto st
set/a xx=(x/2+1)/2,yy=y/2+1,zb=xx+yy*9-9
::echo xx=!xx! yy=!yy! zb=!zb!
call :fuzhu
if "!num!"=="" goto :shibai
for /l %%a in (1,1,9) do set num=!num:%%a=%%a !
for %%a in (!zb!) do (
   if not "!bj_%%a!"=="¤" goto cxhb
   set /p "sr=此处可填写数字(!num!):"
   if !sr! geq 1 if !sr! leq 9 echo !num! | findstr /c:"!sr!" &&set bj_%%a= !sr!|| goto cxhb
   )
set sy=0&for /l %%a in (1,1,81) do if !bj_%%a!==¤ set/a sy+=1
::重新画表
:cxhb
call :huabiao
if !sy!==0 msg * 祝贺你完成游戏! &pause&goto :starts
goto :st
pause
::此功能未作严格测试,可能出错
:shibai
set/p shi=你已经填写错误导致失败,是否查看答案(Y/N):
if /i !shi!==n goto :starts
set shi=&echo,>"%temp%\daan.txt"
for /l %%a in (1,1,81) do (
   set shi=!shi!!bj%%a!  
   set/a bai=%%a%%9
   if !bai!==0 echo,&echo,!shi!>>"%temp%\daan.txt"&set shi=
   )
>"%temp%\daan.bat" (
echo @echo off
echo mode con cols=45 lines=18
echo type "%temp%\daan.txt"
echo set/p=
)
start "" "%temp%\daan.bat"
call :huabiao
set/p shi=请对比后,按任意键重新开始&goto :starts
::辅助功能排除已存在的数据,显示可填写数字
:fuzhu
set/a num=123456789,heng1=yy*9-8,heng2=yy*9,xxx=72+xx
call :tihuan !heng1! 1 !heng2!
call :tihuan !xx! 9 !xxx!
set/a xx=(xx-1)/3,yy=(yy-1)/3,zz=xx*3+1+yy*27,zzz=zz+2
for %%a in (x y z) do call :tihuan !zz! 1 !zzz!&set/a zz+=9,zzz+=9
goto :eof
::排除已存在的数据
:tihuan
for /l %%a in (%1,%2,%3) do (
  if not "!bj_%%a!"=="¤" for %%b in (!bj_%%a!) do set num=!num:%%b=!
  )
if "!num!"=="" goto :shibai
echo !num! | findstr /c:"=" && goto :shibai
goto :eof
::画表
:huabiao
cls&cls&set _n=1&set _nn=9
echo        ###请左键单击 ¤ 来输入数据###&echo,
echo    ┏━┯━┯━┳━┯━┯━┳━┯━┯━┓
for /l %%i in (1,1,9) do (
   set hb=
   for /l %%a in (!_n!,1,!_nn!) do (
      set/a hb#=%%a%%3
      if not !hb#!==0 (set hb=!hb!!bj_%%a!│) else (set hb=!hb!!bj_%%a!┃)
   )
   set/a _n+=9,_nn+=9,hb_=%%i%%3
   echo    ┃!hb!
   if not !hb_!==0 (
      echo    ┠─┼─┼─╂─┼─┼─╂─┼─┼─┨
   ) else (
  if %%i lss 9 echo    ┣━┿━┿━╋━┿━┿━╋━┿━┿━┫
   )
)  
echo    ┗━┷━┷━┻━┷━┷━┻━┷━┷━┛
goto :eof

::随机生成数独数据,用现成的,稍作改动。
::code by 523066680@Bathome
:test
set "numx=123456789"
set "ca=call :next"
:first
set /a ra=%random%%%9+1,rb=%random%%%9+1
set numx=!numx:%ra%=x!
set numx=!numx:%rb%=%ra%!
set numx=!numx:x=%rb%!
if %ra% neq 9 (goto :first)
set h1=%numx%
%ca% 1 2
%ca% 2 3
set h4=%h1:~2,1%%h1:~0,2%%h1:~5,1%%h1:~3,2%%h1:~8,1%%h1:~6,2%
%ca% 4 5
%ca% 5 6
set h7=%h4:~2,1%%h4:~0,2%%h4:~5,1%%h4:~3,2%%h4:~8,1%%h4:~6,2%
%ca% 7 8
%ca% 8 9
for /l %%a in (1,1,9) do (for /l %%b in (1,1,9) do (set h%%a=!h%%a:%%b=%%b !))
for /l %%a in (1,1,9) do for %%b in (!h%%a!) do set/a bj+=1&set bj!bj!=%%b
:next
set h%2=!h%1:~3,3!!h%1:~6!!h%1:~0,3!
goto :eof[/code]

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

broly 发表于 2010-10-10 23:14

哈哈,支持一个。
我们又碰面了  ——*

yangfengoo 发表于 2010-10-10 23:16

擦。来的好快

Batcher 发表于 2010-10-10 23:41

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

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

批处理数独解答三部曲
[url]http://www.cn-dos.net/forum/viewthread.php?tid=42306[/url]

powerbat 发表于 2010-10-10 23:48

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

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

web 发表于 2012-10-15 22:34

不清楚 +-*/

宁远 发表于 2013-2-7 10:18

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

狱渊 发表于 2013-4-20 12:44

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

Hodson124 发表于 2014-3-8 17:53

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

凡凡之呗 发表于 2015-2-7 15:15

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

凡凡之呗 发表于 2015-2-7 15:17

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.