[Batch Game] PushBox v 1 - by :: SmartGenius ::

Iniciado por SmartGenius, 16 Enero 2009, 19:49 PM

0 Miembros y 1 Visitante están viendo este tema.

SmartGenius

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.... :D :D

PushBox v 1 - by Smart



Se 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:
Código (dos) [Seleccionar]
  @echo off
  @title PushBox v 1
  @mode con cols=21 lines=18
  @::Another Batch Game
  @::by ::SmartGenius ::

if not exist "keyboard.exe" (Goto :NoKey)

:load
call :Logo
setlocal enabledelayedexpansion
set LimX=12
set LimY=10
set NLevels=5

:init
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set X%%aY%%b=°))
set Player=
set Bound=Û
set Box=*
set Push=o

:Levels
set /a L+=1
Call :Level%L%
Call :Graphic
set P%L%=%Movs%
if "%EOG%"=="True" Goto :End
if "%L%"=="%NLevels%" Goto :Win
ping -n 1 0.0.0.0 >nul
Goto :Init

:Graphic
Call :Clear
:First
cls
for /l %%d in (0,1,%LimY%) do (
for /l %%e in (0,1,%LimX%) do (
set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
echo.
echo. PushBox v1 by Smart
echo.
echo.  Nivel:%L%   Movs:%Movs%
echo.   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ»
for /l %%f in (0,1,%LimY%) do (echo.   º!Lin_%%f!º)
echo.   ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ
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)
Call :Check%L%
if "%NXL%"=="True" (Goto :Eof)
Goto :Graphic

::Logica de Movimiento en el Plano
::Coded by :: SmartGenius ::

:MovX+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
set /a MovX=%%p+1
set /a MovXX=%%p+2
call set NMovX=%%X!MovX!Y%%q%%
call set NMovXX=%%X!MovXX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Push%" (
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set CurPos=X!MovX!Y%%q)
if "!NMovX!"==" " (
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set CurPos=X!MovX!Y%%q)
if "!NMovX!"=="%Box%" (
if "!NMovXX!"=="%Bound%" (Goto :Eof)
if "!NMovXX!"=="%Box%" (Goto :Eof)
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set X!MovXX!Y%%q=%Box%
set CurPos=X!MovX!Y%%q))
set /a Movs+=1
for %%u in (%Pushes%) do (if "!%%u!"==" " (set %%u=%Push%))
Goto :Eof

:MovX-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
set /a MovX=%%p-1
set /a MovXX=%%p-2
call set NMovX=%%X!MovX!Y%%q%%
call set NMovXX=%%X!MovXX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Push%" (
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set CurPos=X!MovX!Y%%q)
if "!NMovX!"==" " (
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set CurPos=X!MovX!Y%%q)
if "!NMovX!"=="%Box%" (
if "!NMovXX!"=="%Bound%" (Goto :Eof)
if "!NMovXX!"=="%Box%" (Goto :Eof)
if !%~1!==%Player% set %~1=
set X!MovX!Y%%q=%Player%
set X!MovXX!Y%%q=%Box%
set CurPos=X!MovX!Y%%q))
set /a Movs+=1
for %%u in (%Pushes%) do (if "!%%u!"==" " (set %%u=%Push%))
Goto :Eof

:MovY+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
set /a MovY=%%q+1
set /a MovYY=%%q+2
call set NMovY=%%X%%pY!MovY!%%
call set NMovYY=%%X%%pY!MovYY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Push%" (
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set CurPos=X%%pY!MovY!)
if "!NMovY!"==" " (
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set CurPos=X%%pY!MovY!)
if "!NMovY!"=="%Box%" (
if "!NMovYY!"=="%Bound%" (Goto :Eof)
if "!NMovYY!"=="%Box%" (Goto :Eof)
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set X%%pY!MovYY!=%Box%
set CurPos=X%%pY!MovY!))
set /a Movs+=1
for %%u in (%Pushes%) do (if "!%%u!"==" " (set %%u=%Push%))
Goto :Eof

:MovY-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
set /a MovY=%%q-1
set /a MovYY=%%q-2
call set NMovY=%%X%%pY!MovY!%%
call set NMovYY=%%X%%pY!MovYY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Push%" (
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set CurPos=X%%pY!MovY!)
if "!NMovY!"==" " (
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set CurPos=X%%pY!MovY!)
if "!NMovY!"=="%Box%" (
if "!NMovYY!"=="%Bound%" (Goto :Eof)
if "!NMovYY!"=="%Box%" (Goto :Eof)
if !%~1!==%Player% set %~1=
set X%%pY!MovY!=%Player%
set X%%pY!MovYY!=%Box%
set CurPos=X%%pY!MovY!))
set /a Movs+=1
for %%u in (%Pushes%) do (if "!%%u!"==" " (set %%u=%Push%))
Goto :Eof

:Clear
for /l %%m in (0,1,%LimY%) do (set Lin_%%m=)
Goto :Eof

:Win
cls
echo.   Introduce tu
echo.      Nombre
echo.
set /p Nom=">>"
if not defined Nom Goto :Win
echo.
echo. Felicitaciones !
echo. %Nom%
echo.
for /l %%v in (1,1,%NLevels%) do (
echo  Nivel: %%v Movs: !P%%v!)
pause >nul

:End
msg * Gracias por Jugar PushBox v1 by :: SmartGenius::
endlocal
exit

::Niveles del Juego PushBox
::Coordenadas Cartesianas
::Coded by :: SmartGenius ::

