中国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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: