0

所以我正在努力创建一个类似于“记忆”游戏的批处理文件游戏。(即在短时间内向玩家展示对象列表,然后要求重复该模式)

我的问题在于如何随着轮数的增加而减少模式暴露给玩家的时间。

这是我当前的代码:

@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 值,但是等待时间始终相同。为什么会这样,我该如何解决?

感谢您的时间。

4

3 回答 3

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 秒的时间来研究问题,而在最后一轮则为四分之一秒!

莫娜

于 2013-08-21T00:38:24.057 回答
0

为了使 ping/wait 技巧起作用,IP 地址必须不存在。127.0.0.1 是你自己的计算机,所以它没有机会超时,因为 ping 响应是成功且立即的。

相反,请选择一个不存在的 IP 地址。例如 10.20.30.40(假设它不存在。)

于 2013-08-21T00:20:23.260 回答
0

您可以在此调整 10 以提供大约第二个分辨率。这对您的代码来说足够了吗?

ping -n 10 127.0.0.1 > nul

这是以后窗口的另一种选择。

timeout /t 10 >nul
于 2013-08-21T09:54:36.717 回答