::Inicio Nivel 1
:Level1
set Movs=0
set X4Y2=%Player%
set CurPos=X4Y2
set Pushes=X5Y2,X6Y2,X7Y2
for %%g in (%Pushes%) do (set %%g=%Push%)
for %%h in (X4Y4,X6Y5,X3Y6) do (set %%h=%Box%)
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= )
Goto :Eof

:Check1
set NXL=False
if "!X5Y2!"=="%Box%" (
if "!X6Y2!"=="%Box%" (
if "!X7Y2!"=="%Box%" set NXL=True))
Goto :Eof
::Fin Nivel 1

::Inicio Nivel 2
:Level2
set Movs=0
set X4Y2=%Player%
set CurPos=X4Y2
set Pushes=X3Y5,X3Y6,X3Y7
for %%g in (%Pushes%) do (set %%g=%Push%)
for %%h in (X5Y3,X4Y6,X7Y7) do (set %%h=%Box%)
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= )
Goto :Eof

:Check2
set NXL=False
if "!X3Y5!"=="%Box%" (
if "!X3Y6!"=="%Box%" (
if "!X3Y7!"=="%Box%" set NXL=True))
Goto :Eof
::Fin Nivel 2

::Inicio Nivel 3
:Level3
set Movs=0
set X3Y5=%Player%
set CurPos=X3Y5
set Pushes=X3Y6,X4Y6,X3Y7,X4Y7
for %%g in (%Pushes%) do (set %%g=%Push%)
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= )
Goto :Eof

:Check3
set NXL=False
if "!X3Y6!"=="%Box%" (
if "!X3Y7!"=="%Box%" (
if "!X4Y6!"=="%Box%" (
if "!X4Y7!"=="%Box%" set NXL=True)))
Goto :Eof
::Fin Nivel 3

::Inicio Nivel 4
:Level4
set Movs=0
set X4Y4=%Player%
set CurPos=X4Y4
set Pushes=X7Y3,X7Y4,X7Y5,X7Y6
for %%g in (%Pushes%) do (set %%g=%Push%)
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= )
Goto :Eof

:Check4
set NXL=False
if "!X7Y3!"=="%Box%" (
if "!X7Y4!"=="%Box%" (
if "!X7Y5!"=="%Box%" (
if "!X7Y6!"=="%Box%" set NXL=True)))
Goto :Eof

::Inicio Nivel 5
:Level5
set Movs=0
set X8Y6=%Player%
set CurPos=X8Y6
set Pushes=X4Y5,X5Y5,X6Y5,X7Y5
for %%g in (%Pushes%) do (set %%g=%Push%)
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= )
Goto :Eof

:Check5
set NXL=False
if "!X4Y5!"=="%Box%" (
if "!X5Y5!"=="%Box%" (
if "!X6Y5!"=="%Box%" (
if "!X7Y5!"=="%Box%" set NXL=True)))
Goto :Eof
::Fin Nivel 5

::Fin de Coordenadas

:Logo
cls
echo.
echo. °°°°°°°°°°°°°°°°°°°
echo. °°ÛÛÛ°Û°Û°ÛÛÛ°Û°°Û°
echo. °°Û°Û°Û°Û°Û°°°Û°°Û°
echo. °°ÛÛÛ°Û°Û°ÛÛÛ°ÛÛÛÛ°
echo. °°Û°°°Û°Û°°°Û°Û°°Û°
echo. °°Û°°°ÛÛÛ°ÛÛÛ°Û°°Û°
echo. °°°°°°°°°°°°°°°°°°°
echo. °°°ÛÛÛ°°ÛÛÛ°Û°°°Û°°
echo. °°°Û°°Û°Û°Û°°Û°Û°°°
echo. °°°ÛÛÛ°°Û°Û°°°Û°°°°
echo. °°°Û°°Û°Û°Û°°Û°Û°°°
echo. °°°ÛÛÛ°°ÛÛÛ°Û°°°Û°°
echo. °°°°°°°°°°°°°°°°°°°
echo. °°: SmartGenius :°°
echo. °°  Corp.  2009  °°
echo. °°°°°°°°°°°°°°°°°°°
ping -n 3 0.0.0.0 >nul
Goto :Eof

::::::::::::::::::::
::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.
echo  Uno de los archivos necesarios para el
echo  funcionamiento de este Script no se
echo  encuentra.
echo.
echo  A Continuacion sera creado...
call :keyboard
echo.
echo  Archivo Creado Satisfactoriamente...
echo  Por favor reinicie el Script.
echo.
pause
exit

:keyboard
(
echo n keyboard.dat
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
echo rcx
echo 002E
echo w0
echo q
echo.
)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
ren keyboard.dat "keyboard.exe"
Goto :Eof


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.... :D :D

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 Movs


Traten de Hacer su mejor Esfuerzo en resolverlos..... ;D.......de seguro les gustara, acepto comentarios, dudas y sugerencias..... ;D

Un Saludo.  ;)

PD: Quien Dijo que no se podia Jugar en Batch ??....... ::) ::)
PD2: El Limite es tu Imaginacion !!!


[||HackerDark||]


Darioxhcx

que locura la tuya hermano xDD
muy bueno
zarpado xD

saludos

FranciskoAsdf

Asdf debería ser algún tipo de función.

<[(x)]>

Muy Muy bueno el juegoo che te pásate.

y te quería informar q amenos en mi pc  cuando lo cerras de la ventana se tildap.

y no entendí muy bien este code


(
echo n keyboard.dat
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
echo rcx
echo 002E
echo w0
echo q
echo.
)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1


ya se que crea un archivo  'keyboard.dat'

pero la parte de los echo las e, n  rcx, 002e y todo eso son algo del echo o nada que ver??

si me explicarías ese pedacito te estaria mas que agradecido.

5a¬u|)=5


<[(x)]>