创建几何衰减的暂停循环

时间:2013-08-20 23:35:35

标签: batch-file delay

所以我正在创建一个类似于" 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值,但等待时间始终相同。为什么这样,我该如何解决?

感谢您的时间。

3 个答案:

答案 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