I am creating a typing game for my office for whoever would like to try and improve their numberpad typing skill. My code keeps score, if the input is correct or incorrect, and with help from the stackoverflow community (the great Compo), my code has been improved. now I am trying to add difficulty options for the user. but I seem to be having a problem making the batch reference back to the entered difficulty and following the correct difficulty option. I know I can use IF and ELSE but im still getting used to how batch works.
version 1 of code before adding difficulty
@ECHO OFF
SET/A "correct=incorrect=0"
:START
CLS
COLOR 07
SET "num=%RANDOM%"
ECHO.
ECHO SCORE - CORRECT %correct%, INCORRECT %incorrect%
ECHO.
ECHO %num%
ECHO.
SET /P "INP= "
ECHO.
IF "%INP%"=="%num%" (
COLOR 27
ECHO CORRECT
SET/A "correct+=1"
PING -n 2 0.0.0.0 1>NUL
) ELSE (
COLOR 47
ECHO INCORRECT
SET/A "incorrect+=1"
PING -n 2 0.0.0.0 1>NUL
)
GOTO START
version 1 of code with difficulty option
@ECHO OFF
SET/A "correct=incorrect=0"
:STARTDIFF
ECHO DIFFICULTY?
ECHO.
ECHO EASY
ECHO HARD
ECHO.
SET /P "DIFF= "
IF "%DIFF%" EQU EASY GOTO STARTEASY
IF "%DIFF%" EQU HARD GOTO STARTHARD
::IF "%DIFF%" NEQ EASY GOTO STARTDIFF
: STARTEASY
CLS
COLOR 07
SET "num=%RANDOM%"
GOTO TEST
: STARTHARD
CLS
COLOR 07
SET "num=%RANDOM%%RANDOM%"
GOTO TEST
: TEST
ECHO.
ECHO SCORE - CORRECT %correct%, INCORRECT %incorrect%
ECHO.
ECHO %num%
ECHO.
SET /P "INP= "
ECHO.
IF "%INP%"=="%num%" (
COLOR 27
ECHO CORRECT
SET/A "correct+=1"
PING -n 2 0.0.0.0 1>NUL
) ELSE (
COLOR 47
ECHO INCORRECT
SET/A "incorrect+=1"
PING -n 2 0.0.0.0 1>NUL
)
ECHO %DIFF%>NUL
IF "%DIFF%" EQU EASY GOTO STARTEASY
IF "%DIFF%" EQU HARD GOTO STARTHARD
::IF "%DIFF%" NEQ EASY GOTO STARTDIFF
::GOTO START
how do tell the code to reference back to the set difficulty from the beginning and continue using that difficulty?
My apologies, I wish I new the correct terminology to better explain what I'm trying to do.
I'm not sure why you decided to completely change the structure back to a series of GOTO's:
Try this:
@ECHO OFF
ECHO DIFFICULTY?
ECHO.
ECHO 1. EASY
ECHO 2. HARD
ECHO.
CHOICE /C 12
SET "LEVEL=%ERRORLEVEL%"
SET/A "correct=incorrect=0"
:START
CLS
COLOR 07
IF "%LEVEL%"=="2" (Set "num=%RANDOM%%RANDOM%") ELSE SET "num=%RANDOM%"
ECHO.
ECHO SCORE - CORRECT %correct%, INCORRECT %incorrect%
ECHO.
ECHO %num%
ECHO.
SET/P "INP= "
ECHO.
IF "%INP%"=="%num%" (
COLOR 27
ECHO CORRECT
SET/A "correct+=1"
TIMEOUT 1 1>NUL
) ELSE (
COLOR 47
ECHO INCORRECT
SET/A "incorrect+=1"
TIMEOUT 1 1>NUL
)
GOTO START