中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]一个猜数字游戏的批处理
作者:
标题: [原创]一个猜数字游戏的批处理 上一主题 | 下一主题
sadawn
初级用户





积分 39
发帖 14
注册 2007-1-19
状态 离线
『楼 主』:  [原创]一个猜数字游戏的批处理

很少在这里发帖,前几日在一个论坛上看见别人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


   此帖被 +5 点积分      点击查看详情   
评分人:【 wudixin96 分数: +5  时间:2007-7-29 11:51


2007-7-29 11:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 2 楼』:  

嗯,不错。以前用java编过的。


2007-7-29 11:51
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sadawn
初级用户





积分 39
发帖 14
注册 2007-1-19
状态 离线
『第 3 楼』:  

希望那一位高人讲一下批处理中的变量的嵌套


2007-7-29 11:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: