标题: [原创]一个猜数字游戏的批处理
[打印本页]
作者: sadawn
时间: 2007-7-29 11:48
标题: [原创]一个猜数字游戏的批处理
很少在这里发帖,前几日在一个论坛上看见别人C语言出的一具题目,本人C语言刚学,不怎么样,故使用批处理写一个,请指正
cd\
title 猜数字游戏 by:dawn
@echo off
cls
:: cmd@windows xp pro 中文版
:: code by dawn 2007.7.15 2007.7.17晚修改bug并添加无敌模式
:: 望指正,
dhcjat@163.com
set a=小子,不错啊,你赢了
set b=太棒了,你又赢了
set c=太好了,你怎么做到的
set d=赌神
if not exist save.txt (echo 你猜的数 电脑猜的数 随机生成的数 下注 >save.txt)
:re
set /a you=10000
set /a computer=10000
:main
cls
echo.
echo.
echo 1.进入游戏.
echo 2.说明游戏规则.
echo 3.查看电脑和玩家的得分记录.
echo 4.结束程序.
echo.
set /a choose=1
set /p choose=选择数字或回车开始
if "%choose%"=="1" goto :start
if "%choose%"=="9999" goto :start
if "%choose%"=="2" goto :help
if "%choose%"=="3" goto :记录
if "%choose%"=="4" exit
goto main
:start
cls
echo.
echo.
if %you% LEQ 0 ((echo 你已经破产,可以滚蛋了..)&&goto :Reset)
if %you% GEQ 20000 ((echo computer已经输得精光,跑路了..)&&goto :Reset)
set /a rand=%random%%%30+1
echo 现在你有 %you% 金币
set /a computer=20000-%you%
echo computer现在有 %computer% 赌资
:xiazu
set youxz=500
set /p youxz=下注,不要大于500,回车直接下注500
if %youxz% GTR 500 goto :xiazu
if %youxz% LEQ 0 goto :xiazu
if %computer% Lss %youxz% echo 电脑款不够了&&goto :xiazu
if %you% Lss %youxz% echo 你的钱不多了&&goto :xiazu
:guess
set /a cguess=%random%%%30+1
set youguess=
set /p youguess=猜猜 ,这个数字是多少
if "%youguess%" == " " goto :guess
if %youguess% GTR 0 (if %youguess% LEQ 30 (goto :bijiao) else (echo 在1到30之间哦))
goto :guess
:bijiao
if %youguess% LEQ %rand% (set /a youz=%rand%-%youguess%) else (set /a youz=%youguess%-%rand%)
if %cguess% LEQ %rand% (set /a cz=%rand%-%cguess%) else (set /a cz=%cguess%-%rand%)
if "%choose%" == "9999" (set win=0&&goto :print)
if %youz% LSS %cz% (set win=0&&goto :print)
if %youz% GTR %cz% (set win=1&&goto :print) else (set win=2&&goto :print)
:print
echo.
echo 你猜是 %youguess%.....
echo computer猜是 %cguess%.
echo 哈哈.实际上是 %rand%.
echo.
echo %youguess% %cguess% %rand% %youxz% >>save.txt
set 1=a
set 2=b
set 3=c
set 4=d
:: 此处,变量嵌套出现问题,故采用了一个折衷的方法
set /a randout=%random%%%4+1
if "%win%" == "0" (
if "%randout%" == "1" (echo %a%) else (
if "%randout%" == "2" (echo %b%) else (
if "%randout%" == "3" (echo %c%) else (
(echo %d%)
)
)
)
)&&echo 你赢了%youxz%赌金
if "%win%" == "1" (echo 唉,你输了.这%youxz%赌金是computer的了)
if "%win%" == "2" (echo 实力差不多,平手)
:计算
if "%win%" == "0" (set /a you=%you%+%youxz%)
if "%win%" == "1" (set /a you=%you%-%youxz%)
pause>nul
goto :main
:Reset
set jx=y
set /p jx=是否继续(y/n)
if /I "%jx%" == "y" (goto :re)
if /I "%jx%" == "n" exit else (goto :Reset)
:help
cls
echo.
echo.
echo 电脑随机生成一个1-30之间的数字,
echo 人和电脑分别猜一个数字,
echo 看谁的数字较为接近生成的数字.
echo.
echo.
echo 任意健返回
pause>nul
goto :main
:记录
:: code by dawn 2007.7.17
cls
if not exist save.txt echo 找不到文件save.txt&&pause >nul&&goto :main
echo.
echo.
echo 你猜的数 电脑猜的数 随机生成的数 下注
set aa=0
for /f "delims=" %%i in (save.txt) do (set /a aa+=1)
if %aa% GTR 50 (set /a t=%aa%-50) else (set /a t=1)
for /f "skip=%t% tokens=1* delims=:" %%i in (save.txt) do @echo %%i
echo.
echo.
echo d=删除所有记录 R=返回
set x=r
set /p x=请选择或回车继续
if /I "%x%" == "r" (goto :main)
if /I "%x%" == "d" (echo 你猜的数 电脑猜的数 随机生成的数 下注 >save.txt)
goto :main
作者: wudixin96
时间: 2007-7-29 11:51
嗯,不错。以前用java编过的。
作者: sadawn
时间: 2007-7-29 11:53
希望那一位高人讲一下批处理中的变量的嵌套