找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 39759|回复: 13

[特效代码] [分享]自己写的一个批处理石头剪刀布猜拳小游戏如有不足请指出

[复制链接]
发表于 2010-8-7 00:47:01 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-17 05:25 编辑
  1. @echo off
  2. set /a vat=0
  3. :top
  4. color 1a
  5. mode con:cols=50 lines=30
  6. title 剪刀、包袱、锤游戏
  7. echo                  剪刀、包袱、锤游戏
  8. echo.
  9. echo.
  10. echo.
  11. echo.            0代表剪刀、1代表包袱、2代表锤
  12. echo.
  13. echo.
  14. echo.
  15. set /a diannao=%random%%%3
  16. set /p var=请输入并按回车确认:
  17. if "%var%"=="0" goto :a
  18. if "%var%"=="1" goto :b
  19. if "%var%"=="2" goto :C
  20. echo    你输入有误,请重新输入!&ping /n 2 127.1>nul&goto :top
  21. :a
  22. set /a vat+=1
  23. if %diannao%==0 echo.   你剪刀,电脑剪刀,本局和平&goto :e
  24. if %diannao%==1 echo.   你剪刀,电脑包袱,本局你赢&goto :e
  25. if %diannao%==2 echo.   你剪刀,电脑锤,  本局你输&goto :e
  26. :b
  27. set /a vat+=1
  28. if %diannao%==0 echo.   你包袱,电脑剪刀,本局你输&goto :e
  29. if %diannao%==1 echo.   你包袱,电脑包袱,本局和平&goto :e
  30. if %diannao%==2 echo.   你包袱,电脑锤,  本局你赢&goto :e
  31. :c
  32. set /a vat+=1
  33. if %diannao%==0 echo.   你锤, 电脑剪刀,本局你赢&goto :e
  34. if %diannao%==1 echo.   你锤, 电脑包袱,本局你输&goto :e
  35. if %diannao%==2 echo.   你锤, 电脑锤,  本局和平&goto :e
  36. :e
  37. echo.
  38. echo.
  39. echo.   一共对比了%vat%次!&ping /n 3 127.1>nul&goto :top
复制代码
[ 本帖最后由 rogue_1983 于 2010-8-7 15:18 编辑 ]
发表于 2010-8-7 02:14:07 | 显示全部楼层
建议用"ping -n 〈秒数〉>nul"来代替pause>nul,因为会在Pause第一次后第二次pause不到,然后第三次才pause到。(如有错误请多多指教)

评分

参与人数 1PB +2 收起 理由
rogue_1983 + 2 谢谢指出,更正

查看全部评分

发表于 2010-8-7 02:18:02 | 显示全部楼层
其实有种更简便的case方法,在if  /? 里就有描叙
goto :case%var% || goto :e

:case0
...
:case1
...
:case 2

:e

评分

参与人数 1PB +2 收起 理由
rogue_1983 + 2 case 这个不会用,同样谢谢你的提议

查看全部评分

发表于 2010-8-7 03:02:10 | 显示全部楼层
本帖最后由 pcl_test 于 2016-11-17 20:24 编辑
  1. @echo off
  2. set .0=剪刀&set .1=包袱&set .2=锤
  3. for %%a in (00 11 22) do set ..%%a=本局和平
  4. for %%a in (01 12 20) do set ..%%a=本局你赢
  5. for %%a in (02 10 21) do set ..%%a=本局你输
  6. :start
  7. setlocal ENABLEDELAYEDEXPANSION
  8. echo 0代表剪刀、1代表包袱、2代表锤
  9. echo;&set /a diannao=!random!%%3
  10. set /p ren=请输入 &cls
  11. if not defined .%ren% echo 你输入有误,请重新输入&endlocal&echo;&goto start
  12. echo 你!.%ren%!,电脑!.%diannao%!,!..%ren%%diannao%!
  13. echo;&endlocal&goto start
复制代码

评分

参与人数 1PB +4 收起 理由
rogue_1983 + 4 这个写的确实比我的好,我需要学习

查看全部评分

 楼主| 发表于 2010-8-7 09:20:48 | 显示全部楼层

特别感谢bat-Mfk

