Siguiendo con la Aplicacion del Concepto de Coordenadas y Graficos en Batch Desarrollado por Mi... 8)...pues les vengo a presentar un Nuevo Juego que he ideado...para su Deleite....
PushBox v 1 - by SmartSe trata de un Juego en el cual controlas a un Jugador en una Especie de Laberinto, el cual tienes que guiar y hacer que Empuje (Push) unas Cajas (Box) hasta hacerlas llegar a unas posiciones predeterminadas, todo esto hacerlo en la menor cantidad de Movimientos.
Controles
Arriba: Flecha Arriba
Abajo: Flecha Abajo
Derecha: Flecha Derecha
Izquierda: Flecha Izquierda
Salir: Tecla "X"
Codigo:
@mode
con cols=21 lines=18
@::Another Batch Game
@::by ::SmartGenius ::
:load
:init
:Levels
if "
%L%"=="
%NLevels%"
Goto :
Win
:Graphic
:First
cls
set Lin_
%%d=
!Lin_%% style="color: #448888;">d!!X%%eY%%d!)) echo. PushBox v1 by Smart
echo. Nivel:
%L% Movs:
%Movs% for /l
%%f in (0,1,
%LimY%) do (echo. º
!Lin_%% style="color: #448888;">f!º) keyboard
if "
%errorlevel%"=="77"
(call :
MovX+ "
%CurPos%"
) if "
%errorlevel%"=="75"
(call :
MovX- "
%CurPos%"
) if "
%errorlevel%"=="80"
(call :
MovY+ "
%CurPos%"
) if "
%errorlevel%"=="72"
(call :
MovY- "
%CurPos%"
) if "
%errorlevel%"=="88"
(set EOG=True
&Goto :
Eof) if "
%errorlevel%"=="120"
(set EOG=True
&Goto :
Eof) if "
%NXL%"=="True"
(Goto :
Eof)
::Logica de Movimiento en el Plano
::Coded by :: SmartGenius ::
:MovX+
for /f "tokens=1,2 delims=X,Y"
%%p in ("
%~1"
) do ( if "
!NMovX!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovX!"=="% style="color: #448888;">Push%" ( if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if "
!NMovX!"=="% style="color: #448888;">Box%" ( if "
!NMovXX!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovXX!"=="% style="color: #448888;">Box%" (Goto :Eof) if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= for %%u in (%Pushes%) do (if "
!%% style="color: #448888;">u!"==" " (set %%u=%Push%))
:MovX-
for /f "tokens=1,2 delims=X,Y"
%%p in ("
%~1"
) do ( if "
!NMovX!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovX!"=="% style="color: #448888;">Push%" ( if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if "
!NMovX!"=="% style="color: #448888;">Box%" ( if "
!NMovXX!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovXX!"=="% style="color: #448888;">Box%" (Goto :Eof) if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= for %%u in (%Pushes%) do (if "
!%% style="color: #448888;">u!"==" " (set %%u=%Push%))
:MovY+
for /f "tokens=1,2 delims=X,Y"
%%p in ("
%~1"
) do ( if "
!NMovY!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovY!"=="% style="color: #448888;">Push%" ( if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if "
!NMovY!"=="% style="color: #448888;">Box%" ( if "
!NMovYY!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovYY!"=="% style="color: #448888;">Box%" (Goto :Eof) if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= for %%u in (%Pushes%) do (if "
!%% style="color: #448888;">u!"==" " (set %%u=%Push%))
:MovY-
for /f "tokens=1,2 delims=X,Y"
%%p in ("
%~1"
) do ( if "
!NMovY!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovY!"=="% style="color: #448888;">Push%" ( if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= if "
!NMovY!"=="% style="color: #448888;">Box%" ( if "
!NMovYY!"=="% style="color: #448888;">Bound%" (Goto :Eof) if "
!NMovYY!"=="% style="color: #448888;">Box%" (Goto :Eof) if !% style="color: #448888;">~1!==% style="color: #448888;">Player% set %~1= for %%u in (%Pushes%) do (if "
!%% style="color: #448888;">u!"==" " (set %%u=%Push%))
:Clear
:Win
cls
echo Nivel:
%%v Movs:
!P%%v!)
:End
msg * Gracias por Jugar PushBox v1 by :: SmartGenius::
::Niveles del Juego PushBox
::Coordenadas Cartesianas
::Coded by :: SmartGenius ::
::Inicio Nivel 1
:Level1
set Pushes=X5Y2,X6Y2,X7Y2
for %%i in (X2Y1,X3Y1,X4Y1,X5Y1,X6Y1,X7Y1,X8Y1,X2Y2,X8Y2,X2Y3,X6Y3,X7Y3,X8Y3,X9Y3
) do (set %%i=
%Bound%) for %%j in (X1Y4,X2Y4,X3Y4,X9Y4,X1Y5,X5Y5,X7Y5,X9Y5,X1Y6,X5Y6,X9Y6,X1Y7,X5Y7,X6Y7
) do (set %%j=
%Bound%) for %%k in (X7Y7,X8Y7,X9Y7,X1Y8,X2Y8,X3Y8,X4Y8,X5Y8,X6Y8
) do (set %%k=
%Bound%) for %%l in (X3Y2,X3Y3,X4Y3,X5Y3,X5Y4,X6Y4,X7Y4,X8Y4,X2Y5,X3Y5
) do (set %%l=
) for %%m in (X4Y5,X8Y5,X2Y6,X4Y6,X6Y6,X7Y6,X8Y6,X2Y7,X3Y7,X4Y7
) do (set %%m=
)
:Check1
if "
!X5Y2!"=="% style="color: #448888;">Box%" ( if "
!X6Y2!"=="% style="color: #448888;">Box%" ( if "
!X7Y2!"=="% style="color: #448888;">Box%" set NXL=True)) ::Fin Nivel 1
::Inicio Nivel 2
:Level2
set Pushes=X3Y5,X3Y6,X3Y7
for %%i in (X3Y1,X4Y1,X5Y1,X6Y1,X3Y2,X6Y2,X7Y2,X8Y2,X3Y3,X8Y3,X2Y4,X3Y4,X4Y4,X6Y4
) do (set %%i=
%Bound%) for %%j in (X8Y4,X9Y4,X2Y5,X4Y5,X6Y5,X9Y5,X2Y6,X7Y6,X9Y6,X2Y7,X9Y7,X2Y8,X3Y8,X4Y8
) do (set %%j=
%Bound%) for %%k in (X5Y8,X6Y8,X7Y8,X8Y8,X9Y8
) do (set %%k=
%Bound%) for %%l in (X5Y2,X4Y3,X6Y3,X7Y3,X5Y4,X7Y4,X5Y5,X7Y5
) do (set %%l=
) for %%m in (X8Y5,X5Y6,X6Y6,X8Y6,X4Y7,X5Y7,X6Y7,X8Y7
) do (set %%m=
)
:Check2
if "
!X3Y5!"=="% style="color: #448888;">Box%" ( if "
!X3Y6!"=="% style="color: #448888;">Box%" ( if "
!X3Y7!"=="% style="color: #448888;">Box%" set NXL=True)) ::Fin Nivel 2
::Inicio Nivel 3
:Level3
set Pushes=X3Y6,X4Y6,X3Y7,X4Y7
for %%h in (X3Y4,X5Y5,X8Y5,X7Y6
) do (set %%h=
%Box%) for %%i in (X2Y2,X3Y2,X4Y2,X5Y2,X6Y2,X7Y2,X8Y2,X2Y3,X8Y3,X9Y3,X10Y3,X1Y4,X2Y4,X4Y4
) do (set %%i=
%Bound%) for %%j in (X5Y4,X6Y4,X10Y4,X1Y5,X10Y5,X1Y6,X5Y6,X9Y6,X10Y6,X1Y7,X2Y7,X5Y7,X9Y7
) do (set %%j=
%Bound%) for %%k in (X2Y8,X3Y8,X4Y8,X5Y8,X6Y8,X7Y8,X8Y8,X9Y8
) do (set %%k=
%Bound%) for %%l in (X3Y3,X4Y3,X5Y3,X6Y3,X7Y3,X7Y4,X8Y4,X9Y4,X2Y5,X4Y5
) do (set %%l=
) for %%m in (X6Y5,X7Y5,X9Y5,X2Y6,X6Y6,X8Y6,X6Y7,X7Y7,X8Y7
) do (set %%m=
)
:Check3
if "
!X3Y6!"=="% style="color: #448888;">Box%" ( if "
!X3Y7!"=="% style="color: #448888;">Box%" ( if "
!X4Y6!"=="% style="color: #448888;">Box%" ( if "
!X4Y7!"=="% style="color: #448888;">Box%" set NXL=True))) ::Fin Nivel 3
::Inicio Nivel 4
:Level4
set Pushes=X7Y3,X7Y4,X7Y5,X7Y6
for %%h in (X5Y3,X6Y3,X6Y4,X5Y5
) do (set %%h=
%Box%) for %%i in (X3Y1,X4Y1,X5Y1,X6Y1,X3Y2,X6Y2,X7Y2,X8Y2,X3Y3,X8Y3,X3Y4,X8Y4
) do (set %%i=
%Bound%) for %%j in (X3Y5,X8Y5,X3Y6,X8Y6,X3Y7,X4Y7,X5Y7,X6Y7,X7Y7,X8Y7,X5Y6
) do (set %%j=
%Bound%) for %%l in (X4Y2,X5Y2,X4Y3,X5Y4,X4Y5,X6Y5,X4Y6,X6Y6
) do (set %%l=
)
:Check4
if "
!X7Y3!"=="% style="color: #448888;">Box%" ( if "
!X7Y4!"=="% style="color: #448888;">Box%" ( if "
!X7Y5!"=="% style="color: #448888;">Box%" ( if "
!X7Y6!"=="% style="color: #448888;">Box%" set NXL=True)))
::Inicio Nivel 5
:Level5
set Pushes=X4Y5,X5Y5,X6Y5,X7Y5
for %%h in (X2Y4,X3Y5,X8Y4,X9Y5
) do (set %%h=
%Box%) for %%i in (X1Y2,X2Y2,X3Y2,X4Y2,X7Y2,X8Y2,X9Y2,X10Y2,X11Y2,X0Y3,X1Y3,X4Y3
) do (set %%i=
%Bound%) for %%j in (X7Y3,X11Y3,X0Y4,X4Y4,X5Y4,X6Y4,X7Y4,X11Y4,X0Y5,X11Y5,X0Y6,X1Y6
) do (set %%j=
%Bound%) for %%k in (X6Y6,X10Y6,X11Y6,X1Y7,X2Y7,X3Y7,X4Y7,X5Y7,X6Y7,X7Y7,X8Y7,X9Y7
) do (set %%k=
%Bound%) for %%l in (X2Y3,X3Y3,X8Y3,X9Y3,X10Y3,X1Y4,X3Y4,X9Y4,X10Y4,X1Y5,X2Y5,X8Y5
) do (set %%l=
) for %%m in (X10Y5,X2Y6,X3Y6,X4Y6,X5Y6,X7Y6,X9Y6
) do (set %%m=
)
:Check5
if "
!X4Y5!"=="% style="color: #448888;">Box%" ( if "
!X5Y5!"=="% style="color: #448888;">Box%" ( if "
!X6Y5!"=="% style="color: #448888;">Box%" ( if "
!X7Y5!"=="% style="color: #448888;">Box%" set NXL=True))) ::Fin Nivel 5
::Fin de Coordenadas
:Logo
cls
echo. °°°°°°°°°°°°°°°°°°°
echo. °°ÛÛÛ°Û°Û°ÛÛÛ°Û°°Û°
echo. °°Û°Û°Û°Û°Û°°°Û°°Û°
echo. °°ÛÛÛ°Û°Û°ÛÛÛ°ÛÛÛÛ°
echo. °°Û°°°Û°Û°°°Û°Û°°Û°
echo. °°Û°°°ÛÛÛ°ÛÛÛ°Û°°Û°
echo. °°°°°°°°°°°°°°°°°°°
echo. °°°ÛÛÛ°°ÛÛÛ°Û°°°Û°°
echo. °°°Û°°Û°Û°Û°°Û°Û°°°
echo. °°°ÛÛÛ°°Û°Û°°°Û°°°°
echo. °°°Û°°Û°Û°Û°°Û°Û°°°
echo. °°°ÛÛÛ°°ÛÛÛ°Û°°°Û°°
echo. °°°°°°°°°°°°°°°°°°°
echo. °°: SmartGenius :
°° echo. °°°°°°°°°°°°°°°°°°°
::::::::::::::::::::
::Records by Smart::
:: ::
::Nivel 1: 70 Movs::
::Nivel 2: 50 Movs::
::Nivel 3:116 Movs::
::Nivel 4: 25 Movs::
::Nivel 5: 63 Movs::
::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::
::El Siguiente Codigo se encarga de Crear el
::archivo necesario para recibir entradas desde
::el teclado..... KEYBOARD.EXE
::Creditos a Carlitos ;)
::::::::::::::::::::::::::::::::::::::::::::::::
:NoKey
@mode
con cols=30 lines=20
cls
echo Uno de los archivos necesarios para el
echo funcionamiento de este Script no se
echo A Continuacion sera creado...
echo Archivo Creado Satisfactoriamente...
echo Por favor reinicie el Script.
:keyboard
(
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08
CD 21 3C 00 75 02
CD 21 B4 4C
CD 21
)>keyboard.dat
type keyboard.dat
|debug
>NUL 2
>&1
del /f/q/a "keyboard.exe"
>NUL 2
>&1
ren keyboard.dat "keyboard.exe"
El Juego Consta de 5 Niveles con diferente Grado de Dificultad en cuanto a la Resolucion del Puzzle, y pueden agregarse mas Niveles.....siempre y cuando esten bien diseñados y cumplan con la logica del juego. Pronto les Traere mas Niveles para Este mismo Juego.... Los Records Para los Niveles Son:
::Records by Smart
::Nivel 1: 70 Movs
::Nivel 2: 50 Movs
::Nivel 3:116 Movs
::Nivel 4: 25 Movs
::Nivel 5: 63 MovsTraten de Hacer su mejor Esfuerzo en resolverlos.....
.......de seguro les gustara, acepto comentarios, dudas y sugerencias.....
Un Saludo.
PD: Quien Dijo que no se podia Jugar en Batch ??.......
PD2: El Limite es tu Imaginacion !!!