
バッチファイルでタイピング練習
するコードを書いてみました。
最初に、文字を登録するとテキストファイルが仕上がり、それを読み込んでタイプを練習するだけです。
ダラダラ書くのは嫌いなので、コードは下にあります。
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo Showing contents of ty1.txt:
type ty1.txt
pause
:input_loop
REM ユーザーにアルファベットの入力を促す
set /p char=文字を入力してください (終了するには'x'を入力):
REM 入力が'x'の場合、入力フェーズを終了
if /i "%char%"=="x" goto read_file
REM 入力されたアルファベットをty1.txtに追加
if defined char (
if exist ty1.txt (
(echo,%char%)>> ty1.txt
) else (
echo,%char%> ty1.txt
)
)
goto input_loop
:read_file
REM ty1.txtの内容を読み込む
set "file=ty1.txt"
set "chars="
if exist "%file%" (
for /f "tokens=1,* delims=," %%A in (%file%) do (
set "chars=!chars!%%A,"
if defined chars (set "chars=!chars!%%B")
)
) else (
echo %file%が見つかりません。
exit /b
)
REM カンマで区切られた文字列を配列に分割
set "chars_list="
set "len=0"
for %%C in (%chars%) do (
set /a len+=1
call set "chars_list=%%chars_list%% %%C"
)
:quiz_loop
REM ランダムに1つの文字を選択
set /a "rand=!random! %% len"
set /a "index=0"
for %%D in (%chars_list%) do (
if "!index!"=="!rand!" (
set "random_char=%%D"
goto ask
)
set /a index+=1
)
:ask
echo.
echo ランダムに選ばれた文字: !random_char!
set /p user_input=同じ文字を入力してください (終了するには'x'を入力):
REM 終了判定
if /i "%user_input%"=="x" goto end
REM 正誤判定
if "%user_input%"=="!random_char!" (
echo 正解です!
) else (
echo 不正解です。正しい文字は !random_char! です。
)
goto quiz_loop
:end
echo 終了します。
pause
endlocal