@echo off
Setlocal Enabledelayedexpansion
rem 核心代碼terse 遊戲moniuming
color 3e&title 數字九宮格遊戲
echo.&echo 歡迎使用本綠色免安裝版九宮格數字遊戲, 在進入遊戲前請詳細閱讀此說明,
echo.&echo 進入遊戲會出現以下的畫面,第壹行和第壹列分別為橫坐標和縱坐標,僅作參考,
echo.&echo 遊戲規則為: 用數字替換各個符號, 使每行和每列都出現 1~9 這 9 個數字,
echo.&echo 並且 9 個 3^*3 的區域裏也要包含 1~9 這 9 個數字. (左圖^=^=^>右圖)
echo.&echo 玩法: 比如下圖中要把 4 填在第 3 行第 1 列的位置,輸入 431 然後回車即可.
echo.&echo 請按任意鍵進入遊戲, 祝妳玩得愉快...... ^^_^^
echo.&echo 1 2 3 4 5 6 7 8 9
echo.
echo. 1 6 8 7 _ / 1 - + 2 6 8 7 4 9 1 5 3 2
echo. 2 9 3 - 5 8 _ / + 7 9 3 1 5 8 2 4 6 7
echo. 3 / 5 _ 3 + 7 1 8 - 4 5 2 3 6 7 1 8 9
echo. 4 / 6 4 - 1 + _ 9 8 5 6 4 2 1 3 7 9 8
echo. 5 2 9 8 7 5 + / _ - 2 9 8 7 5 6 3 1 4
echo. 6 7 - _ 9 4 + 2 5 / 7 1 3 9 4 8 2 5 6
echo. 7 _ 4 9 6 + 5 / - 1 3 4 9 6 7 5 8 2 1
echo. 8 - _ 5 8 / + 6 4 3 1 7 5 8 2 9 6 4 3
echo. 9 _ / 6 - 3 4 9 + 5 8 2 6 1 3 4 9 7 5
pause>nul&cls
set "cod= +-_/\#"&set "st= 1 2 3 4 5 6 7 8 9"&set "color_=12345689abcde"
set "kong= "
set "echo_=好 極 了, 完 全 正 確, 恭 喜 妳, 繼 續 努 力 喔 "
for /l %%a in (1 1 80) do (set "tui=!tui!")
:again
color 3e&set "input=4"
for /l %%a in (1 1 9) do (
for /l %%b in (1 1 9) do (set "_%%a%%b="&set "%%a%%b=")
)
echo.&echo 1~6為難度選擇,4為默認的難度
echo.&set /p input=請輸入:
cls
if %input% gtr 6 (echo.&echo 選擇錯誤&goto :again)
if %input% lss 1 (echo.&echo 選擇錯誤&goto :again)
for /l %%i in (1 1 9) do echo.
echo 正在生成遊戲,請稍候...
:st
for /l %%i in (1 1 9) do (set "mor%%i="&set "%%i=")
for /l %%i in (1 1 9) do call:lp %%i
for /l %%a in (1 1 9) do (set "moniuming%%a=!mor%%a!")
:lp3
set /a "num1=%random%%%9+1"
if defined %num1% goto :lp3
set "%num1%=god"
for /f "tokens=%num1%" %%g in ("!mor%line%!") do (
set /a "num2+=1","_%line%%num1%=god"
call set "%line%%num1%=%%cod:~!num2!,1%%"
call call set "mor%line%=%%%%mor%line%:%%g=%%cod:~!num2!,1%%%%%%"
)
if %dfc% lss %input% (set /a "dfc+=1"&goto :lp3)
for /l %%a in (1 1 9) do (set "%%a=")
set /a "num3+=1","num2=0"
if %num3% lss 9 (set /a "line+=1"&set "dfc=1"&goto :lp3)
cls&echo %st%&echo.
for /l %%a in (1 1 9) do (call echo %%a %%mor%%a%%)
:lp4
echo.&echo 請按照"替換數字,行,列"(不包括引號)的順序連續輸入數字
echo 或者ans顯示答案(默認),new開啟新遊戲,out退出本遊戲
:lp5
color 3e&echo.&set "ent=ans"&set /p ent=請輸入:
if /i "%ent%"=="out" (
cls
for /l %%a in (1 1 9) do echo.
echo 謝謝使用本遊戲,再見......
ping -n 4 127.1>nul&exit
)
if /i "%ent%"=="ans" (
for /l %%l in (1 1 9) do (echo !moniuming%%l!)
goto :again
)
if /i "%ent%"=="new" cls&goto :again
set "ma=%ent:~,1%"&set "mb=%ent:~1,1%"&set "mc=%ent:~2,1%"
if not defined _%mb%%mc% (
color fc&echo.&echo 第%mb%行第%mc%列為非替換位置
ping -n 3 127.1>nul&goto :lp5
)
for %%a in (!mor%mb%!) do (
if "%%a"=="%ma%" (
color fc&echo.&echo 第 %mb% 行已經存在 "%ma%"
ping -n 3 127.1>nul&goto :lp5
)
)
for /l %%a in (1 1 9) do (
if "%ma%"=="!%%a%mc%!" (
color fc&echo.&echo 第 %mc% 列已經存在 "%ma%"
ping -n 3 127.1>nul&goto :lp5
)
)
for /f "tokens=%mc%" %%a in ("!mor%mb%!") do (
set "mor%mb%=!mor%mb%:%%a=%ma%!"&set "%mb%%mc%=%ma%"
)
cls
echo %st%&echo.
for /l %%a in (1 1 9) do (echo %%a !mor%%a!)
for /l %%a in (1 1 9) do (if "!mor%%a!"=="!moniuming%%a!" (set /a right+=1))
if "%right%"=="9" (
call :lp6
set "right=0"&goto :again
)
set "right=0"
goto :lp4
:lp
for /l %%i in (1 1 9) do set ".!random!!random!!random!=%%i"
for /f "tokens=1,2 delims==" %%i in ('set .') do (set "str=%%j !str!"&set "%%i=")
for /l %%i in (1 1 9) do set "%1%%i="
set "var=%str%"&set/a lie=1,hx=1,hy=%1-1,lx=1,ly=3,a=%1%%3,dfc=1,line=1,num2=0,num3=0
if %1 geq 4 (
if %1 leq 6 (set/a hx=4) else (set hx=7)
)
:lp0
if %lie% geq 4 (
if %lie% leq 6 (set/a lx=4,ly=6) else (set/a lx=7,ly=9)
)
for %%a in (!var!) do (
for /l %%i in (1 1 %1) do (
if %%a equ !%%i%lie%! (set var=!var:%%a=!&goto lp0)
)
if %a% neq 1 (
for /l %%j in (%hx% 1 %hy%) do (
for /l %%k in (%lx% 1 %ly%) do (
if %%a equ !%%j%%k! set "var=!var:%%a=!"&goto lp0
)
)
)
set "%1!lie!=%%a"
if !lie! lss 9 (set/a lie+=1&set "str=!str:%%a=!"&set "var=!str!"&goto lp0)
)
set "str="&set "lie="
if "!%19!"=="" set/a ttl+=1&if !ttl! gtr 40 (set "ttl="&goto st) else goto lp
for /l %%i in (1 1 9) do (set "mor%1=!mor%1!!%1%%i! ")
set "ttl="&goto :eof
:lp6
echo.
for /l %%a in (1 1 40) do (
set "show=!echo_:~0,%%a!"
set /a "col1=!random!%%13","col2=!random!%%13"
if not "!col1!"=="!col2!" call color %%color_:~!col1!,1%%%%color_:~!col2!,1%%
set /p=!tui!!kong!!show!<nul
ping -n 1 127.1>nul
)
echo.
人鬼過河:
@echo off
title 人鬼過河
color e9
echo r代表人,g代表鬼。
echo 船只可以裝兩個人/鬼,或壹人壹鬼。
echo 任何壹邊鬼都不能比人多,
echo 否則人會被吃掉哦。
echo S重來,E退出。
echo.
:ready
set fx=A→B
set sidea=rrrggg
set sideb=
:start
echo =======now========
echo Side A:%sidea%
echo ------------------
echo.
echo River
echo.
echo Boat:%fx%
echo.
echo ------------------
echo Side B:%sideb%
echo.
:input
set /p boat=請輸入:
if /i "%boat%"=="s" goto ready
if /i "%boat%"=="e" exit
if "%boat%"=="" echo 沒人開船了。&&goto input
if not "%boat:~2,1%"=="" echo 不能裝那麽多。&&goto input
set bt1=%boat:~0,1%
set bt2=%boat:~1,1%
if /i not %bt1%==r if /i not %bt1%==g echo 妳輸錯了。&&goto input
if /i not "%bt2%"=="r" if /i not "%bt2%"=="g" if not "%bt2%"=="" echo 妳輸錯了。&&goto input
goto %fx%
:A→B
echo %sidea%|find /i "%bt1%">nul||echo Side A 沒有%bt1%。&&goto input
if not "%bt2%"=="" echo %sidea%|find /i "%bt2%">nul||echo Side A 沒有%bt2%。&&goto input
if "%bt1%"=="%bt2%" echo %sidea%|find /i "%boat%">nul||echo Side A 沒有兩個%bt1%。&&goto input
if /i %bt1%==r set sidea=%sidea:~1%&& set sideb=r%sideb%
if /i %bt1%==g set sidea=%sidea:~0,-1%&& set sideb=%sideb%g
if /i "%bt2%"=="r" set sidea=%sidea:~1%&& set sideb=r%sideb%
if /i "%bt2%"=="g" set sidea=%sidea:~0,-1%&& set sideb=%sideb%g
call :check
set fx=B→A
cls
goto start
:B→A
echo %sideb%aaa|find /i "%bt1%">nul||echo Side B 沒有%bt1%。&&goto input
if not "%bt2%"=="" echo %sideb%|find /i "%bt2%">nul||echo Side B 沒有%bt2%。&&goto input
if "%bt1%"=="%bt2%" echo %sideb%|find /i "%boat%">nul||echo Side B 沒有兩個%bt1%。&&goto input
if /i %bt1%==r set sideb=%sideb:~1%&& set sidea=r%sidea%
if /i %bt1%==g set sideb=%sideb:~0,-1%&& set sidea=%sidea%g
if /i "%bt2%"=="r" set sideb=%sideb:~1%&& set sidea=r%sidea%
if /i "%bt2%"=="g" set sideb=%sideb:~0,-1%&& set sidea=%sidea%g
call :check
set fx=A→B
cls
goto start
:check
if "%sideb%"=="rrrggg" cls&&echo You win!&&goto end
set ars=0
set ags=0
set brs=0
set bgs=0
if "%sidea:~0,1%"=="r" set /a ars+=1 >nul
if "%sidea:~0,1%"=="g" set /a ags+=1 >nul
if "%sidea:~1,1%"=="r" set /a ars+=1 >nul
if "%sidea:~1,1%"=="g" set /a ags+=1 >nul
if "%sidea:~2,1%"=="r" set /a ars+=1 >nul
if "%sidea:~2,1%"=="g" set /a ags+=1 >nul
if "%sidea:~3,1%"=="r" set /a ars+=1 >nul
if "%sidea:~3,1%"=="g" set /a ags+=1 >nul
if "%sidea:~4,1%"=="r" set /a ars+=1 >nul
if "%sidea:~4,1%"=="g" set /a ags+=1 >nul
if "%sidea:~5,1%"=="r" set /a ars+=1 >nul
if "%sidea:~5,1%"=="g" set /a ags+=1 >nul
if %ags% gtr %ars% if %ars% gtr 0 (
cls
echo Side A 有人被吃掉了。
goto end
)
if "%sideb:~0,1%"=="r" set /a brs+=1 >nul
if "%sideb:~0,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~1,1%"=="r" set /a brs+=1 >nul
if "%sideb:~1,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~2,1%"=="r" set /a brs+=1 >nul
if "%sideb:~2,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~3,1%"=="r" set /a brs+=1 >nul
if "%sideb:~3,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~4,1%"=="r" set /a brs+=1 >nul
if "%sideb:~4,1%"=="g" set /a bgs+=1 >nul
if %bgs% gtr %brs% if %brs% gtr 0 (
cls
echo Side B 有人被吃掉了。
goto end
)
goto :EOF
:end
set /p restart=再來?(Y,N)
if /i "%restart%"=="y" cls&&goto ready
猜數遊戲:
@echo off&color 1f&mode con cols=55 lines=30
setlocal enabledelayedexpansion
title 猜數字遊戲 by zw19750516
echo.&echo.
echo.&echo ***** 遊戲規則 *****
echo.&echo 程序會自動生成壹組四個互不相同的0-9內的整數,
echo.&echo 請妳根據猜測和判斷,每次輸入壹組四個互不相同
echo.&echo 0-9內的整數,中間請用空格格開,如:1 2 3 4,
echo.&echo 程序會將妳每次輸入的數組與其生成的數組進行比
echo.&echo 較,並將比較的結果輸出屏幕上以幫助妳進壹步的
echo.&echo 判斷,直到妳所輸入的數組與其生成的數組的數值
echo.&echo 和次序完全相同,或妳已用完了所有的猜測機會。
echo.&echo 如果妳已經看懂了規則,請按任意鍵開始本次遊戲。
set var=A&pause>nul
:begin
set /a a=%random%%%10
for %%a in (%var%) do if %%a equ %a% goto begin
set var=%var% %a%
if "%var:~8%" equ "" goto begin
set var=%var:~2%&set m=0
:again
set /a n=0,v=0,ws=0,s=0,t=10-m
if %t% equ 0 goto end
cls&echo.&echo 請註意妳總***只有10次機會,現在還剩下%t%次機會
if "%m%" neq "0" for /l %%i in (1,1,%m%) do echo.&echo !_%%i!
set codes=A
echo.&set /p code= 請在此輸入:
echo %code: =%|findstr "[^0-9]"&&goto wrong
for %%a in (%code%) do (
for %%i in (!codes!) do if %%i equ %%a goto wrong
set codes=!codes! %%a
set /a n+=1
)
if %n% neq 4 goto wrong
set codes=%codes:~2%
for %%i in (%codes%) do (
set str=%%i
if "!str:~1!" neq "" goto wrong
)
for %%a in (%var%) do (
set /a v+=1,x=0
for %%i in (%codes%) do (
set /a x+=1
if %%a equ %%i if !x! equ !v! (
set /a ws+=1,s+=1
) else (
set /a s+=1
)
)
)
set /a m+=1
if "%var%" equ "%codes%" goto suc
set _%m%= %codes%中數值正確的有%s%個,其中位置數值都正確的有%ws%個&goto again
:wrong
cls
echo.&echo 所輸入的非合法十進制整數,或數值不合要求,
echo.&echo 或有重復數,或輸入的數值個數不是4個。
ping /n 2 127.1>nul&goto again
:suc
if %m% equ 1 cls&echo.&echo 不會吧,1次就搞定了,妳是不是神仙下凡啊?&goto select
if %m% leq 3 cls&echo.&echo 妳真是聰明絕頂啊,只用%m%次就猜中了。&goto select
if %m% leq 5 cls&echo.&echo 看來妳還是很厲害,用了%m%次就猜中了。&goto select
if %m% leq 9 cls&echo.&echo 呵呵,猜了%m%次,勉強過關了。&goto select
if %m% equ 10 cls&echo.&echo 妳太精明了,硬是把機會給用完成功過關。
:select
ping /n 3 127.1>nul
cls&echo.&set select=&set /p select= 是否再來壹次(是就輸入y/Y,其它任意鍵退出):
if /i "%select%" equ "y" (goto begin) else (goto exit)
:end
cls&echo.&echo 對不起妳已經用完了所有的機會了。正確答案是%var%&goto select
:exit
ping /n 3 127.1>nul
還要請去論壇
或加QQ535470331
或HI我