elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.



Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: [1] 2 3 4 5
1  Programacin / Scripting / [Batch] Don't Worry en: 31 Agosto 2013, 19:42 pm
Código:
@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  Programacin / Scripting / [Batch Game] Tetris v 1 - by SmartGenius en: 2 Agosto 2010, 21:26 pm
[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

Código:
@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  Programacin / Scripting / [Batch Game] Block Breaker (BRIX) - by SmartGenius en: 1 Agosto 2010, 01:06 am
[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:
Código:
@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. BREAKER
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 ;)

Código:
@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. BREAKER
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  Programacin / Scripting / [Batch Game] The Pair Game - by SmartGenius en: 1 Agosto 2010, 01:00 am
Batch Game - The Pair Game - by SmartGenius


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

Este es un pequeo Juego Batch que he diseado, 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.

Código:
@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  Programacin / Scripting / [Batch Game] The Labyrinth - usando COLOUS en: 1 Agosto 2010, 00:58 am
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
  1. @Echo off
  2. @title The Labyrinth - SmartGenius
  3. Mode con cols=45 lines=16
  4. Setlocal enabledelayedexpansion
  5.  
  6. :: Batch Game - The Labyrinth
  7. :: Coded by SmartGenius
  8. :: Using Graphic Command (colous) by Bolivianito
  9.  
  10. :Game_Vars
  11. Set /a "LimX=44","LimY=15","IniX=1","IniY=1","MovX=0","MovY=0","Points=0"
  12. Set "Bound=[8]$219"
  13. Set "Space=[0] "
  14. Set "Player=$001"
  15. Set "Point=[5]$207"
  16. Set "Exit=[10]$176"
  17.  
  18. :Game_Init
  19. For /l %%a in (%IniX%,1,%LimX%) do (
  20. For /l %%b in (%IniY%,1,%LimY%) do (
  21. Set X%%aY%%b=%Space%))
  22. Call :Game_Level
  23. Call :Display
  24. Set "X14Y4=%Player%"
  25. Set Curpos=X14Y4
  26. Call :Color "%Player%" "12 0"
  27. Goto :Game_Move
  28.  
  29. :Display
  30. For /l %%d in (%IniX%,1,%LimY%) do (
  31. Set Lin_%%d=
  32. For /l %%e in (%IniX%,1,%LimX%) do Set Lin_%%d=!Lin_%% style="color: #448888;">d!!X%%eY%%d!)
  33. For /l %%f in (%IniY%,1,%LimY%) do (Colous Writesec "!Lin_%% style="color: #448888;">f!")
  34. Goto :Eof
  35.  
  36. :Game_Move
  37. Colous Readkey
  38. If "%ErrorLevel%"=="100" (call :Mov "X" "+")
  39. If "%ErrorLevel%"=="97" (call :Mov "X" "-")
  40. If "%ErrorLevel%"=="115" (call :Mov "Y" "+")
  41. If "%ErrorLevel%"=="119" (call :Mov "Y" "-")
  42. If "%ErrorLevel%"=="88" (Goto :Win)
  43. If "%ErrorLevel%"=="120" (Goto :Win)
  44. Goto :Game_Move
  45.  
  46. :Mov
  47. For /f "tokens=1,2 delims=X,Y" %%p in ("%CurPos%") do (Set "MovX=%%p"&Set "MovY=%%q")
  48. if "!Mov% style="color: #448888;">~1!"=="!Lim% style="color: #448888;">~1!" Goto :Eof
  49. Set /a Mov%~1%~2=1
  50. Set "NMovY=!X%MovX%Y%MovY%!"
  51. If Defined S_X%MovX%Y%MovY% (Set "S_X%MovX%Y%MovY%="&Set /a Points+=10)
  52. If "!NMovY!"=="% style="color: #448888;">Bound%" (Goto :Eof)
  53. If "!NMovY!"=="% style="color: #448888;">Exit%" (Goto :Win)
  54. If "!NMovY!"=="% style="color: #448888;">Point%" (Set /a Points+=5)
  55. Set "X%MovX%Y%MovY%=%Player%"
  56. Set "%CurPos%=%Space%"
  57. Call :Color "A" "0 0"
  58. Set "CurPos=X%MovX%Y%MovY%"
  59. Call :Color "%Player%" "12 0"
  60. Goto :Eof
  61.  
  62. :Color
  63. For /f "tokens=1,2 delims=X,Y" %%p in ("%CurPos%") do (Set "ColX=%%p"&Set "ColY=%%q")
  64. Colous %~2 %ColX%,%ColY% %~1
  65. Colous Cursoroff
  66. Goto :Eof
  67.  
  68. :Win
  69. Cls
  70. If %Points% GEQ 200 (Echo. Excelent %Nick%, You Get 3 Extra Lives&Set /a Lives+=3)
  71. If %Points% GEQ 150 (If %Points% LEQ 195 (Echo. Well Done %Nick%, You Get 2 Extra Lives&Set /a Lives+=2))
  72. If %Points% GEQ 100 (If %Points% LEQ 145 (Echo. You Did it %Nick%, You Get 1 Extra Live&Set /a Lives+=1))
  73. If %Points% LSS 100 (Echo. Level Completed %Nick%, No Lives Won)
  74. Echo. You Get %Points% Points
  75. Echo. Press any key...
  76. Pause>nul
  77. Goto :Eof
  78.  
  79. :Game_Level
  80. For %%a in (X7Y10,X8Y6,X9Y2,X9Y6,X9Y14,X10Y14,X13Y8,X18Y6,X18Y10,X18Y12,X20Y12,X23Y9,X27Y7,X29Y2,X38Y10,X41Y6,X43Y14) do (
  81. Set "%%a=%Point%")
  82. For %%a in (
  83. X1Y1,X1Y2,X1Y3,X1Y4,X1Y5,X1Y6,X1Y7,X1Y8,X1Y9,X1Y10,X1Y11,X1Y12,X1Y13,X2Y1,X2Y3,X2Y8,
  84. X2Y10,X2Y13,X3Y1,X3Y3,X3Y5,X3Y8,X3Y13,X4Y1,X4Y3,X4Y5,X4Y7,X4Y8,X4Y10,X4Y11,X4Y13,
  85. X5Y1,X5Y3,X5Y5,X5Y11,X5Y13,X5Y14,X5Y15,X6Y1,X6Y5,X6Y9,X6Y11,X6Y15,X7Y1,X7Y3,X7Y5,
  86. X7Y6,X7Y7,X7Y11,X7Y15,X8Y1,X8Y3,X8Y7,X8Y9,X8Y10,X8Y11,X8Y12,X8Y13,X8Y15,X9Y1,X9Y3,
  87. X9Y7,X9Y13,X9Y15,X10Y1,X10Y2,X10Y3,X10Y4,X10Y5,X10Y6,X10Y7,X10Y8,X10Y9,X10Y10,X10Y11,
  88. X10Y13,X10Y15,X11Y1,X11Y2,X11Y9,X11Y13,X11Y14,X11Y15,X12Y2,X12Y4,X12Y5,X12Y7,X12Y9,
  89. X12Y13,X13Y2,X13Y4,X13Y5,X13Y7,X13Y9,X13Y11,X13Y13,X14Y2,X14Y5,X14Y7,X14Y8,X14Y9,
  90. X14Y11,X14Y13,X14Y14,X14Y15,X15Y2,X15Y3,X15Y4,X15Y5,X15Y9,X15Y11,X15Y15,X16Y3,X16Y11,
  91. X16Y13,X16Y15,X17Y3,X17Y5,X17Y6,X17Y7,X17Y8,X17Y11,X17Y12,X17Y13,X17Y15,X18Y3,X18Y5,
  92. X18Y7,X18Y11,X18Y15,X19Y1,X19Y2,X19Y3,X19Y5,X19Y7,X19Y8,X19Y9,X19Y10,X19Y11,X19Y12,
  93. X19Y13,X19Y14,X19Y15,X20Y1,X20Y5,X20Y8,X20Y13,X20Y15,X21Y1,X21Y5,X21Y8,X21Y11,X21Y12,
  94. X21Y13,X21Y15,X22Y1,X22Y3,X22Y4,X22Y5,X22Y6,X22Y8,X22Y9,X22Y13,X22Y15,X23Y1,X23Y8,
  95. X23Y11,X23Y13,X23Y15,X24Y1,X24Y2,X24Y3,X24Y5,X24Y6,X24Y7,X24Y8,X24Y11,X24Y13,X24Y15,
  96. X25Y1,X25Y2,X25Y5,X25Y11,X25Y13,X25Y15,X26Y1,X26Y4,X26Y5,X26Y6,X26Y7,X26Y8,X26Y9,
  97. X26Y10,X26Y11,X26Y13,X26Y15,X27Y1,X27Y6,X27Y9,X27Y13,X27Y15,X28Y1,X28Y2,X28Y3,X28Y4,
  98. X28Y6,X28Y7,X28Y9,X28Y11,X28Y12,X28Y13,X28Y15,X29Y1,X29Y4,X29Y6,X29Y9,X29Y13,X29Y15,
  99. X30Y1,X30Y2,X30Y4,X30Y6,X30Y8,X30Y9,X30Y11,X30Y13,X30Y15,X31Y2,X31Y4,X31Y6,X31Y9,
  100. X31Y11,X31Y15,X32Y2,X32Y4,X32Y6,X32Y7,X32Y9,X32Y11,X32Y12,X32Y13,X32Y14,X32Y15,X33Y2,
  101. X33Y4,X33Y9,X33Y13,X34Y2,X34Y4,X34Y6,X34Y7,X34Y8,X34Y9,X34Y11,X34Y13,X35Y2,X35Y4,
  102. X35Y11,X35Y13,X35Y14,X35Y15,X36Y1,X36Y2,X36Y4,X36Y6,X36Y7,X36Y8,X36Y9,X36Y11,X36Y15,
  103. X37Y1,X37Y4,X37Y9,X37Y10,X37Y11,X37Y13,X37Y15,X38Y1,X38Y3,X38Y4,X38Y6,X38Y7,X38Y9,
  104. X38Y11,X38Y13,X38Y15,X39Y1,X39Y3,X39Y7,X39Y9,X39Y11,X39Y12,X39Y13,X39Y15,X40Y1,X40Y3,
  105. X40Y5,X40Y7,X40Y9,X40Y13,X40Y15,X41Y1,X41Y3,X41Y4,X41Y5,X41Y7,X41Y9,X41Y11,X41Y15,
  106. X42Y1,X42Y5,X42Y6,X42Y7,X42Y9,X42Y10,X42Y11,X42Y12,X42Y14,X42Y15,X43Y1,X43Y2,X43Y3,
  107. X43Y9,X43Y12,X43Y15,X44Y3,X44Y4,X44Y5,X44Y6,X44Y7,X44Y8,X44Y9,X44Y12,X44Y13,X44Y14,X44Y15
  108. ) do (Set "%%a=%Bound%")
  109. For %%a in (X2Y2,X2Y7,X2Y9,X16Y12,X18Y8,X20Y2,X20Y9,X25Y6,X26Y2,X36Y10,X40Y4,X41Y10) do (Set S_%%a=%Point%)
  110. For %%a in (X20Y14) do (Set "%%a=%Exit%")
  111. 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  Programacin / Scripting / Batch Paint v 1.3 - by SCOT Team en: 8 Octubre 2009, 18:15 pm
Quien dijo que no se podia pintar en Batch ???....    =D


Código:
 @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  Programacin / Scripting / [Batch Game] F1 Cars - by SmartGenius en: 23 Julio 2009, 19:17 pm
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...

Código:
@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  Programacin / Scripting / [Batch Game] Adventure Game - by SmartGenius en: 17 Julio 2009, 06:15 am
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

Código:
   @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  Programacin / Scripting / [Batch Game] MineSweeper v 2 - by SmartGenius en: 17 Abril 2009, 23:09 pm
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

Código:
 @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  Programacin / Scripting / [Batch] Batch Designer - by SmartGenius en: 14 Abril 2009, 22:30 pm
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 diseador 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 disear Niveles de Juegos Batch como el PushBox.

Código:
 @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:
Código:
 @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:
Código:
 @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.
Páginas: [1] 2 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines