Board logo

标题: 刚学BAT - 猜数小游戏 [打印本页]

作者: joppy     时间: 2007-9-29 10:47    标题: 刚学BAT - 猜数小游戏

刚学批处理3天,不过幸好有点C的基础,学会了一些基本的东西。写了一个小游戏,请大家批评,呵呵。
@echo off
mode con: cols=50 lines=11
title 猜数字小游戏---by joppY
color 0a
setlocal enabledelayedexpansion

REM 初始界面
:begin
        cls
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        猜 数 字 小 游 戏         │
        echo     │                                  │
        echo     │             By joppY             │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.

        REM 产生随机数,并控制在0~100之间
        set /a PUZZLE=%random%%%100
        REM 初始化变量
        set UserInput=""
        set /a TIMES=0
       

REM 游戏例程
:game       
        set /p UserInput=请输入0~100之间的一个数字:
        set /a TIMES+=1
        REM 简单检测用户输入是否合法
        echo %UserInput% | findstr "[0-9]" || goto error
        echo %UserInput% | findstr /I "[a-z]" && goto error
        if %UserInput% GTR 100 goto overflow
        if %UserInput% LSS 0 goto underflow
       
        REM echo %PUZZLE%
       
        REM 判断用户输入
        if %UserInput% GTR %PUZZLE% goto toobig
        if %UserInput% LSS %PUZZLE% goto toosmall
        if %UserInput% EQU %PUZZLE% goto bingo

        :toobig
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太大了!          │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

        :toosmall
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太小了!          │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

        :bingo
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶〕Bingo! 你猜中了!      │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color 0a
        echo.
        set /p UserChoice=退出请按q,继续请按其他键...
        if /I %UserChoice%==q goto end
        goto begin

REM 处理异常
:error
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   拜托,请输入数字!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:overflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   你给的数>100了!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:underflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(     你给的数<0了!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

REM 退出
:end
        cls
        echo.
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        欢迎下次来玩,Bye Bye~     │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        ping -n 2 127.1>nul
        exit
[ Last edited by joppy on 2007-9-29 at 10:50 AM ]
作者: lxmxn     时间: 2007-9-29 12:05
牛人.

加分.
作者: joppy     时间: 2007-9-29 19:49


  Quote:
Originally posted by lxmxn at 2007-9-29 12:05 PM:
牛人.

加分.

多谢斑竹对新人的鼓励 :)
以后请多指教!
作者: Nickey     时间: 2007-9-29 20:59
joppy
可否这样
例如:
第一次猜 50 太大
第二次猜 30 太少
提示:数字介乎 30~50 之间
第三次猜40 太大
提示:数字介乎 30~40 之间
... ...
...
作者: Nickey     时间: 2007-9-29 21:48
实现方法
        echo %TIMES% %UserInput%>>Temp.txt
太大
        echo             数字介乎!From!~%UserInput%之间
太少
        echo             数字介乎%UserInput%~!To!之间
问题就是这个 Form 跟 To 怎么在 Temp.txt 里面提取
这个我不懂
请高手接招
作者: yoyodos     时间: 2007-9-29 22:48
楼主你很棒!!
作者: Nickey     时间: 2007-9-29 22:53
那位高手可以完成这个问题
提示:答案在Form~To之间



@echo off
mode con: cols=50 lines=15
title 猜数字小游戏---by joppY
color 0a
setlocal enabledelayedexpansion
del Temp.txt

REM 初始界面
:begin
        cls
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        猜 数 字 小 游 戏         │
        echo     │                                  │
        echo     │             By joppY             │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.

        REM 产生随机数,并控制在0~100之间
        set /a PUZZLE=%random%%%100
        REM 初始化变量
        set UserInput=""
        set /a TIMES=0


