Board logo

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

作者: rogue_1983    时间: 2010-8-7 00:47     标题: [分享]自己写的一个批处理石头剪刀布猜拳小游戏如有不足请指出

本帖最后由 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 编辑 ]
作者: raymai97    时间: 2010-8-7 02:14

建议用"ping -n 〈秒数〉>nul"来代替pause>nul,因为会在Pause第一次后第二次pause不到,然后第三次才pause到。(如有错误请多多指教)
作者: caruko    时间: 2010-8-7 02:18

其实有种更简便的case方法,在if  /? 里就有描叙
goto :case%var% || goto :e

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

:e
作者: 随风    时间: 2010-8-7 03:02

本帖最后由 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
复制代码

作者: rogue_1983    时间: 2010-8-7 09:20     标题: 特别感谢bat-Mfk

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

[ 本帖最后由 rogue_1983 于 2010-8-7 15:23 编辑 ]
作者: 523066680    时间: 2010-8-7 09:31

随风强悍啊!“发表于 2010-8-7 03:02 ”
作者: fkeqqkpdc    时间: 2010-8-7 23:38

我越来越喜欢批处理了
作者: onnfzstz69    时间: 2010-8-9 23:47

我 ……。。开始喜欢上批处理了。
作者: terse    时间: 2010-8-10 03:17

直接 相减怎么样
作者: hn2zsmzx    时间: 2010-8-19 21:30

能统计游戏结果更好
如 胜 x 局;平 x 局;输 x 局
作者: vsbat    时间: 2010-9-15 20:36

还有个小问题,就是 比如输入一个合法数据,第二次不输入任何数据,它还认为我是输入的先前的值

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

建议在 e: 中加一句 set var =
作者: qcll    时间: 2010-9-18 20:17

经过我几天的翻贴,研究,终于完美解决了。
  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 编辑 ]
作者: HHM--HUANYU    时间: 2015-3-21 18:30

我还要研究
作者: pcl_test    时间: 2016-11-17 13:30

  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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2