Código:
@ECHO OFF
:INICIO
CLS
SET TITLE=Game [%RANDOM%]
TITLE %TITLE%
ECHO 1. Jugar
ECHO 2. Niveles
ECHO.
ECHO 0. Salir
ECHO.
SET /P OPCION="> "
IF NOT DEFINED OPCION (GOTO:INICIO)
IF "%OPCION:~0,1%"=="1" (GOTO:NIVEL)
IF "%OPCION:~0,1%"=="2" (GOTO:COMO)
IF "%OPCION:~0,1%"=="0" (EXIT) ELSE (GOTO:INICIO)
:NIVEL
CLS
ECHO Nivel de dificultad:
ECHO.
ECHO 1. Facil
ECHO 2. Medio
ECHO 3. Dificil
ECHO.
ECHO 0. Volver
ECHO.
SET /P NIVEL="> "
IF NOT DEFINED NIVEL (GOTO:NIVEL)
IF "%NIVEL:~0,1%"=="1" (
SET NUMERO=%RANDOM%%RANDOM%
SET SEGUNDOS=5
GOTO:JUGAR
)
IF "%NIVEL:~0,1%"=="2" (
SET NUMERO=%RANDOM%%RANDOM%%RANDOM%
SET SEGUNDOS=7
GOTO:JUGAR
)
IF "%NIVEL:~0,1%"=="3" (
SET NUMERO=%RANDOM%%RANDOM%%RANDOM%
SET SEGUNDOS=6
GOTO:JUGAR
)
IF "%NIVEL:~0,1%"=="0" (GOTO:INICIO) ELSE (GOTO:NIVEL)
:COMO
CLS
TITLE Ejemplo de niveles de dificultad
ECHO Facil: Escribir el siguiente numero antes de 5 segundos: %RANDOM%%RANDOM%
ECHO Medio: Escribir el siguiente numero antes de 7 segundos: %RANDOM%%RANDOM%%RANDOM%
ECHO Dificil: Escribir el siguiente numero antes de 6 segundos: %RANDOM%%RANDOM%%RANDOM%
ECHO.
ECHO Los numeros son aleatorios.
ECHO.
PAUSE
GOTO:INICIO
:JUGAR
CLS
ECHO Escriba el siguiente numero antes de %SEGUNDOS% segundos:
ECHO.
ECHO %NUMERO%
ECHO.
(
ECHO @TITLE Contador
ECHO @PING -n %SEGUNDOS% LOCALHOST
ECHO @MSG * Perdiste, intentalo nuevamente.
ECHO @TASKKILL /F /FI "WINDOWTITLE EQ %TITLE%"^>NUL
ECHO @START "" "%~XN0"
ECHO @DEL/Q/F %%0^&^&TASKKILL /F /FI ^"WINDOWTITLE EQ Contador^"^>NUL
)>Contador.bat
START /MIN Contador.bat
SET /P NUMEROS="> "
IF "%NUMEROS%"=="%NUMERO%" (
MSG * Felicidades, has ganado.
DEL/Q/F Contador.bat
TASKKILL /F /FI "WINDOWTITLE EQ Contador">NUL
START "" "%~XN0"
TASKKILL /F /FI "WINDOWTITLE EQ %TITLE%">NUL
) ELSE (
MSG * Perdiste, intentalo nuevamente.
DEL/Q/F Contador.bat
TASKKILL /F /FI "WINDOWTITLE EQ Contador">NUL
START "" "%~XN0"
TASKKILL /F /FI "WINDOWTITLE EQ %TITLE%">NUL
)
Ver código desde Googlepages
Explicación del código:
Etiqueta INICIO:
Borra la pantalla.
Declara la variable "TITLE" con el contenido:
TITLE [(Número Aleatorio)]
Cambia el título en la ventana por la variable "TITLE".
Muestra tres opciones:
1. Jugar
2. Niveles
3. Salir
Permite que el usuario elija la opción.
Si no se define una opción:
El intérprete de comandos se dirige a la etiqueta "INICIO".
Si el primer carácter de la opción es 1:
El intérprete de comandos se dirige a la etiqueta "NIVEL".
Si el primer carácter de la opción es 2:
El intérprete de comandos se dirige a la etiqueta "COMO".
Si el primer carácter de la opción es 0:
Abandona el intérprete de comandos.
Etiqueta NIVEL:
Borra la pantalla.
Muestra cuatro opciones:
1. Facil
2. Medio
3. Dificil
0. Volver
Permite que el usuario elija la opción.
Si no se define una opción:
El intérprete de comandos se dirige a la etiqueta "NIVEL".
Si el primer carácter de la opción es 1:
Declara la variable "NUMERO" con el contenido:
(Número Aleatorio)(Número Aleatorio)
Declara la variable "SEGUNDOS" con el contenido:
5
El intérprete de comandos se dirige a la etiqueta "JUGAR".
Si el primer carácter de la opción es 2:
Declara la variable "NUMERO" con el contenido:
(Número Aleatorio)(Número Aleatorio)(Número Aleatorio)
Declara la variable "SEGUNDOS" con el contenido:
7
El intérprete de comandos se dirige a la etiqueta "JUGAR".
Si el primer carácter de la opción es 3:
Declara la variable "NUMERO" con el contenido:
(Número Aleatorio)(Número Aleatorio)(Número Aleatorio)
Declara la variable "SEGUNDOS" con el contenido:
6
El intérprete de comandos se dirige a la etiqueta "JUGAR".
Si el primer carácter de la opción es 0:
El intérprete de comandos se dirige a la etiqueta "INICIO".
Etiqueta COMO:
Borra la pantalla.
Cambia el título en la ventana por "Ejemplo de niveles de dificultad".
Muestra ejemplos de niveles de dificultad.
Suspende el proceso de un programa por lotes y espera que el usuario presione una tecla.
El intérprete de comandos se dirige a la etiqueta "INICIO".
Etiqueta JUGAR:
Borra la pantalla.
Muestra el mensaje:
Escriba el siguiente numero antes de (SEGUNDOS) segundos:
Muestra un número aleatorio.
Crea un script llamado "Contador.bat" y lo ejecuta minimizado.
Permite que el usuario escriba el número aleatorio.
Si el número aleatorio es igual al que se escribió:
Muestra el mensaje "Felicidades, has ganado."
Borra el archivo "Contador.bat"
Termina con los procesos que contengan el valor "Contador" en el título de la ventana.
Se ejecuta a si mismo.
Termina con los procesos que contengan la variable "TITLE" en el título de la ventana.
Si el número aleatorio no es igual al que se escribió:
Muestra el mensaje "Perdiste, intentalo nuevamente."
Borra el archivo "Contador.bat"
Termina con los procesos que contengan el valor "Contador" en el título de la ventana.
Se ejecuta a si mismo.
Termina con los procesos que contengan la variable "TITLE" en el título de la ventana.
Contador.bat:
Cambia el título en la ventana por "Contador"
Duerme los segundos que elige el usuario en la etiqueta "NIVEL".
Muestra el mensaje "Perdiste, intentalo nuevamente."
Termina con los procesos que contengan la variable "TITLE" en el título de la ventana.
Ejecuta el archivo donde está el juego.
Se borra asimismo y termina con los procesos que contengan el valor "Contador" en el título de la ventana.