『楼 主』:
[原创]猜数字游戏
不知道是不是有人写过猜数字的游戏,反正一时兴起,就写了,同时祝大家小光棍节快乐……
@echo off
setlocal enabledelayedexpansion
title 猜数字游戏 By cn-DOS ev4n
cls
echo ^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|
echo ^| 猜数字游戏之小光棍节版 ^|
echo ^|使用/?或者/hlp获得帮助信息 ^|
echo ^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|
:again1
set "Number="
for /l %%n in (0,1,3) do (
set /a Num%%n=0
)
set check=0
set seeAns=0
::生成数字
set /a nn=0
:again
:failgen
set /a num=!random!%%9+1
set /a n_n=!nn!-1
for /l %%m in (0,1,!n_n!) do (
set /a mm=%%m
call set tmp_=%%Num!mm!%%
if "!tmp_!" equ "!num!" set check=1
)
if "!check!" equ "1" (
set check=0
goto failgen
)
set /a Num!nn!=!num!
call set tmp_=%%Num!nn!%%
set "Number=%Number%!tmp_!"
set /a nn=!nn!+1
if !nn! leq 3 (
goto again
)else goto out
:out
::生成字符串保存在Number中,数组Num[0-3]
set "history="
set /a count=0
set /a seeAns=0
:try
set /p GuessNum=输入相应您猜的字符串(1-9)(例如1234):
::特殊功能(看答案,查看历史,退出,帮助)
if "!GuessNum:~0,1!"=="/" (
if /I "!GuessNum:~1,1!"=="?" goto help
if /I "!GuessNum:~1,1!"=="r" goto restart
if /I "!GuessNum:~1,1!"=="e" goto exit
if /I "!GuessNum:~1,1!"=="a" goto answer
::历史记录
if /I "!GuessNum:~1,3!"=="his" (
set /a beg=0
set /a start=0
:start
call set his=%%history:~!start!,9%%
for /f "tokens=1,2 delims=," %%j in ("!his!") do (
echo 历史!beg! 输入%%j--^>输出%%k
)
set /a beg=!beg!+1
set /a start=!start!+10
if !beg! lss !count! goto start
goto try
)
::End历史记录
::答案
if /I "!GuessNum:~1,3!"=="ans" (
:answer
echo %Number%
set /a seeAns=1
goto try
)
::End答案
::退出
if /I "!GuessNum:~1,3!"=="ext" (
:exit
goto eof
)
if /I "!GuessNum:~1,3!"=="ret" (
:restart
goto again1
)
if /I "!GuessNum:~1,3!"=="hlp" (
:help
cls
echo 这里是帮助内容
echo 猜数字的小游戏已经被时代所掩盖,但是其在智力开发方面有很大的作用。可以促进逻辑思考能力的提高……好处多多
echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
echo 帮助内容(2009.11.1)
echo ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
echo 使用方法:
echo 每局程序会自动生成4个不重复的数字(1-9之间),
echo 无顺序排列玩家在提示输入信息出现后,
echo 输入自己猜测的四个数字(要求无重复,不要输入
echo 其他字符和0),程序会自动产生结果,例如:
echo 2A3B,则表示在玩家给出的数字钟有2个数字正确且位置
echo 正确,有3个数字猜测正确(包括2个位置正确的)
echo 假设程序生成的为2384,而玩家给出的是1234,则会表示为
echo 1A3B
echo 其他问题可使用下面的功能显示
echo ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
echo 功能键为:
echo "/"+相应的内容,如:
echo /ext,/e 退出(exit)
echo /his 查看历史输入内容,仅限当前一局
echo /?,/hlp 显示本帮助内容(help)
echo /ans,/a 查看实际数字(answer)
echo /ret,/r 重新开始一局游戏(确定放弃该局,不会问的)
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
pause
goto try
)
)
::End特殊功能
set /a aa=0,bb=0
set /a count=!count!+1
::aa为位置正确的数量,bb为包含的数量
for /l %%q in (0,1,3) do (
set /a qq=%%q
call set TmpNum=%%GuessNum:~!qq!,1%%
call set qnum=%%Number:~!qq!,1%%
if "!TmpNum!" equ "!qnum!" set /a aa=!aa!+1
for /l %%p in (0,1,3) do (
set /a pp =%%p
call set pnum=%%Number:~!pp!,1%%
if "!TmpNum!" equ "!pnum!" set /a bb=!bb!+1
)
)
if "!history!"=="" (
set history=!GuessNum!,!aa!A!bb!B
)else set history=!history!:!GuessNum!,!aa!A!bb!B
echo !aa!A!bb!B
if !aa! neq 4 (
if !bb! neq 4 goto try
)else (
if !bb! equ 4 (
if "!seeAns!"=="1" (
echo 切!看了答案的,不光彩
)else echo 恭喜啦!全猜对了!
)
)
set /p goon=是否继续(y/n)
if /I "!goon!"=="y" goto again1 else
goto eof
:eof
pause > nul
附件
1: GuessNumber.rar (2009-11-1 15:56, 1.76 K,下载次数: 3)
|