REM 游戏例程
:game        
        set /p UserInput=请输入0~100之间的一个数字:
        set /a TIMES+=1
        echo 第%TIMES%次猜%UserInput%>>Temp.txt
        for /f  %%i in (Temp.txt) do set To=%%i
        REM 简单检测用户输入是否合法
        echo %UserInput% | findstr "[0-9]" || goto error
        echo %UserInput% | findstr /I "[a-z]" && goto error
        if %UserInput% GTR 100 goto overflow
        if %UserInput% LSS 0 goto underflow
        REM echo %PUZZLE%

        REM 判断用户输入
        if %UserInput% GTR %PUZZLE% goto toobig
        if %UserInput% LSS %PUZZLE% goto toosmall
        if %UserInput% EQU %PUZZLE% goto bingo
     
        :toobig
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太大了!          │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo              数字介乎 %To% ~ %UserInput% 之间
        echo.
        goto game

        :toosmall
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太小了!          │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo             数字介乎 %UserInput% ~ %To% 之间
        echo.
        goto game

        :bingo
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶〕Bingo! 你猜中了!      │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color 0a
        echo.
        set /p UserChoice=退出请按q,继续请按其他键...
        if /I %UserChoice%==q  del Temp.txt goto end
        goto begin

REM 处理异常
:error
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   拜托,请输入数字!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:overflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   你给的数>100了!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:underflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(     你给的数<0了!    │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

REM 退出
:end
        cls
        echo.
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        欢迎下次来玩,Bye Bye~     │
        echo     │                                  │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        del Temp.txt
        ping -n 2 127.1>nul
        exit
作者: joppy     时间: 2007-10-1 15:52


  Quote:
Originally posted by Nickey at 2007-9-29 08:59 PM:
joppy
可否这样
例如:
第一次猜 50 太大
第二次猜 30 太少
提示:数字介乎 30~50 之间
第三次猜40 太大
提示:数字介乎 30~40 之间
... ...
...

Nickey, 我今天上来看到你的回复,很感谢:)
然后改了一下代码,你看看是不是满足你的要求了:
@echo off
mode con: cols=50 lines=13
title 猜数字小游戏---by joppY
color 0a
setlocal enabledelayedexpansion

REM 初始界面
:begin
        cls
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │       猜数字小游戏 - 提示版      │
        echo     │                                  │
        echo     │             By joppY             │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.

        REM 产生随机数,并控制在0~100之间
        set /a PUZZLE=%random%%%100
        REM 初始化变量
        set UserInput=""
        set /a TIMES=0
        set /a TIPA=0
        set /a TIPB=100
        

REM 游戏例程
:game        
        REM 提示用户输入
        echo 请输入一个数字(TIPS:介于!TIPA! - !TIPB!之间哦):
        set /p UserInput=
        set /a TIMES+=1
             
        REM 简单检测用户输入是否合法
        echo %UserInput% | findstr "[0-9]" || goto error
        echo %UserInput% | findstr /I "[a-z]" && goto error
        if %UserInput% GTR 100 goto overflow
        if %UserInput% LSS 0 goto underflow
        
        REM echo %PUZZLE%
        
        REM 判断用户输入
        if %UserInput% GTR %PUZZLE% goto toobig
        if %UserInput% LSS %PUZZLE% goto toosmall
        if %UserInput% EQU %PUZZLE% goto bingo

        :toobig
        REM 产生输入提示的上限
        if %UserInput% LSS %TIPB% set /a TIPB=%UserInput%
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太大了!          │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

        :toosmall
        REM 产生输入提示的下限
        if %UserInput% GTR %TIPA% set /a TIPA=%UserInput%
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        ∶(    太小了!          │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

        :bingo
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶〕Bingo! 你猜中了!      │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color cf
        ping -n 1 127.1>nul
        color fc
        ping -n 1 127.1>nul
        color 0a
        echo.
        set /p UserChoice=退出请按q,继续请按其他键...
        if /I %UserChoice%==q goto end
        goto begin

REM 处理异常
:error
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   拜托,请输入数字!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:overflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(   你给的数>100了!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game
:underflow
        cls
        echo.
        echo                   第【!TIMES!】次
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │      ∶(     你给的数<0了!    │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        goto game

REM 退出
:end
        cls
        echo.
        echo.
        echo     ╭─────────────────╮
        echo     │                                  │
        echo     │        欢迎下次来玩,Bye Bye~     │
        echo     │                                  │
        echo     ╰─────────────────╯
        echo.
        ping -n 2 127.1>nul
        exit
[ Last edited by joppy on 2007-10-1 at 03:54 PM ]
作者: Nickey     时间: 2007-10-1 18:15
呵呵 你做到了 蛮好
又学习了
不耻下问
我都会成为大鸟