![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 10:23 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [原创]一个猜数字游戏的批处理 |
| 可打印版本 1,023 / 2 |
| 第1楼 sadawn | 发表于 2007-07-29 11:48 |
| 初级用户 发帖 14 积分 39 | |
|
[原创]一个猜数字游戏的批处理 很少在这里发帖,前几日在一个论坛上看见别人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) 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 |
|
| 第2楼 wudixin96 | 发表于 2007-07-29 11:51 |
| 银牌会员 发帖 931 积分 1,928 | |
|
嗯,不错。以前用java编过的。
|
|
| 第3楼 sadawn | 发表于 2007-07-29 11:53 |
| 初级用户 发帖 14 积分 39 | |
|
希望那一位高人讲一下批处理中的变量的嵌套
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |