|
Mostrar Temas
|
Páginas: 1 [2] 3 4 5
|
11
|
Programacin / Scripting / [Batch Game] BattleShips v 1 - by :: SmartGenius ::
|
en: 31 Marzo 2009, 18:10 pm
|
Sip, aqui de nuevo yo...con otro juego Batch BattleShips v 1Descarga:http://one.xthost.info/smartv2/BatchGames/BattleShips_bySmartGenius.zip Creo que el juego no necesita explicacion porque la gran mayoria conocera la mecanica del mismo, ir descubriendo la posicion del enemigo antes de que descubarn la tuya. Los movimientos se realizan con las flechas de direccion y se confirma una coordenada con la tecla Enter. @echo off @title BattleShip @::Another Batch Game @::Coded by ::SmartGenius:: setlocal enabledelayedexpansion
if not exist "keyboard.exe" (Goto :NoKey)
Call :Logo
:Menu @cls @::BattleShip v 1 @mode con cols=21 lines=20 set colors=a123b567c9 echo. echo. BattleShips v 1 echo. echo. Ŀ Ŀ echo. 1. Jugar echo. echo. Ŀ Ŀ echo. 2. Salir echo. keyboard if "%errorlevel%"=="49" (Goto :InGame) if "%errorlevel%"=="50" (msg * BattleShip v 1 by SmartGenius&exit) if "%errorlevel%"=="32" (color 0!colors:~%random:~-1%,1!) Goto :Menu
:InGame Call :Clear Call :Load1 cls echo. echo. Barcos en Posicion echo. Cargando Juego... ping -n 3 0.0.0.0 >nul Call :Load2 Goto :Menu
::Tablero posicionador :Load1 set LimX=6 set LimY=6 set IniX=0 set IniY=0 set MovX=0 set MovY=0 set Ships=5 set Water= set Blank=X
:init1 for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b= )) set X0Y0= set Last= set Curpos=X0Y0 Goto :First
:Gp1 Call :Clear :First 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. Posiciona tus echo. Barcos... echo. echo. Ŀ for /l %%f in (0,1,%LimY%) do ( echo. !Lin_%%f! echo. Ĵ) echo. if "%Ships%"=="0" Goto :Eof keyboard if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%") if "%errorlevel%"=="75" (call :MovAX- "%CurPos%") if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%") if "%errorlevel%"=="72" (call :MovAY- "%CurPos%") if "%errorlevel%"=="13" (call :PosShip "%CurPos%") if "%errorlevel%"=="88" (Goto :Menu) if "%errorlevel%"=="120" (Goto :Menu) Goto :Gp1 ::Fin Tablero Posicionador
::Tablero de Batalla :Load2 @mode con cols=42 lines=20 for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set MX%%aY%%b= )) Call :GenPC
:init2 for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set PX%%aY%%b=!X%%aY%%b! set X%%aY%%b=)) set Player=5 set X0Y0= set Last= set Curpos=X0Y0 Goto :Gp2
:Gp2 title BattleShip v 1 by SmartGenius Call :Clear :Second for /l %%d in (0,1,%LimY%) do ( for /l %%e in (0,1,%LimX%) do ( set Lin_%%d=!Lin_%%d!!PX%%eY%%d! set Lin2_%%d=!Lin2_%%d!!X%%eY%%d!)) echo. echo. Jugador: %Player% PC: %PC% echo. A B C D E F G A B C D E F G echo. Ŀ : Ŀ for /l %%f in (0,1,%LimY%) do ( echo. %%f !Lin_%%f! : %%f !Lin2_%%f! echo. Ĵ : Ĵ) echo. : if "%PC%"=="0" Goto :Win if "%Player%"=="0" Goto :Lose keyboard if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%") if "%errorlevel%"=="75" (call :MovAX- "%CurPos%") if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%") if "%errorlevel%"=="72" (call :MovAY- "%CurPos%") if "%errorlevel%"=="13" ( call :Player "%CurPos%" Call :MovPC ) if "%errorlevel%"=="88" (Goto :Menu) if "%errorlevel%"=="120" (Goto :Menu) Goto :Gp2 ::Fin Tablero de Batalla
:MovAX+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%LimX%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovX=%%p+1 call set Last=%%X!MovX!Y%%q%% set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
:MovAX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%IniX%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovX=%%p-1 call set Last=%%X!MovX!Y%%q%% set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
:MovAY+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%LimY%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovY=%%q+1 call set Last=%%X%%pY!MovY!%% set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
:MovAY- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%IniY%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovY=%%q-1 call set Last=%%X%%pY!MovY!%% set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
:GenPC set PC=5 set R1=%random:~-1% set R2=%random:~-1% if not "%R1%" GTR "%LimX%" ( if not "%R2%" GTR "%LimY%" ( set MX%R1%Y%R2%= set /a var+=1 )) if "%var%"=="%PC%" Goto :Eof Goto :GenPC
:MovPC set R1=%random:~-1% set R2=%random:~-1% if not "%R1%" GTR "%LimX%" ( if not "%R2%" GTR "%LimY%" ( call set Tar=!PX%R1%Y%R2%! if "!Tar!"=="X" ( Goto :MovPC ) if "!Tar!"=="" ( Goto :MovPC ) if "!Tar!"=="" ( set PX%R1%Y%R2%= set /a Player-=1 Goto :Eof ) else ( set PX%R1%Y%R2%=X Goto :Eof ) )) Goto :MovPC
:PosShip if not "%Last%"=="" ( set %~1= set /a Ships-=1) Goto :Eof
:Player if defined M%~1 ( set %~1= set /a PC-=1 Goto :Eof ) set %~1=%Blank% Goto :Eof
:Lose msg * Perdiste ! ping -n 3 0.0.0.0 >nul Goto :Menu
:Win msg * Ganaste ! ping -n 3 0.0.0.0 >nul Goto :Menu
:Clear for /l %%m in (0,1,%LimY%) do ( set Lin_%%m= set Lin2_%%m= ) Goto :Eof
:Logo @mode con cols=40 lines=15 @title BattleShips v 1 by SmartGenius echo. echo. _==^| echo. Battle _==^| )__) ^| Ships echo. )_) )___) )) echo. )___) )____))_) echo. _ )____)_____))__)\ echo. \---__^|____/^|___^|___-\\--- echo. ~~~~~~~~~\ oo oo oo oo /~~~~~~~~ echo. ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ echo. ~~~~ ~~~~ ~~~~ ~~ ~~ echo. ~~~~~ ~~~~~ echo. echo. SmartGenius, Corp. 2009 pause >nul ping -n 3 0.0.0.0 >nul Goto :Eof
:NoKey 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 ping -n 2 0.0.0.0 >nul Goto :Menu
: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 Espero sea de su agrado..cualquier duda o comentario por favor hacerlo... !! Saludos. =D
|
|
|
12
|
Programacin / Scripting / [Batch Game] PushBox v 2 Reloaded - by :: SmartGenius ::
|
en: 27 Marzo 2009, 04:24 am
|
PushBox v 2 Reloaded - by SmartGeniusSegunda version de mi popular juego PushBox, hecho en batch ! Link: http://one.xthost.info/smartv2/BatchGames/PushBoxReloaded_bySmartGenius.zipCuenta con mejoras a la interfaz, mejora de la interactividad con el usuario y correcion de algunos errores previos... Controles:
Arriba: Flecha Arriba Abajo: Flecha Abajo Derecha: Flecha Derecha Izquierda: Flecha Izquierda Guardar: Tecla "S" Volver al Menu: Tecla "X"
Entre las nuevas funcionalidades esta la de poder guardar el progreso tan solo con presionar la teclas "S" , lo que devolvera al menu. Cada "Perfil" de Nick puede guardar sus propios records y progresos, cuando inicie el juego se le preguntara por su nick, lo que le permitira usar la opcion de escoger nivel y seguir donde ibas...xD Tambien en el menu principal pueden presionar la barra espaciadora y cambiara el color de la interfaz, para los que no les gusta el que viene por defecto ! El Juego cuenta con 5 Nuevos Niveles, y la posibilidad de jugar los niveles de la version anterior, solo ejecuten el archivo de levels y se hara el cambio automaticamente... Codigo Principal (PushBox2.bat)@echo off @title PushBox v 2 @mode con cols=22 lines=20 @::PushBox Reloaded @::Another Batch Game @::Coded by SmartGenius setlocal enabledelayedexpansion
if not exist "keyboard.exe" (Goto :NoKey)
:load call :Logo call :Player call Levels NUM
:Menu if not defined L set L=0 set EOG=False set colors=a123b567c9 cls echo. ͻ echo. PushBox Reloaded echo. ͼ echo. echo. Nick: %nick% echo. echo. Opciopnes ^>^> echo. echo. echo. 1. Jugar PushBox echo. echo. 2. Escoger Nivel echo. echo. 3. Cambiar Nick echo. echo. 4. Salir echo. echo. keyboard if "%errorlevel%"=="49" (Goto :Load) if "%errorlevel%"=="50" (Goto :Choose) if "%errorlevel%"=="51" (call :Player) if "%errorlevel%"=="52" (Goto :End) if "%errorlevel%"=="32" (color 0!colors:~%random:~-1%,1!) if "%errorlevel%"=="167" (Call :Console) Goto :Menu
:Choose call :CheckML >nul cls echo. echo. Nivel a Jugar ? echo. De 1 a %MaxLevel% echo. set /p lev=">> " if not defined lev (set lev=1) if %lev% GTR %MaxLevel% ( echo. echo. No trates de hacer echo. Cheat, aun no has echo. llegado a ese Nivel. echo. ping -n 3 0.0.0.0 >nul Goto :Menu ) set /a L=%lev%-1
:Load set LimX=13 set LimY=11
: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 if not defined L set L=0 set /a L=%L%+1 Call Levels Level%L% Call :Graphic set P%L%=%Movs% if "%EOG%"=="True" Goto :Menu echo.%L%>"Records_%nick%.txt:MaxLevel.ini" 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 v2 by Smart echo. echo. Player:%nick% 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) if "%errorlevel%"=="83" (Goto :Save) if "%errorlevel%"=="115" (Goto :Save) if "%errorlevel%"=="76" (Goto :Eof) if "%errorlevel%"=="108" (Goto :Eof) Call Levels 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
:Save cls if not exist Records_%nick%.txt ( echo. Records PushBox 2 >>Records_%nick%.txt echo. Jugador: %nick% >>Records_%nick%.txt) for /l %%v in (1,1,%NLevels%) do ( if defined P%%v ( echo Nivel: %%v Movs: !P%%v! >>Records_%nick%.txt)) echo.%L%>"Records_%nick%.txt:MaxLevel.ini" echo. echo. PushBox v 2 echo. echo. Juego Guardado echo. ping -n 2 0.0.0.0 >nul Goto :Menu
:Console cls echo. echo. Console echo. echo. Enter Number... set /p tar=">> " if not defined tar Goto :Eof set /a L=(%tar%^>^>5)-1 Goto :Eof
:CheckML for /f "tokens=*" %%a in (Records_%nick%.txt:Maxlevel.ini) do ( if "%%a"=="" ( set MaxLevel=1 ) else ( set MaxLevel=%%a )) if not defined MaxLevel set MaxLevel=1 Goto :Eof
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:Win cls echo. echo. Felicitaciones ! echo. %nick% echo. echo. Has Superado todos echo. los niveles del echo. Juego. if not exist Records_%nick.txt% ( echo. Records PushBox 2 >>Records_%nick%.txt echo. Jugador: %nick% >>Records_%nick%.txt) for /l %%v in (1,1,%NLevels%) do ( if defined P%%v ( echo Nivel: %%v Movs: !P%%v! >>Records_%nick%.txt)) ping -n 4 0.0.0.0 >nul
:End msg * Gracias por Jugar PushBox v 2 by :: SmartGenius:: endlocal exit
:Player cls echo. echo. Nickname ? set /p nick=">> " if not defined nick set nick=User Goto :Eof
:Logo cls echo. echo. echo. ۰۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰ echo. ۰۰۰۰۰۰ echo. ۰۰۰۰۰ echo. echo. ۰۰۰۰۰ echo. ۰۰۰۰۰۰۰۰ echo. ۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰ echo. echo. : SmartGenius : echo. Corp. 2009 echo. echo. ping -n 3 0.0.0.0 >nul ::Dedicated to the CUH, ::Code-Makers, Latinohack ::Members....by SmartGenius Goto :Eof
: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. Archivo Creado Satisfactoriamente echo. pause Goto :Menu
: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 echo. 1 pause del /f/q/a "keyboard.exe">NUL 2>&1 echo. 2 pause ren keyboard.dat "keyboard.exe" echo. 3 pause Goto :Eof Nuevos Niveles (Levels.bat)@echo off ::Niveles del Juego PushBox v 2 Reloaded ::Coordenadas Cartesianas ::Coded by :: SmartGenius ::
if ["%1"]==[""] ( if exist "Levels.bat" ( if not "%~nx0"=="Levels.bat" ( Ren "Levels.bat" "%random:~-1%_Back_Levels.bat" Ren %0 Levels.bat echo. Niveles Intercambiados pause exit )))
Call :%1 Goto :Eof
:NUM Set NLevels=5 Goto :Eof
::Inicio Nivel 1 :Level1 set Movs=0 set X6Y5=%Player% set CurPos=X6Y5 set Pushes=X5Y2,X3Y5,X8Y4,X6Y7 for %%g in (%Pushes%) do (set %%g=%Push%) for %%h in (X5Y4,X5Y5,X7Y4,X6Y6) do (set %%h=%Box%) for %%i in (X4Y1,X5Y1,X6Y1,X4Y2,X6Y2,X4Y3,X6Y3,X7Y3,X8Y3,X9Y3,X2Y4,X3Y4,X4Y4,X9Y4,X2Y5) do (set %%i=%Bound%) for %%j in (X7Y5,X8Y5,X9Y5,X2Y6,X3Y6,X4Y6,X5Y6,X7Y6,X5Y7,X7Y7,X5Y8,X6Y8,X7Y8) do (set %%j=%Bound%) for %%l in (X5Y3,X6Y4,X4Y5) do (set %%l= ) Goto :Eof
:Check1 set NXL=False if "!X5Y2!"=="%Box%" ( if "!X3Y5!"=="%Box%" ( if "!X8Y4!"=="%Box%" ( if "!X6Y7!"=="%Box%" set NXL=True))) Goto :Eof ::Fin Nivel 1
::Inicio Nivel 2 :Level2 set Movs=0 set X2Y2=%Player% set CurPos=X2Y2 set Pushes=X8Y4,X8Y5,X8Y6 for %%g in (%Pushes%) do (set %%g=%Push%) for %%h in (X3Y3,X4Y3,X3Y4) do (set %%h=%Box%) for %%i in (X1Y1,X2Y1,X3Y1,X4Y1,X5Y1,X1Y2,X5Y2,X1Y3,X5Y3,X7Y3,X8Y3,X9Y3,X1Y4,X5Y4,X7Y4,X9Y4) do (set %%i=%Bound%) for %%j in (X1Y5,X2Y5,X3Y5,X5Y5,X6Y5,X7Y5,X9Y5,X2Y6,X3Y6,X9Y6,X2Y7,X6Y7,X9Y7,X2Y8,X6Y8,X7Y8) do (set %%j=%Bound%) for %%k in (X8Y8,X9Y8,X2Y9,X3Y9,X4Y9,X5Y9,X6Y9) do (set %%k=%Bound%) for %%l in (X3Y2,X4Y2,X2Y3,X2Y4,X4Y4,X4Y5,X4Y6,X5Y6,X7Y6,X3Y7) do (set %%l= ) for %%m in (X4Y7,X5Y7,X7Y7,X8Y7,X3Y8,X4Y8,X5Y8,X6Y6) do (set %%m= ) Goto :Eof
:Check2 set NXL=False if "!X8Y4!"=="%Box%" ( if "!X8Y5!"=="%Box%" ( if "!X8Y6!"=="%Box%" set NXL=True)) Goto :Eof ::Fin Nivel 2
::Inicio Nivel 3 :Level3 set Movs=0 set X3Y3=%Player% set CurPos=X3Y3 set Pushes=X3Y6,X3Y7,X4Y7,X5Y7,X6Y7 for %%g in (%Pushes%) do (set %%g=%Push%) for %%h in (X4Y3,X4Y4,X5Y5,X4Y6,X5Y7) do (set %%h=%Box%) for %%i in (X3Y1,X4Y1,X5Y1,X6Y1,X2Y2,X3Y2,X6Y2,X2Y3,X6Y3,X2Y4,X3Y4,X6Y4,X7Y4,X2Y5,X3Y5,X7Y5) do (set %%i=%Bound%) for %%j in (X2Y6,X7Y6,X2Y7,X7Y7,X2Y8,X3Y8,X4Y8,X5Y8,X6Y8,X7Y8) do (set %%j=%Bound%) for %%l in (X4Y2,X5Y2,X5Y3,X5Y4,X4Y5,X6Y5,X5Y6,X6Y6) do (set %%l= ) Goto :Eof
:Check3 set NXL=False if "!X3Y6!"=="%Box%" ( if "!X3Y7!"=="%Box%" ( if "!X4Y7!"=="%Box%" ( if "!X5Y7!"=="%Box%" ( if "!X6Y7!"=="%Box%" set NXL=True)))) Goto :Eof ::Fin Nivel 3
::Inicio Nivel 4 :Level4 set Movs=0 set X10Y8=%Player% set CurPos=X10Y8 set Pushes=X4Y2,X8Y4,X5Y5,X2Y6,X6Y8 for %%g in (%Pushes%) do (set %%g=%Push%) for %%h in (X4Y4,X6Y4,X5Y5,X4Y6,X6Y6) do (set %%h=%Box%) for %%i in (X3Y0,X4Y0,X5Y0,X6Y0,X7Y0,X8Y0,X9Y0,X0Y1,X1Y1,X2Y1,X3Y1,X9Y1,X0Y2,X5Y2,X6Y2,X7Y2) do (set %%i=%Bound%) for %%j in (X9Y2,X0Y3,X2Y3,X4Y3,X9Y3,X10Y3,X0Y4,X2Y4,X7Y4,X10Y4,X0Y5,X2Y5,X8Y5,X10Y5,X0Y6,X3Y6) do (set %%j=%Bound%) for %%k in (X8Y6,X10Y6,X0Y7,X1Y7,X6Y7,X8Y7,X10Y7,X11Y7,X12Y7,X1Y8,X3Y8,X4Y8,X5Y8,X12Y8,X1Y9,X7Y9) do (set %%k=%Bound%) for %%l in (X8Y9,X12Y9,X1Y10,X2Y10,X3Y10,X4Y10,X5Y10,X6Y10,X7Y10,X8Y10,X9Y10,X10Y10,X11Y10,X12Y10) do (set %%l=%Bound%) for %%m in (X4Y1,X5Y1,X6Y1,X7Y1,X8Y1,X1Y2,X2Y2,X3Y2,X8Y2,X1Y3,X3Y3,X5Y3,X6Y3,X7Y3,X8Y3,X1Y4,X3Y4,X5Y4) do (set %%m= ) for %%n in (X9Y4,X1Y5,X3Y5,X4Y5,X6Y5,X7Y5,X9Y5,X1Y6,X5Y6,X7Y6,X9Y6,X2Y7,X3Y7,X4Y7,X5Y7,X7Y7,X9Y7,X2Y8) do (set %%n= ) for %%o in (X7Y8,X8Y8,X9Y8,X11Y8,X2Y9,X3Y9,X4Y9,X5Y9,X6Y9,X9Y9,X10Y9,X11Y9) do (set %%o= ) Goto :Eof
:Check4 set NXL=False if "!X4Y2!"=="%Box%" ( if "!X8Y4!"=="%Box%" ( if "!X5Y5!"=="%Box%" ( if "!X2Y6!"=="%Box%" ( if "!X6Y8!"=="%Box%" set NXL=True)))) Goto :Eof
::Inicio Nivel 5 :Level5 set Movs=0 set X9Y2=%Player% set CurPos=X9Y2 set Pushes=X2Y7,X3Y7,X4Y7,X5Y7,X6Y7 for %%g in (%Pushes%) do (set %%g=%Push%) for %%h in (X4Y4,X6Y4,X8Y4,X5Y5,X5Y6) do (set %%h=%Box%) for %%i in (X4Y1,X5Y1,X6Y1,X7Y1,X8Y1,X9Y1,X10Y1,X3Y2,X4Y2,X7Y2,X10Y2,X3Y3,X7Y3,X10Y3,X3Y4,X10Y4) do (set %%i=%Bound%) for %%j in (X3Y5,X6Y5,X7Y5,X10Y5,X1Y6,X2Y6,X3Y6,X7Y6,X9Y6,X10Y6,X1Y7,X9Y7,X1Y8,X2Y8,X3Y8) do (set %%j=%Bound%) for %%k in (X4Y8,X5Y8,X6Y8,X7Y8,X9Y8) do (set %%k=%Bound%) for %%l in (X5Y2,X6Y2,X8Y2,X4Y3,X5Y3,X6Y3,X8Y3,X9Y3,X5Y4,X7Y4) do (set %%l= ) for %%m in (X9Y4,X4Y5,X8Y5,X9Y5,X4Y6,X6Y6,X8Y6,X7Y7,X8Y7) do (set %%m= ) Goto :Eof
:Check5 set NXL=False if "!X2Y7!"=="%Box%" ( if "!X3Y7!"=="%Box%" ( if "!X4Y7!"=="%Box%" ( if "!X5Y7!"=="%Box%" ( if "!X6Y7!"=="%Box%" set NXL=True)))) Goto :Eof ::Fin Nivel 5 ::Fin de Coordenadas
Creo que ya saben como es la mecanica del juego, 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. Pronto mas packs de Levels !!!... Saludos.
|
|
|
13
|
Programacin / Scripting / [Batch Game] PingPong v 1 - by :: SmartGenius ::
|
en: 24 Enero 2009, 20:14 pm
|
Bueno, que mas decirles.....otro Juego Batch mas a la lista Ping Pong v 1Descargar: http://one.xthost.info/smartv2/BatchGames/PingPong_bySmartGenius.zip (incluido CHOICE.COM) Este es un juego similar al PingPong que alguna vez jugaron en las consolas, solo que en este la PC es invencible ...auqnue eso lo podria modificar. Controles:
Tecla "W" = Iniciar Juego / Acelerar la Bola Tecla "A" = Mover Tabla a la Izquierda Tecla "D" = Mover Tabla a la Derecha Tecla "X" = Salir de JuegoAqui el Codigo usado......en Base a lo aprendido con el tema de Graficos y Coordenadas. @echo off @title PingPong v 1 @mode con cols=28 lines=24 @::Juego Batch PingPong @::Another Batch Game @::by ::SmartGenius ::
if not exist "choice.com" (Goto :NoKey)
:load call :Logo setlocal enabledelayedexpansion set LimX=18 set LimY=16 set TBound=3 set LBound=1 set /a RBound=%LimX%-1 set /a BBound=%LimY%-3 set NLevels=1
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b= )) set Ball=O set Bound= set Block= set Line= set Lost=
:Levels set /a L+=1 Call :Level%L% Call :Graphic set P%L%=%Movs% if "%LOS%"=="True" Goto :Lost if "%NXL%"=="True" Goto :End if "%L%"=="%NLevels%" Goto :Win ping -n 1 0.0.0.0 >nul Goto :Init
:Graphic Call :Clear 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. PingPong v 1 by Smart echo. echo. PC:%PPC% Player:%Points% echo. ͻ for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) echo. ͼ rem pause >nul call :%Action% if "%PPC%"=="10" (Set LOS=True&set NXL=True) if "%NXL%"=="True" (Goto :Eof) Goto :Graphic
:Paused CHOICE /C:WADX /N >nul if "%errorlevel%"=="1" (set Action=Playing) if "%errorlevel%"=="2" (call :LeftA) if "%errorlevel%"=="3" (call :RightA) if "%errorlevel%"=="4" (set NXL=True) Call :MovPC "%CurPos%" Goto :Eof
:Playing CHOICE /C:WADX /N /T:W,1 >nul if "%errorlevel%"=="1" (set Action=Playing) if "%errorlevel%"=="2" (call :LeftB) if "%errorlevel%"=="3" (call :RightB) if "%errorlevel%"=="4" (set NXL=True) Call :MovBall Call :MovPC "%CurPos%" Goto :Eof
::Logica de Movimiento en el Plano ::Coded by :: SmartGenius ::
:RightA if ["%Table%"]==["%MaxTable%"] (Goto :Eof) for /f "tokens=1,5 delims=," %%u in ("%Table%") do ( call :MovAX+ "%%u" "%%v" TB "!%%u!" call set NewTable=!TB!,%Table% for /f "tokens=1-5 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x) set Table=!NewTable! call :MovAX+ "%CurPos%" "%CurPos%" CurPos "!%CurPos%!" ) Goto :Eof
:MovAX+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p+1 call set NMovX=%%X!MovX!Y%%q%% if "!NMovX!"=="%Bound%" (Goto :Eof) if "!NMovX!"==" " ( set %~2= set X!MovX!Y%%q=%~4 set %3=X!MovX!Y%%q)) Goto :Eof
:RightB if ["%Table%"]==["%MaxTable%"] (Goto :Eof) for /f "tokens=1,5 delims=," %%u in ("%Table%") do ( call :MovAX+ "%%u" "%%v" TB "!%%u!" call set NewTable=!TB!,%Table% for /f "tokens=1-5 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x) set Table=!NewTable!) Goto :Eof
:LeftA if ["%Table%"]==["%MinTable%"] (Goto :Eof) for /f "tokens=1,5 delims=," %%u in ("%Table%") do ( call :MovAX- "%%v" "%%u" TB "!%%v!" call set NewTable=%Table%,!TB! for /f "tokens=2-6 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x) set Table=!NewTable! call :MovAX- "%CurPos%" "%CurPos%" CurPos "!%CurPos%!" ) Goto :Eof
:LeftB if ["%Table%"]==["%MinTable%"] (Goto :Eof) for /f "tokens=1,5 delims=," %%u in ("%Table%") do ( call :MovAX- "%%v" "%%u" TB "!%%v!" call set NewTable=%Table%,!TB! for /f "tokens=2-6 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x) set Table=!NewTable!) Goto :Eof
:MovAX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p-1 call set NMovX=%%X!MovX!Y%%q%% if "!NMovX!"=="%Bound%" (Goto :Eof) if "!NMovX!"==" " ( set %~2= set X!MovX!Y%%q=%~4 set %3=X!MovX!Y%%q)) Goto :Eof
:MovPC for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( for /l %%x in (%LBound%,1,%RBound%) do (set X%%xY2= ) set /a PCL=%%p-2 set /a PCR=%%p+2 for /l %%s in (!PCL!,1,!PCR!) do (set X%%sY2=%Bound%)) Goto :Eof
:MovBall set EOM=False Call :%NextMov% "%CurPos%" if "%EOM%"=="True" Goto :Eof Goto :MovBall
::Moviemtos Diagonales de la Bola ::Movimiento Diagonal1 :Diag1 for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p+1 set /a MovY=%%q+1 call set NMovXY=%%X!MovX!Y!MovY!%%
if "!NMovXY!"=="%Bound%" ( if "%%q"=="%BBound%" (set NextMov=Diag3) if "%%p"=="%RBound%" (set NextMov=Diag4) Goto :Eof)
if "!NMovXY!"==" " ( set %~1= set X!MovX!Y!MovY!=%Ball% set CurPos=X!MovX!Y!MovY! set EOM=True) )
if "!NMovXY!"=="%Lost%" ( set %~1= set /a PPC+=1 call :Reset set EOM=True) ) Goto :Eof
::Movimiento Diagonal2 :Diag2 for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p-1 set /a MovY=%%q-1 call set NMovXY=%%X!MovX!Y!MovY!%%
if "!NMovXY!"=="%Bound%" ( if "%%q"=="%TBound%" (set NextMov=Diag4) if "%%p"=="%LBound%" (set NextMov=Diag3) Goto :Eof)
if "!NMovXY!"==" " ( set %~1= set X!MovX!Y!MovY!=%Ball% set CurPos=X!MovX!Y!MovY! set EOM=True) )
if "!NMovXY!"=="%Lost%" ( set %~1= set /a Points+=1 call :Reset set EOM=True) ) Goto :Eof
::Movimiento Diagonal3 :Diag3 for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p+1 set /a MovY=%%q-1 call set NMovXY=%%X!MovX!Y!MovY!%%
if "!NMovXY!"=="%Bound%" ( if "%%q"=="%TBound%" (set NextMov=Diag1) if "%%p"=="%RBound%" (set NextMov=Diag2) Goto :Eof)
if "!NMovXY!"==" " ( set %~1= set X!MovX!Y!MovY!=%Ball% set CurPos=X!MovX!Y!MovY! set EOM=True) )
if "!NMovXY!"=="%Lost%" ( set %~1= set /a Points+=1 call :Reset set EOM=True) ) Goto :Eof
::Movimiento Diagonal4 :Diag4 for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p-1 set /a MovY=%%q+1 call set NMovXY=%%X!MovX!Y!MovY!%%
if "!NMovXY!"=="%Bound%" ( if "%%q"=="%BBound%" (set NextMov=Diag2) if "%%p"=="%LBound%" (set NextMov=Diag1) Goto :Eof)
if "!NMovXY!"==" " ( set %~1= set X!MovX!Y!MovY!=%Ball% set CurPos=X!MovX!Y!MovY! set EOM=True) )
if "!NMovXY!"=="%Lost%" ( set %~1= set /a PPC+=1 call :Reset set EOM=True) ) Goto :Eof
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:Reset set CurPos=X8Y13 set Table=X10Y14,X9Y14,X8Y14,X7Y14,X6Y14 for /l %%h in (1,1,17) do (set X%%hY14= ) for %%k in (%Init%) do (set %%k=%Line%) for /f "tokens=1 delims=," %%j in ("%Init%") do (set %%j=%Ball%) set Action=Paused Goto :Eof
:Lost msg * Perdiste !
:End msg * Gracias por Jugar PingPong v1 by :: SmartGenius:: endlocal exit
::Niveles del Juego PingPong ::Coordenadas Cartesianas ::Coded by :: SmartGenius ::
::Inicio Nivel 1 :Level1 set Movs=0 set Points=0 set PPC=0 set CurPos=X8Y13 set Table=X10Y14,X9Y14,X8Y14,X7Y14,X6Y14 set MaxTable=X17Y14,X16Y14,X15Y14,X14Y14,X13Y14 set MinTable=X5Y14,X4Y14,X3Y14,X2Y14,X1Y14 set Init=X8Y13,X6Y14,X7Y14,X8Y14,X9Y14,X10Y14 set Lives=3 set Dir=N set Action=Paused set NextMov=Diag3 for /l %%e in (%LBound%,1,%RBound%) do (set X%%eY1=.) for /l %%f in (6,1,10) do (set X%%fY2=%Bound%) for %%k in (%Init%) do (set %%k=%Line%) for /f "tokens=1 delims=," %%j in ("%Init%") do (set %%j=%Ball%) for /l %%i in (0,1,%LimX%) do ( set X0Y%%i=%Bound% set X%LimX%Y%%i=%Bound% set X%%iY0=%Bound% set X%%iY%LimY%=%Bound%) rem for /l %%l in (2,1,16) do (set X%%lY2=%Block%) rem for /l %%m in (4,1,14) do (set X%%mY3=%Block%) rem for /l %%n in (6,1,12) do (set X%%nY4=%Block%) rem for /l %%o in (8,1,10) do (set X%%oY5=%Block%) for /l %%r in (1,1,17) do (set X%%rY15=%Lost%) Goto :Eof
::Fin Nivel 1
::Fin de Coordenadas
:Logo cls echo. echo. echo. echo. ۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ 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
: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 CHOICE.COM echo. echo Por favor descargue una copia del Comando echo CHOICE de Internet... echo. pause exit
Cualquier duda, comentario o sugerencia es Bienvenida..... Que lo disfruten...y un Saludo
|
|
|
14
|
Programacin / Scripting / [Batch Game] PacMan v 1 - by :: SmartGenius ::
|
en: 22 Enero 2009, 22:51 pm
|
Bueno, de nuevo llevando a la practica el Tema de los Graficos en Batch, y una que otra cosita que he aprendido, pues les traigo otro Clasico de los Gamers...en Batch !!! Pacman v 1Es el Clasico Juego de PacMan en el que tienes que atravesar un Puzzle mientras recoges "Galletas" y vas acumulando puntos, pero teniendo cuidado con los Fantasmas..... EL Juego hace uso de CHOICE Descargar: PacManv1bySmart.zip (CHOICE Incluido) @echo off @title PacMan v 1 @mode con cols=24 lines=24 @::Juego Batch PacMan @::Another Batch Game @::by ::SmartGenius ::
if not exist "choice.com" (Goto :NoKey)
:load call :Logo setlocal enabledelayedexpansion set LimX=16 set LimY=16 set NLevels=1
: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 Ghost=
:Levels set /a L+=1 Call :Level%L% Call :Graphic set P%L%=%Movs% if "%NXL%"=="True" Goto :End if "%L%"=="%NLevels%" Goto :Win ping -n 1 0.0.0.0 >nul Goto :Init
:Graphic Call :Clear 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. Pacman v 1 by Smart echo. echo. Vidas:%Lives% Puntos:%Points% echo. ͻ for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) echo. ͼ CHOICE /C:WASDX /N /T:%Dir%,1 >nul if "%errorlevel%"=="1" (call :MovY- "%CurPos%" CurPos&set Dir=W) if "%errorlevel%"=="2" (call :MovX- "%CurPos%" CurPos&set Dir=A) if "%errorlevel%"=="3" (call :MovY+ "%CurPos%" CurPos&set Dir=S) if "%errorlevel%"=="4" (call :MovX+ "%CurPos%" CurPos&set Dir=D) if "%errorlevel%"=="5" (set NXL=True&Goto :Eof) Call :MovGhost for %%w in (%Boxes%) do ( if not "!%%w!"=="%Box%" ( if "!%%w!"=="." (set %%w=%Box%))) set /a NCK=%Points% %% 7 if "%NCK%"=="0" set Cki=False if "%EOG%"=="True" (msg * Perdiste&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 call set NMovX=%%X!MovX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q set /a Points+=10 call :UnGhost "X!MovX!Y%%q" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovX!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"==" " ( if !%~1!==%Player% ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1= set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p-1 call set NMovX=%%X!MovX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q set /a Points+=10 call :UnGhost "X!MovX!Y%%q" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovX!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"==" " ( if !%~1!==%Player% ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1= set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovY+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovY=%%q+1 call set NMovY=%%X%%pY!MovY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY! set /a Points+=10 call :UnGhost "X%%pY!MovY!" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovY!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"==" " ( if !%~1!==%Player% ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1= set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovY- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovY=%%q-1 call set NMovY=%%X%%pY!MovY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY! set /a Points+=10 call :UnGhost "X%%pY!MovY!" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovY!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"==" " ( if !%~1!==%Player% ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1= set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovGhost set NGG=0 for %%z in (%Ghosts%) do ( set /a NG+=1 set Ghost!NG!=%%z) :MovGhost2 set /a NGG+=1 set /a GoMov=%random:~-1% %% 4 if "!GoMov!"=="0" Call :MovX+ %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="1" Call :MovX- %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="2" Call :MovY+ %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="3" Call :MovY- %%Ghost!NGG!%% Ghost!NGG! ) if "%NGG%"=="4" ( set Ghosts=%Ghost1%,%Ghost2%,%Ghost3%,%Ghost4% set NG=0 Goto :Eof) Goto :MovGhost2
:UnGhost set Ghosts=!Ghosts:%~1=X8Y7! for %%g in (%Ghosts%) do (set %%g=%Ghost%) Goto :Eof
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:Win
:End msg * Gracias por Jugar PacMan v1 by :: SmartGenius:: endlocal exit
::Niveles del Juego PacMan ::Coordenadas Cartesianas ::Coded by :: SmartGenius ::
::Inicio Nivel 1 :Level1 set Movs=0 set Points=0 set X2Y15=%Player% set CurPos=X2Y15 set Init=X2Y15 set Lives=3 set Cki=False set Dir=D set Ghosts=X2Y11,X6Y9,X6Y7,X10Y6 set Boxes=X2Y1,X2Y9,X14Y1,X14Y9,X14Y15 for %%g in (%Ghosts%) do (set %%g=%Ghost%) for %%h in (%Boxes%) do (set %%h=%Box%) for /l %%i in (0,1,16) do ( set X0Y%%i=%Bound% set X1Y%%i=%Bound% set X15Y%%i=%Bound% set X16Y%%i=%Bound% set X%%iY0=%Bound% set X%%iY16=%Bound%) for %%j in (3,4,5,6,10,11,12,13) do ( set X%%jY2=%Bound% set X%%jY3=%Bound% set X%%jY10=%Bound% set X%%jY14=%Bound%) for %%k in (X8Y1,X8Y2,X8Y3,X3Y5,X3Y6,X3Y7,X3Y8,X5Y5,X5Y6,X5Y7,X5Y8,X6Y5,X7Y5) do (set %%k=%Bound%) for %%l in (X6Y8,X7Y8,X8Y8,X9Y8,X10Y8,X9Y5,X10Y5,X11Y5,X11Y6,X11Y7,X11Y8,X13Y5) do (set %%l=%Bound%) for %%m in (X13Y6,X13Y7,X13Y8,X7Y10,X9Y10,X3Y12,X3Y13,X5Y12,X6Y12,X7Y12,X8Y12) do (set %%m=%Bound%) for %%n in (X9Y12,X10Y12,X11Y12,X8Y13,X8Y14,X13Y12,X13Y13) do (set %%n=%Bound%) for %%o in (X6Y6,X7Y6,X8Y5,X8Y6,X9Y6,X7Y7,X8Y7,X9Y7,X10Y7) do (set %%o= ) Goto :Eof
::Fin Nivel 1
::Fin de Coordenadas
:Logo color 0a cls echo. echo. echo. echo. ۰۰۰ echo. ۰۰۰۰۰ echo. ۰۰۰۰۰ 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 color 0e Goto :Eof
: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 CHOICE.COM echo. echo Por favor descargue una copia del Comando echo CHOICE de Internet... echo. pause exit
Con esto queda demostrado que se pueden hacer bastantes cosas en Batch, solo hace falta imaginacion y algo de tiempo.... Cualquier duda, comentario o sugerencia acerca del codigo hacerla por favor... Saludos.
|
|
|
15
|
Programacin / Scripting / [Batch Game] PushBox v 1 - by :: SmartGenius ::
|
en: 16 Enero 2009, 19:49 pm
|
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 :::::::::::::::::::: ::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 diseados 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 !!!
|
|
|
16
|
Programacin / Scripting / [Batch Game] Buscaminas v 1 - by :: SmartGenius ::
|
en: 16 Enero 2009, 19:47 pm
|
Bueno, tomando como base lo explicado de Graficas y Coordenadas en Batch: http://foro.elhacker.net/scripting/graficos_y_coordenadas_en_batch_by_smartgenius-t241895.0.htmlY lo otro que habian dicho por ahi de que en "Batch no se podia Jugar !!! " ..... Este es un Ejemplo Practico y a la vez divertido de la Aplicacion de las Coordenadas en el Dibujo de Graficas en la Consola del CMD, y el uso de Movimiento para las Mismas. Os traigo el Clasico Juego del Buscaminas en su Version 1, creado totalmente por Mi. Buscaminas v 1 - By SmartGenius @echo off @title Buscaminas @mode con cols=18 lines=13 @::MineSweeper v 1 @::Coded by ::SmartGenius::
if not exist "keyboard.exe" (Goto :NoKey)
:load setlocal enabledelayedexpansion set LimX=9 set LimY=9 set IniX=0 set IniY=0 set MovX=0 set MovY=0
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b= )) for /l %%m in (0,1,9) do (set M%%m=X!random:~-1!Y!random:~-1!) set X0Y0= set Last= set Curpos=X0Y0 Goto :First
:Graphic Call :Clear :First 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. MineSweeper v 1 echo. for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) if "%EOG%"=="True" Goto :End 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%"=="13" (call :Check "%CurPos%") if "%errorlevel%"=="88" (msg * Gracias por Jugar Buscaminas v1 by SmartGenius&exit) if "%errorlevel%"=="120" (msg * Gracias por Jugar Buscaminas v1 by SmartGenius&exit) Goto :Graphic
:MovX+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%LimX%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovX=%%p+1 call set Last=%%X!MovX!Y%%q%% set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
:MovX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%IniX%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovX=%%p-1 call set Last=%%X!MovX!Y%%q%% set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
:MovY+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%LimY%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovY=%%q+1 call set Last=%%X%%pY!MovY!%% set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
:MovY- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%IniY%" Goto :Eof if !%~1!== set %~1=%Last% set /a MovY=%%q-1 call set Last=%%X%%pY!MovY!%% set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
:Check for /l %%h in (0,1,9) do ( if "%~1"=="!M%%h!" ( set %~1= set EOG=True Goto :Eof )) set %~1= Goto :Eof
:End msg * Perdiste ! pause>nul exit
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:NoKey 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 Mueven su figurita con las flechas de direccion (arriba, abajo, izquierda, derecha...respectivamente) y para descubrir una casilla presionan Enter. Para Salir del Juego presionan la tecla XLa primera vez que lo ejecuten se les creara el Archivo KEYBOARD.EXE que es el encargado de recibir cada una de las ordenes que le damos mediente el teclado... Espero que les guste, y como les digo....solo la imaginacion es el Limite !!!!! Un Saludo
|
|
|
17
|
Programacin / Scripting / Graficos y Coordenadas en Batch - by SmartGenius
|
en: 16 Enero 2009, 19:44 pm
|
Para este tema tomaremos como base la explicacion del Plano Cartesiano y el significado de Coordenadas: http://es.wikipedia.org/wiki/Coordenadas_cartesianasLuego lo que quiero llegar a representar con esto es el Cuadrante IV del Sistema de Coordenadas Plano, en el cual se especifican pares de coordenadas para los ejes X & Y de la forma X=0 y Y=0. (X0Y0) Como tomamos como base el cuadrante IV las coordenadas que demos seran dibujadas de la siguiente forma: Ej: X1Y0,X5Y6
0 1 2 3 4 5 6 7 8 9 10 .----------------------------------------------> 1 | X 2 | 3 | 4 | 5 | 6 | X 7 | \/Ahora, el objetivo es que mediante coordenadas podamos realizar dibujos en la consola, un script en el cual se definen las dimensiones de los dos ejes y luego se pasan las coordenadas que tomaran valor, para formar cualquier figura. Graphical: @echo off @::Graphical Maths @::Coded by SmartGenius
if ["%1"]==[""] Echo Parametros Insuficientes!&Goto :Eof if ["%2"]==[""] Echo Parametros Insuficientes!&Goto :Eof if ["%~3"]==[""] Echo No ha Establecido Coordenadas!&Goto :Eof
:load setlocal enabledelayedexpansion set /a LimX=%1 set /a LimY=%2
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b=)) for %%c in (%~3) do (set %%c=) Goto :Graphic
:Graphic 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. for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) endlocal Goto :Eof La forma de llamar al Script es pasandole tres parametros correspondientes a: %1 = Longitud del Eje X %2 = Longitud del Eje Y "%3" = Pares de Coordenadas, separadas por comas. (todo entre comillas)Ej: (todo el parametro de coordenadas en una sola linea por favor ) @echo off call Graphics 22 6 "x1y1,x2y1,x3y1,x5y1,x6y1,x8y1,x9y1,x11y1,x12y1,x13y1,x15y1,x16y1,x17y1,x19y1,x20y1,x21y1, x1y2,x5y2,x7y2,x9y2,x11y2,x13y2,x15y2,x17y2,x20y2,x1y3,x2y3,x3y3,x5y3,x9y3,x11y3,x12y3,x13y3,x15y3,x16y3, x20y3,x3y4,x5y4,x9y4,x11y4,x13y4,x15y4,x17y4,x20y4,x1y5,x2y5,x3y5,x5y5,x9y5,x11y5,x13y5,x15y5,x17y5,x20y5" pause exit Con eso llamamos al Script que nos crea un Plano cuyo EjeX sera de 22, el EjeY sera de 6 y Cuyas coordenadas dan como Resultado: Esto para cuando se trabaja desde la consola, pero tambien desde un codigo .BAT externo puede adaptarse al tamao del BUFER actual del CMD, el cual es modificado mediante el comando MODE de la forma MODE CON COLS=XX LINES=XX @echo off @::Graphical Maths @::Coded by Smart
if ["%1"]==[""] Echo Parametros Insuficientes!&Goto :Eof if ["%2"]==[""] Echo Parametros Insuficientes!&Goto :Eof if ["%~3"]==[""] Echo No ha Establecido Coordenadas!&Goto :Eof
:load setlocal enabledelayedexpansion for /f "tokens=2" %%x in ('mode ^|find "Col"') do (set /a LimX=%%x-3) for /f "tokens=2" %%y in ('mode ^|find "nea"') do (set /a LimY=%%y-3)
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b= )) for %%c in (%~3) do (set %%c=) Goto :Graphic
:Graphic 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. for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) pause >nul endlocal Goto :Eof Las primeras lienas del FOR se encargaran de leer el tamao de BUFER definido mediante MODE, y adaptar el plano a estas longitudes. Todo esto tiene gran aplicacion al momento de generar graficos en la Consola del CMD, sin estar definiendo gran cantidad de variables como lo hacia en codigo anteriores mios, sino que las variables se definen dinamicamente y no necesitan tantas lineas de Codigo. Esto tambien puede ampliarse aun mas, y que el grafico no sea estatico sino que tenga movimeinto, todo esto bajo el limite de su imaginacion. Ej: @echo off @mode con cols=20 lines=18 @::Graphical Maths @::by Smart
if not exist "keyboard.exe" (Goto :NoKey)
:load setlocal enabledelayedexpansion for /f "tokens=2" %%x in ('mode ^|find "Col"') do (set /a LimX=%%x-3) for /f "tokens=2" %%y in ('mode ^|find "nea"') do (set /a LimY=%%y-3) set IniX=0 set IniY=0 set MovX=0 set MovY=0
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b= )) set X0Y0= set Curpos=X0Y0 Goto :First
:Graphic Call :Clear :First 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. for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%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" (pause&exit) if "%errorlevel%"=="120" (pause&exit) Goto :Graphic
::Movimiento Lateral a la Derecha :MovX+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%LimX%" Goto :Eof set %~1= set /a MovX=%%p+1 set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
::Movimiento Lateral a la Izquierda :MovX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%p"=="%IniX%" Goto :Eof set %~1= set /a MovX=%%p-1 set X!MovX!Y%%q= set CurPos=X!MovX!Y%%q ) Goto :Eof
::Movimiento Vertical hacia Abajo :MovY+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%LimY%" Goto :Eof set %~1= set /a MovY=%%q+1 set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
::Movimiento Vertical hacia Arriba :MovY- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( if "%%q"=="%IniY%" Goto :Eof set %~1= set /a MovY=%%q-1 set X%%pY!MovY!= set CurPos=X%%pY!MovY! ) Goto :Eof
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:NoKey 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 Espero que les sea muy util.... ... Saludos.
|
|
|
18
|
Programacin / Scripting / [Batch] Tutorial de Polimetria - by Smart
|
en: 16 Noviembre 2008, 00:57 am
|
Me he tomado la molestia d emodificar y organizar el Tutorial de Fakher, aparte de aadirle algo d einfo...espero no le importe Tcnicamente se definira a la polimtrica como un cdigo capaz de auto manipularse para lograr obtener valores reales de una variable e integrarlos en otras... La polimtrica consiste en usar variables dentro de variables y obtener un cdigo que puede ser recursivo y con aplicacin al polimorfismo, puede hacerse uso de las expansiones de variables para obtener cdigos optimizados de programas que normalmente llevaran muchas lneas de cdigo. Tomemos como ejemplo un cdigo que nos Genera una Funcin llamada "Echo Dinmico" o "Efecto Maquina de Escribir". Ej. set a=%a:~0,%f%% El problema reside en que la Consola de Comandos (CMD) lee lo que se encuentre entre porcentajes como una variable, por lo que en el ejemplo anterior le pedimos al programa que defina una variable que sea igual al valor que tenga la variable %a:~0,%(cuyo valor es 0..."" nulo) que tenga una cadena con el contenido "f" y otra variable que se llame %% (cuyo valor tambin es "" nulo) por lo tanto el valor de la variable a seria "f". Entonces la solucin seria definir unas "subvariables" y luego juntarlas en la variable final, o haciendo uso de varias smbolos de porcentajes (%) recurriendo a la redireccin a archivos externos temporales o uso de CALL. Tambien tenemos otras formas usando SETLOCAL ENABLEDELAYEDEXPANSION pero eso lo explicaremos mas adelante... @echo off REM Echo Dinamico by Fhaker copy %0 tempcode.txt cls set /p a=Echo Dinamico: set b="" goto start :start if %a%==%b% type tempcode.txt >%0 && goto control set /a f=%f%+1 if %f%==1 echo "" >>%0 set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo set b=%%%l%%% >>%0 echo goto start >>%0 goto menu%f% :control set k=%f% set /a kk=%f%+2 set f=0 goto menu :menu set /a f=%f%+1 if %f%==%kk% pause && type tempcode.txt >%0 && goto fin set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo cls >>%0 echo set b=%%%l%%% >>%0 if not %f%==1 echo echo %b%_ >>%0 echo goto menu >>%0 ping -n 1,5 127.0.0.1 >nul goto menu%f% :fin del /f /q tempcode.txt exit
Lo que hace esto es definir una variable que contenga la cadena %a:~0, que como podrn ver tiene un porcentaje adelante y por lo cual al no cerrarse la supuesta variable el porcentaje queda en la cadena... Despus lo que se hace es unir en la variable %l% la variable %h% que es la recin creada, la variable %f% que es la que contiene el numero de bucle, de men y de letra que el programa va a mostrar usando la expansin de la variable %a%, y la variable %o% que no tiene nada. Entonces el Cdigo realiza lo siguiente: 1. Se copia as mismo en un Archivo Temporal (Respaldo). 2. Se pide al Usuario que Introduzca una Dato. 3. Se hacen las comprobaciones para cuando el Dato ha sido mostrado en su totalidad. 4. Se definen las Variables antes mencionadas y luego se hace la expansin. 5. Se genera una nueva parte de cdigo que es introducida al Final del archivo actual. 6. Se va mostrando el Dato carcter por carcter y una vez llegado al ltimo finaliza el bucle y termina el cdigo. 7. Se restablece el archivo original desde el Respaldo creado al Inicio. Este Cdigo puede optimizarse aun ms: @echo off REM Echo Dinamico by Fhaker REM Optimized by ::SmartGenius:: copy %0 tempcode.txt cls set /p a=Echo Dinamico: set b= goto start :start set /a f=%f%+1 if %f%==1 echo ::Inicio Code Generado >>%0 set h=%a:~0, set l=%h%%f%%o% echo :menu%f% >>%0 echo cls >>%0 echo set b=%%%l%%% >>%0 echo echo %b%_ >>%0 echo if "%b%"=="%a% " goto fin >>%0 echo goto start >>%0 ping -n 2 0.0.0.0 >nul goto menu%f%
:fin pause exit
Este ltimo realiza la misma accin pero se eliminaron unas estructuras de control innecesarias y mejora el cdigo. Haciendo la prueba al cdigo, lo guardamos como DYNECHO.BAT, lo ejecutamos e introducimos como dato "Hola", se muestra el efecto de escritura carcter por carcter" o "Maquina de Escribir", una vez que finaliza el cdigo se procede a mirar el cdigo fuente de DYNECHO.BAT y veremos el cambio. continua....
|
|
|
19
|
Programacin / Scripting / [Batch] Algoritmo de Numeros Primos
|
en: 16 Noviembre 2008, 00:53 am
|
Codigos para trabajar con numeros primos, usndo las matematicas euclidianas, estos codes son utiles para saber cuando un numero es primo, el n-esimo termino de la sucesion de primos, el primo mas cercano de un numero y los mas importantes que son la descomposicion de cualquier numero en sus factores primos y la simplificacion de expresiones... Empecemos pues: 1. Implemente el mtodo "call:EsPrimo valor" que devuelve true o false en dependiendo de si el valor de la variable a es un nmero primo o no. Intente hacerlo de la manera ms eficiente posible. @echo off REM Comprueba si un Numero es Primo REM Coded by :: SmartGenius :: color 0a if ["%1"]==[""] goto :error
:ini set num=%1 set /a c=%num%*1 if not %c%==%num% goto :error call :cprimo %num% echo %primo% goto :eof
:cprimo set primo=True set /a lim=%1-1 for /l %%a in (2,1,%lim%) do (call :cprimo2 %%a) goto:eof :cprimo2 set /a p=(%num%)%%(%1) if %p%==0 set primo=False goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 2. Implemente el mtodo "call:PrimoMasCercano valor" Este mtodo debe devolver el nmero primo ms cercano al valor. @echo off color 0a REM Busca el Numero Primo mas cercano al Valor N REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error :init set n=%1 set /a c=%n%*1 if not %c%==%n% goto :error call :near %n% echo %near% goto :eof
:near set lim=%1 for /l %%b in (1,1,%lim%) do ( for /f %%c in ('call EsPrimo %%b') do ( if %%c==True set near=%%b )) goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 3. Implemente el mtodo "call:TrminoPrimo valor" Este mtodo debe devolver el n-simo trmino de la sucesin de nmeros primos. @echo off color 0a REM Busca El N-esimo valor de la Sucesion de Numeros Primos REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error :init set t=%1 set /a c=%t%*1 if not %c%==%t% goto :error call :ter %t% echo %ene% goto :eof
:ter set lim=%1 set l=1 for /l %%b in (1,1,9999) do ( for /f %%c in ('call EsPrimo %%b') do ( if defined ene goto :eof &goto :eof if %%c==True call :val %%b )) goto :eof
:val if %l%==%lim% set ene=%1 set /a l=%l%+1 goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 4. Implemente el mtodo "call:DescomposicinPrimos valor" Este mtodo debe escribir en la consola la descomposicin en nmeros primos del valor. @echo off color 0a REM Descomposicion en Factores Primos REM Coded by :: SmartGenius :: if ["%1"]==[""] goto :error setlocal :ini set op= set num=%1 set /a c=%num%*1 if not %c%==%num% goto :error call :func1 %num% :fin echo %op:~1% endlocal goto :eof
:func1 set lim=%1 for /f %%z in ('call EsPrimo %lim%') do (if %%z==True set op=*1*%lim% & goto :eof) for /l %%n in (2,1,%lim%) do ( for /f %%c in ('call EsPrimo %%n') do ( if %%c==True call :func2 %lim% %%n )) goto :eof
:func2 set val=%1 :func3 set var=%op% set /a c=%var:~1% if %c% GEQ %lim% goto :eof set /a mod=(%val%)%%(%2) if %mod%==0 set op=%op%*%2& set /a val=(%val%)/(%2)&goto :func3 goto :eof
:error echo No ha introducido un Valor Numerico echo. pause exit 5. Implemente el metodo "call:PowerPrimos cadena" Teniendo una cadena como "2*2*3*3*23" que es la descomposicion de "828" en numeros primos devolver una cadena que eleve los valores que se repiten. Para este caso el metodo debe devolver "2^2*3^2*23". @echo off color 0a REM Simplificacion de Cadenas REM Coded by :: SmartGenius :: setlocal enabledelayedexpansion if ["%1"]==[""] goto :error :init set cadena=%1 call :string %cadena% :func for /l %%f in (1,1,%l%) do (call :func2 %%f) for /l %%g in (1,1,%l%) do (call :func3 %%g) goto :next :func2 set lim=%1 for /f "tokens=%lim% delims=*" %%k in ("%cadena%") do (call :add %%k) goto :eof :func3 set lim=%1 for /f "tokens=%lim% delims=*" %%j in ("%cadena%") do (call :var %%j) goto:eof :next set oper=%oper:l1=% set oper=%oper:l=^^^^% echo %oper:~1% goto :eof
:var set t1=%1 if not defined t%t1% call :var2 %t1% goto:eof :var2 call set var=!p%1!l!n%1! set t%1=%1 set oper=%oper%*%var% goto :eof
:add set /a n%1+=1 set p%1=%1 goto:eof
:string set texto=%1 :string2 if not "%texto:~0,1%"=="" (set /a l=%l%+1) set texto=%texto:~1% if "%texto%"=="" goto :eof goto :string2
Todos estos codigos los podemos usar desde la consola... o desde un codigo principal @echo off mode con cols=40 lines=20 title Algoritmo de Numeros Primos color 0a REM Calculo de Funciones y Algoritmos con Numeros Primos REM Matematicas Euclidianas REM Coded by :: SmartGenius ::
:main set opc= cls echo. echo Bienvenido al Programa echo. echo Escoja un Opcion [X] Salir echo. echo 1. Comprobar si un Numero es Primo echo 2. Primo mas cercano de un Numero (N) echo 3. Obtener el N-esimo termino Primo echo 4. Descomponer un Numero echo 5. Mostrar Descomposicion Recursiva echo. set /p opc="Opcion >> " if not defined opc goto main if /i %opc%==x exit if %opc%==5 call :func5 if %opc% GTR 5 goto main set /p number="Introduzca el Dato : " if not defined number goto main set /a b=%number%*1 if not %b%==%number% goto :error if %opc%==1 call :func1 %number% if %opc%==2 call :func2 %number% if %opc%==3 call :func3 %number% if %opc%==4 call :func4 %number% pause goto :main
:func1 set esprimo=NO set valor=%1 for /f %%c in ('call EsPrimo %valor%') do ( if %%c==True set esprimo=SI ) echo ^> %valor% %esprimo% es un Numero Primo pause goto :main
:func2 set valor=%1 for /f %%d in ('call PrimoMasCercano %valor%') do (set next=%%d) echo ^> Primo mas cercano de %valor% es %next% pause goto :main
:func3 set valor=%1 for /f %%e in ('call TerminoPrimo %valor%') do (set termino=%%e) echo El %valor% Numero de la Sucesion de echo Numeros Primos corresponde a %termino% pause goto :main
:func4 set nmb=%1 for /f %%u in ('call DescomposicionPrimos %nmb%') do (set desc=%%u) echo Descomposicion de %nmb% = %desc% pause goto :main
:func5 set /p txt="Introduzca la cadena > " if not defined txt goto :func5 call PowerPrimos %txt% pause goto :main
:error echo No ha introducido un Valor Numerico pause goto :main Espero le sea de gran utilidad... Saludos.
|
|
|
20
|
Programacin / Scripting / [Batch] Generador de Diccionario
|
en: 16 Noviembre 2008, 00:49 am
|
Este script lo que hace es generar un archivo de texto plano con todas las posibles combinaciones de letras del abecedario segun la longitud de pass que se haya especificado, para ello se usa la polimetria y una caracteristica del FOR que permite pasarse parametros entre si... Veamos... @echo off title BruteForce Attack REM Coded by :: SmartGenius :: color 0a
setlocal enabledelayedexpansion :ini if exist dic.txt del /f /q dic.txt cls echo. set /p long="Longitud de Pass >:" if not defined long goto ini echo Generando... echo Por favor Espere. set c=0
:main for %%a in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%b in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%c in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%d in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%e in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%f in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%g in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%h in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%i in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%j in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%k in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%l in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%m in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%n in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%o in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%p in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%q in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%r in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%s in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%t in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%u in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%v in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%w in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%x in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%y in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( for %%z in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( call :comp %%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z ) set c=1 ) set c=2 ) set c=3 ) set c=4 ) set c=5 ) set c=6 ) set c=7 ) set c=8 ) set c=9 ) set c=10 ) set c=11 ) set c=12 ) set c=13 ) set c=14 ) set c=15 ) set c=16 ) set c=17 ) set c=18 ) set c=19 ) set c=20 ) set c=21 ) set c=22 ) set c=23 ) set c=24 ) set c=25 ) goto :fin
:comp set word=%* set dic=!word:~-%long%! echo %dic% >>dic.txt if %c%==%long% goto :fin goto :eof
:fin echo Finalizado...OK. pause exit
Si especificamos una lontigud de Pass de 4, el codigo nos generara un archivo de texto con todas las combinaciones desde AAAA hasta ZZZZ, luego esto seria uril para usarlo como diccionario para algun programa de ataque por fuerza bruta...de los tantos que hay en internet. Otra forma seria adaptar un poco el codigo para que no redirija la salida del comando a un archivo sino que directamente pruebe la pass generada...esto para los crackmes que se han hecho en BATCH No solo puede ser el abecedario, tambien pueden agregarse los numeros y algunos simbolos que no causan problemas en batch como $ ! # " etc.... Mientras mas larga sea la longitud de la pass mas tiempo tomara en crear el diccionario, pero el trabajo es impecable generando todas las miles de posibles combinaciones... Espero sea de gran utilidad... =D Saludos. PD: Greets to carlitos.java
|
|
|
|
|
|
|