在这里特别感谢帮助过我的几个高手,我写这个小游戏费了不少精力,如果没有bat-Mfk以及几个高手的的支持,我的代码会存在缺陷.也许还有很多缺陷,往高手们继续关注并指正.万分感谢!是bathome.net和论坛的高手们让我不断得到了提高,再次鸣谢!

[ 本帖最后由 rogue_1983 于 2010-8-7 15:23 编辑 ]
发表于 2010-8-7 09:31:43 | 显示全部楼层
随风强悍啊!“发表于 2010-8-7 03:02 ”
发表于 2010-8-7 23:38:23 | 显示全部楼层
我越来越喜欢批处理了
发表于 2010-8-9 23:47:39 | 显示全部楼层
我 ……。。开始喜欢上批处理了。
发表于 2010-8-10 03:17:46 | 显示全部楼层
直接 相减怎么样
发表于 2010-8-19 21:30:58 | 显示全部楼层
能统计游戏结果更好
如 胜 x 局;平 x 局;输 x 局
发表于 2010-9-15 20:36:26 | 显示全部楼层
还有个小问题,就是 比如输入一个合法数据,第二次不输入任何数据,它还认为我是输入的先前的值

就是说 set  / p  var =
的话如果你直接回车,未输入任何值,那么变量 var 仍然存在且还是原来的值

建议在 e: 中加一句 set var =
发表于 2010-9-18 20:17:43 | 显示全部楼层
经过我几天的翻贴,研究,终于完美解决了。
  1. @echo off
  2. set a0=剪刀&set a1=包袱&set a2=锤
  3. for %%a in (00 11 22) do set b%%a=本局和平
  4. for %%a in (01 20 12) do set b%%a=本局你赢
  5. for %%a in (10 21 02) do set b%%a=本局你输
  6. for %%a in (shu ping ying gong) do set %%a=0
  7. :start
  8. echo 0代表剪刀、1代表包袱、2代表锤
  9. echo;&set /a diannao=%random%%%3 >nul 2>nul
  10. set ren=5
  11. set /p ren=请输入 &cls
  12. if not defined a%ren% echo 你输入有误,请重新输入&echo;&goto start
  13. setlocal enabledelayedexpansion
  14. echo 你!a%ren%!,电脑!a%diannao%!,!b%ren%%diannao%!
  15. echo;
  16. endlocal
  17. for %%a in (b00 b11 b22) do (if %%a == b%ren%%diannao% set /a ping+=1)
  18. for %%a in (b01 b20 b12) do (if %%a == b%ren%%diannao% set /a ying+=1)
  19. for %%a in (b10 b21 b02) do (if %%a == b%ren%%diannao% set /a shu+=1)
  20. set /a gong+=1
  21. echo 游戏共进行%gong%局,你赢%ying%局,平%ping%局,输%shu%局
  22. echo;
  23. goto start
复制代码

[ 本帖最后由 qcll 于 2010-9-18 20:21 编辑 ]
发表于 2015-3-21 18:30:29 | 显示全部楼层
我还要研究
发表于 2016-11-17 13:30:15 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a 赢=平=输=0,#.1=#2=1,n=10000
  3. set #_1=剪刀&set #_2=石头&set "#_3= 布 "
  4. :start
  5. set c=&set /p c=请出拳[1剪刀、2石头、3布]:&cls
  6. if not defined c (goto end) else (
  7.     echo;%c%|findstr "^[123]$">nul||(echo;输入有误!请重新输入&echo;&goto start)
  8. )
  9. set /a r=%random%%%3+1,t=c-r,n+=1
  10. if %t% equ 0 (set v=平) else if !#%t:-=.%! equ 1 (set v=输) else (set v=赢)
  11. set /a %v%+=1&set _%n%=第%n:~-3%局:玩家[!#_%c%!]  %v%{!%v%!}  电脑[!#_%r%!]
  12. echo;!_%n%!&echo;&goto start
  13. :end
  14. echo;Game Over&echo;[赢:%赢% 平:%平% 输:%输%]
  15. echo;----------------------------------------
  16. for /f "tokens=2,4 delims=={}" %%a in ('2^>null set _') do echo;%%a%%b
  17. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 14:22 , Processed in 0.023600 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表