申明:本来是想发在原创代码区的,但是进去之后发现那里好像没发帖功能。所以发在这了
扫雷是看春晚是觉得无聊写的,五子棋是写完扫雷后继续无聊写的
1.扫雷 小静静_特别版- @echo off&setlocal enabledelayedexpansion
- title …扫雷(¤)…By-VBT6_村庄 #小静静_特别版
- rem 于2010年春晚节目间开始构思制作,于2010#2#15晚完成1.0版。
- :starts
- color f0&mode con cols=70 lines=20
- set zm=A B C D E F G H I J K L M N O P
- set lei=¤&set qi=♀&cls&call :sysm&echo.
- echo.版本说明:
- echo.。。输入兼容(如:A3;a3;3a;3A)均代表同一坐标点
- echo.。。支持一次多个输入,以空格间隔(格式为:1a 2a 3a bj4d cx5f)。
- echo.。。请按格式输入,错误输入可能造成未知错误。
- echo.。。本版本为小静静特别制作。赢了有奖励哦!
- echo.。。本版本未作严格测试,部分算法尚未完善,BUG在所难免,欢迎指正!
- echo.。。最后您有任何意见或疑问可以向117609665@qq.com提出或咨询!
- echo. By-村庄,于2010#2#17晚。
- :::::还有其他功能和便捷操作未作详述,当做小彩蛋自己发掘吧。:::::
- echo.&set /p qijing=请选择难度(r:容易—9×9 y:困难—16×16 其他:默认-12×12)#
- set hb=!qijing:~0,1!&set js=!qijing:~1!
- set jslv=16&for /l %%a in (10 1 30) do if %%a==!js! set /a jslv=%%a
- if !hb!==r (set nd_=9&set zm=!zm:~0,33!&mode con cols=45 lines=28&set kg= ) else (
- if !hb!==y (set nd_=16&mode con cols=70 lines=40&set kg= ) else (
- set nd_=12&set zm=!zm:~0,45!&mode con cols=55 lines=32&set kg= )
- )
- cls&set /a nd#=!nd_!*!nd_!
- ::初始表
- set h1=┳━&set h2=╋━&set h3=┻━
- set a1=&set a2=&set a3=&set hb=&set js=0
- for /l %%a in (1,1,3) do for /l %%i in (2,1,!nd_!) do set a%%a=!a%%a!!h%%a!
- for /l %%a in (1,1,!nd_!) do set hb=!hb!┃▓
- for /l %%a in (1 1 !nd#!) do set bj%%a=▓&set bj_%%a=
- ::布雷,默认16%
- for /l %%i in (2,1,!nd#!) do (set /a s=!random!%%100&if !s! lss !jslv! set bj_%%i=¤)
- ::标准数据
- set js_lei=0
- for /l %%a in (1 1 !nd#!) do if !bj_%%a!==¤ (set /a js_lei+=1) else (set pp=0&call :sjk %%a
- for /l %%b in (!_1!,1,!_2!) do if !x%%b! gtr 0 if !x%%b! leq !nd#! for %%c in (!x%%b!) do if !bj_%%c!==¤ set /a pp+=1
- set "bj_%%a=!pp! ")
- ::查看标准数据可以使用cd.>bjsj.txt&for /l %%a in (1 1 !nd#!) do echo bj_%%a=!bj_%%a!>>bjsj.txt
- call :huabiao xx 画初始表
- ::游戏开始
- :yxks
- echo.上次输入#!qijing! #%1 %2
- set /p qijing=请输入坐标(如:3a;标记旗bj3a;撤销标记旗cx3a) #
- for %%a in (!qijing!) do set sr=%%a&call :zbcl
- goto yxks
- ::游戏输入数据处理中心
- :zbcl
- if /i !sr!==xx (goto starts) else (if /i !sr!==qj (cls&goto qj) else (if /i !sr!==sm cls&call :sysm&call :qj))
- if /i "!sr:~0,2!"=="bj" (set sr=!sr:~2!&call :chuli 11) else (
- if /i "!sr:~0,2!"=="cx" (set sr=!sr:~2!&call :chuli 22) else call :chuli)
- goto :eof
- :chuli
- call :zb
- for %%a in (!shu!) do (
- if "%1"=="" (if "!bj%%a!"=="♀" set /a sx_lei+=1
- set bj%%a=!bj_%%a!&set s=!bj_%%a!
- if "!bj_%%a!"=="0 " set hh=&set js_=0&call :sjk %%a&call :fdg)
- if "%1"=="11" if "!bj%%a!"=="▓" set bj%%a=♀&set /a sx_lei-=1
- if "%1"=="22" if "!bj%%a!"=="♀" set bj%%a=▓&set /a sx_lei+=1
- )
- call :huabiao yy
- if !sx_lei!==0 call :_ying
- if !s!==¤ call :_shu 触雷了
- if !sx_lei! lss 0 call :_shu 雷不能为负
- goto :eof
- :zb
- ::下面屏蔽部分错误输入,增强兼容性
- if not "!sr:~3!"=="" set sr=17z
- if "!sr:~0,1!" gtr "9" set sr=!sr:~1!!sr:~0,1!
- if !sr:~-1! lss 9 (set sr=17z) else (if !sr:~-1! gtr !zm:~-1! set sr=17z)
- set x=!sr:~0,-1!&if !x! gtr !nd_! (set sr=17z) else (if !x! lss 0 set sr=17z)
- if !sr!==17z call :yxks 输入中出现错误 请重新输入
- ::得到坐标对应的数值
- set /a shu=(!sr:~0,-1!-1)*!nd_!
- for %%a in (!zm!) do set /a shu+=1&if /i "%%a"=="!sr:~-1!" goto :eof
- ::数据库
- :sjk
- set /a x2=%1-1&set /a x1=!x2!-!nd_!&set /a x3=!x2!+!nd_!
- set /a x7=%1+1&set /a x6=!x7!-!nd_!&set /a x8=!x7!+!nd_!
- set /a x4=%1-!nd_!&set /a x5=%1+!nd_!&set /a ww=!x5!%%!nd_!
- if !ww!==0 (set _1=1&set _2=5) else (if !ww!==1 (set _1=4&set _2=8) else (set _1=1&set _2=8))
- goto :eof
- ::如果打开的坐标值为“0”,则打开其附近8个坐标.这里最好用递归算法,但本人能力所限不能完成
- ::写了下面“fdg”;“fangdigui”两个标签基本实现一定条件下仿递归功能
- :fdg
- if "%1"=="qbbj" set /a js#+=1
- for /l %%b in (!_1!,1,!_2!) do if !x%%b! gtr 0 if !x%%b! leq !nd#! for %%c in (!x%%b!) do if "!bj%%c!"=="▓" (
- set bj%%c=!bj_%%c!&if "!bj%%c!"=="0 " set hh=!hh!%%c &set /a js_+=1)
- if "!js#!"=="!js_#!" if not "!hh!"=="" call :fangdigui
- goto :eof
- :fangdigui
- set js#=0&set h3=!hh!&set hh=&set js_#=!js_!&set js_=0
- for %%a in (!h3!) do call :sjk %%a&call :fdg qbbj
- goto :eof
- ::输
- :_shu
- msg %username% "#%1#你输了!被小静静打屁屁!js_lei!下"
- set /p qijing=你输了!要再来一盘吗?(Y_确定/S_显示答案/其他_退出):
- if /i !qijing!==y (goto starts) else (
- if /i !qijing!==s (cls&echo.答案:&echo.
- for /l %%a in (1 1 !nd#!) do set bj%%a=!bj_%%a!
- call :huabiao xx&set/p=按任意键重新开始&goto starts
- ) else exit)
- ::赢
- :_ying
- for /l %%a in (1 1 !nd#!) do if "!bj%%a!"=="▓" goto :eof
- set js=0&for /l %%a in (1 1 !nd#!) do if !bj%%a!==♀ if !bj_%%a!==¤ set /a js+=1
- if !js!==!js_lei! msg %username% " 恭喜你赢了!得到小静静香吻!js_lei!个 "&goto starts
- goto :eof
- ::画表
- :huabiao
- cls&set _n=1&set _nn=!nd_!&if %1==xx set sx_lei=!js_lei!
- echo.!kg!还有$!sx_lei!$雷 ######共有$!js_lei!$雷
- echo.###输入:xx重新开始;sm显示使用帮助###
- echo !zm!
- echo ┏━!a1!┓
- for /l %%i in (1,1,!nd_!) do (
- if %%i lss 10 (set hs= %%i) else set hs=%%i
- set hb=&for /l %%a in (!_n!,1,!_nn!) do set hb=!hb!┃!bj%%a!
- set /a _n+=!nd_!&set /a _nn+=!nd_!
- echo !hs!!hb!┃
- if not %%i==!nd_! echo ┣━!a2!┫
- )
- echo ┗━!a3!┛
- goto :eof
- :: 小静静
- :qj
- echo.&echo.
- echo _____ ^&^&^&^&_^) ^)
- echo \/,---^< ^&^&^&^&\ \
- echo ( )c~c~~@~@ )- - ^&^&\ \ !
- echo C ^>/ \^< ^|^&/ 静
- echo \_O/ #哇塞美女! _`^*-'_/ / 静
- echo ,- ^>o^<-. / ____ _/ 小
- echo / \/ \ / /\ _)_) 是
- echo / /^| ^| ^|\ \ / / ) ^| #我
- echo \ \^| ^| ^|/ / \ \ / ^|
- echo /_/`___^|_\ /_/\____^|
- echo ^| ^| ^| ^\ \^|
- echo ^| ^| ^| `. )
- echo ^| ^| ^| / /
- echo ^|__^|_^|_ /_/^|
- echo (____)_) ^|^\_\_
- echo. &set/p=按任意键返回&cls&call :huabiao _re&goto yxks
- :: 使用说明数据
- :sysm
- echo.使用说明:
- echo....输入坐标打开对应方块(如:3a或a3)
- echo....输入标记旗在坐标前加“bj”前缀(如:bj3a或bja3)
- echo....撤销标记旗在坐标前加“cx”前缀(如:cx3a或cxa3)
- echo....输入“xx”重新开始
- goto :eof
复制代码 链接: https://pan.baidu.com/s/1WyCB9epM3VWfGBfducvL7w?pwd=x7rw |