所以我正在创建一个类似于" Memory"的批处理文件游戏。游戏。 (即,在短时间内向玩家呈现对象列表,然后要求重复该模式)
我的问题在于如何在#轮增加时减少模式暴露给玩家的时间。
这是我目前的代码:
@echo off
set /a y=50
set /a x=1000
:foo
set /a y=%y% + %y%
set /a x= %x% - %y%
echo %y%
echo %x%
ping -n 10 -w %x% 127.0.0.1 > nul
goto foo
运行时,上面的代码确实显示了按预期更改的x和y值,但等待时间始终相同。为什么这样,我该如何解决?
感谢您的时间。
答案 0 :(得分:1)
首先,为什么不使用sleep
?它会正常工作(输入sleep /?
以获取更多信息)
但是,这是使用for /l
循环
@echo off
setlocal enabledelayedexpansion
set score=0
title Memory Test : Current Score = !score!
for /l %%a in (0,1,20) do (
Rem In the above sequence, increase 20 to the amount of times you want the test to be performed
set number[%%a] = !random!!random!
echo Number: !number[%%a]!
set /a wait=21-%%a
set /a wait=!wait!*1000/4
sleep -m !wait!
cls
set /p "input=What was the last number youy saw? "
if !number[%%a]! equ "!input!" (
set /a score=!score!+1
Echo Correct !
title Memory Test : Current Score = !score!
)else(
Echo Incorrect! Coreect Answer = !number[%%a]!
)
)
echo Calculating score...
pause
cls
echo.
if %score% leq 14 set msg="Nice Try! But you can do better!"
if %score% geq 15 set msg="Good Job! Your on your way to the top!"
if %score% equ 20 set msg="Your So Close! Almost a perfect socre!"
if %score% equ 21 set msg="You got a perfect score! Woderful!"
Echo %score%/21 : %msg%
echo.
pause
这应该可以正常工作。请注意,您可以更改测试的持续时间,但是对于第一个游戏,他们将有超过5秒的时间来研究问题,并且在最后一轮中只有四分之一秒!
莫纳
答案 1 :(得分:0)
为了使ping / wait技巧起作用,ip地址必须不存在。 127.0.0.1是您自己的计算机,因此没有机会超时,因为ping响应是成功且立即的。
相反,请选择不存在的IP地址。例如。 10.20.30.40(假设不存在。)
答案 2 :(得分:0)
您可以在此调整10以提供大约第二个分辨率。这对您的代码来说是否足够?
ping -n 10 127.0.0.1 > nul
这是后来的Windows的另一种选择。
timeout /t 10 >nul