2013-08-20 50 views
0

所以我正在創建類似於「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​​值,但是等待時間總是相同的。爲什麼會這樣,我該如何解決它?

謝謝你的時間。

回答

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秒多的時間來研究這個問題,而在最後一場比賽中會有四分之一秒的時間!

Mona

+0

如果您發現任何問題,請告訴我,我沒有機會對此進行測試。此外,我即將添加提供空白答案的功能。如果你沒有回答,程序將結束。 – Monacraft

+0

修復了無回答問題。 – Monacraft

+0

非常感謝您提供如此精彩的深度響應!我實際上找出了我的問題。 (我錯誤地理解了ping格式,呵呵!)我使用我的方法的主要原因是因爲我希望每輪之間的時間減少隨着輪次的增加而增加。 (這就是我選擇幾何系列的原因)。但是我也發現我需要終止條件,所以我添加了一個分部。這是我的代碼現在: 回聲關閉 組/ AY = 5005 組/ AX = 5000 組/ AZ = 75 :一 組/ AY =(%Y%+%Y%)/4 組/ AX =%×% - %Y% 回聲%Y% 回波%×% PING 1.1.1.1 -n 1 -w%×%> NUL 轉到一個 – user2701704

0

爲了使ping/wait技巧發揮作用,ip地址不能存在。 127.0.0.1是您自己的計算機,所以它不會超時,因爲ping響應成功並立即執行。

而是選擇一個不存在的IP地址。例如。 10.20.30.40(假設不存在)

0

您可以在此調整10來給出第二個分辨率。這對你的代碼來說足夠了嗎?

ping -n 10 127.0.0.1 > nul 

這是以後的窗口的另一種選擇。

timeout /t 10 >nul