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 秒を少し超える時間があり、最後のラウンドでは 1/4 秒かかります!

モナ

于 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 を調整して、約 2 秒の分解能を得ることができます。それはあなたのコードにとって十分ですか?

ping -n 10 127.0.0.1 > nul

これは、後のウィンドウの別のオプションです。

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