Board logo

标题: [其他] 无需第三方,去掉用户在批处理等待时输入的东西 [打印本页]

作者: raymai97    时间: 2011-9-2 10:17     标题: 无需第三方,去掉用户在批处理等待时输入的东西

大家都知道,如果用户在一个批处理在等待时(比如显示某组号码5秒时)输入东西,等下set /p时,就会出现刚才输入的东西

这等于给了“记数字”玩家作弊的机会,比如以下代码:
  1. @echo off
  2. cls
  3. set a=%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%%random:~0,1%
  4. echo 给你3秒记住这组数字:%a%
  5. ping -n 4 127.1>nul
  6. cls
  7. set /p num=现在输入:
  8. echo.
  9. if "%a%"=="%num%" (echo 你输入对了) else (echo 你输入错了)
  10. pause>nul
  11. exit
复制代码
要作弊是易如反掌的,我在批处理显示“给你3秒……”时输入数字,等下set /p时就写出来了……

为此我就写了一个代码,不完美但起码实现无三方去掉用户在批处理等待时输入的东西
  1. @echo off
  2. if "%1"=="apple" goto apple
  3. if "%1"=="apple2" goto apple2
  4. start /b "" %0 apple
  5. start /b "" %0 apple2
  6. echo 现在不能输入,需等待4秒……
  7. ping -n 5 127.1>nul
  8. echo abc>abc
  9. cls
  10. echo.
  11. echo 现在按两次enter,看到enter: 时就输入
  12. pause>nul
  13. erase /f /q abc>nul 2>nul
  14. erase /f /q abc2>nul 2>nul
  15. set /p a=Enter:
  16. echo.
  17. echo 你输入了%a%
  18. pause
  19. exit
  20. :apple
  21. set /p =
  22. if exist abc echo abc>abc2&exit
  23. goto apple
  24. :apple2
  25. set /p = <nul
  26. if exist abc2 exit
  27. goto apple2
复制代码

作者: raymai97    时间: 2011-9-2 10:28

发现代码可以更简单:
  1. @echo off
  2. if "%1"=="apple2" goto apple2
  3. start /b "" %0 apple2
  4. echo 现在不能输入,需等待4秒……
  5. ping -n 5 127.1>nul
  6. echo abc>abc2
  7. cls
  8. echo.
  9. echo 现在按一次enter,看到enter: 时就输入
  10. pause>nul
  11. erase /f /q abc2>nul 2>nul
  12. set /p a=Enter:
  13. echo.
  14. echo 你输入了%a%
  15. pause
  16. exit
  17. :apple2
  18. set /p = <nul
  19. if exist abc2 exit
  20. goto apple2
复制代码

作者: raymai97    时间: 2011-9-2 10:31     标题: 突然发现自己摆了乌龙

原来…… 加一个pause>nul就行了……
  1. @echo off
  2. echo 现在不能输入,需等待4秒……
  3. ping -n 5 127.1>nul
  4. cls
  5. echo.
  6. echo 现在按一次enter,看到enter: 时就输入
  7. pause>nul
  8. set /p a=Enter:
  9. echo.
  10. echo 你输入了%a%
  11. pause
  12. exit
复制代码

作者: CUer    时间: 2011-9-2 10:37

这种代码是专门为了侮辱人的智商吗?想作弊直接写到记事本不就行了,干嘛非写到命令行窗口。
作者: raymai97    时间: 2011-9-2 11:34

回复 4# CUer


    如果他真的要这样做,我也没有办法~ 反正这个游戏就是为了让人锻炼脑袋的~ 他这样做明显没有好处,浪费他的时间罢了
    这个代码就好比考试时禁止看书的规则,有好过没有,如果考生硬要作弊也没有办法啊~
作者: bluewing009    时间: 2011-9-2 20:08     标题: 偏门

回复 5# raymai97


    把echo set /p换成choice命令,利用ntd参数,设置一个默认跳转,就可以了。不过choice命令不知道楼主是不是认为“第三方”…………
作者: bluewing009    时间: 2011-9-2 20:13

回复 4# CUer


    利用窗体前置(vbs)或者全屏(debug)可以避免这个吧……
作者: raymai97    时间: 2011-9-2 21:02

回复 6# bluewing009


    对choice没好感,一按错就会吵死人……
作者: CUer    时间: 2011-9-3 10:44

回复 7# bluewing009


My Ladygaga,就算你暂时禁用鼠标和键盘又怎样,拿笔写到纸上总行吧?
作者: mstsc    时间: 2011-9-5 23:12

自己觉的楼主的想法好     慢慢学习   
什么时候自己的问题  能自己解决啊!!!!!!!!!!!!
作者: garyng    时间: 2011-9-6 20:31

回复 9# CUer


    哈哈~你聪明~
作者: raymai97    时间: 2011-9-6 20:51

回复 11# garyng


按照你们这么说,就是说这类游戏没有意义的?
算了…… 反正批处理就不是拿来做游戏的……
不喜欢就算了……
作者: garyng    时间: 2011-9-6 21:12

回复 12# raymai97

按照你们这么说,就是说这类游戏没有意义的?
算了…… 反正批处理就不是拿来做游戏的……
不喜欢就算了……

   这世界有很多不同的人,好人、坏人,什么人都有,那些把号码记下来的人是骗自己的人,而有些人会为了考脑力而不作弊。大大不能这么想,谁说批处理不能拿来做游戏啊?那个【批处理版斗地主】做的能跟用高级语言写的媲美了~批处理 不是 不是拿来做游戏的,而是有点不适合而已~但,用批处理做游戏可以让一个人想突破障碍、问问题、被启发、突然明白,这个过程是很爽的~
当你用批处理写好一程序/游戏,你会迫不及待的把它放到这论坛来吧!不是为了炫耀,而是为了给网友更改,说不定有人能写的更好、更妙、更精简呢?
   当然批处理很多缺点,不能计算浮点数啊、不能handle太大的数啊,等等的限制。但这些总会有一天会被解决的!
   必须相信:问题总有一天,会被一个甚至多个网友的妙答而解决的~
   所以我希望大大不要灰心!!

我总觉得我说的离题了~

作者: cjiabing    时间: 2011-9-6 21:36

我实在不明白楼主的“去掉用户在批处理等待时输入的东西”到底是什么东西。
不同的人对批处理有不同的理解,而批处理的初衷也不是拿来做游戏的,而且,批处理也不是很适宜做游戏,因此,许多人对批处理游戏是不看好的,这也不能怪大家。
但是,批处理做游戏也是可以的,而且我们的原创作品区就有很多有意义的批处理游戏,虽然有的用到了第三方,但游戏的主体和构思是基于批处理的,我们也看到了许多优秀的批处理游戏。所以,说批处理做游戏不行、不好都是不可相信的。
对于游戏,我们是这样说的,游戏能放松身心,启迪智慧。小孩子都是玩游戏长大的,通过游戏,我们认识了世界,获得了知识,体验了快乐。同样,批处理游戏,也能使得各位开心,也能激发大家的灵感。许多科学家、发明家等,都是喜欢玩游戏的,比如爱因斯坦、爱迪生、鲁班等等。在GOOGLE公司,公司办公室的墙壁通常都是能写能画的,给员工随意画画,许多灵感就来自这样一种休闲游戏上。
批处理同样需要游戏。游戏也需要编程,需要提出问题、分析问题、解决问题,需要批处理技术和批处理思想。通过编写批处理游戏,提高你的编程水平。通过玩批处理游戏,使得你对批处理产生更大的兴趣。就比如斗地主游戏,想法、流程可能都一样,但是,编写代码的构思过程、技术手法可能大大不一样。
玩批处理游戏并不会降低你对批处理的认识,而是提高了;写批处理游戏不会是不务正业,而是自己批处理技术水平的一个考验。
在玩乐中促进学习,在学习中促进玩乐。
作者: web    时间: 2012-10-16 22:26

学无止境 创意无限




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