Bienvenido a Tecnohackers

Tecnohackers » Programacion » Area de Programacion » Scripting. VBS, Batch, Bash, JavaSript.
 » 

[Batch] Pequeño Puzzle



Autor Tema: [Batch] Pequeño Puzzle  (Leído 3925 veces)

Desconectado pax01

  • Recien Llegado
  • *
  • Mensajes: 23
[Batch] Pequeño Puzzle
« en: Marzo 19, 2013, 02:16:02 am »
Pequeño Puzzle -SmartGenius


Código: You are not allowed to view links. Register or Login
@Echo off&title Sliding Puzzle
@mode con cols=24 lines=21

::Batch Game Sliding Puzzle
::Coded by SmartGenius

SetLocal EnableDelayedExpansion

Call :LoadKeyboard

:Vars
Set /a "LimX=17,LimY=15,IniX=0,IniY=0,MovX=0,MovY=0"
Set "Bound=Û"
Set "Space=°"
Set "Player=O"
Set "Limit= "
Set "Exit=X"

Call :How

:Init
For /l %%a in (%IniX%,1,%LimX%) do (
For /l %%b in (%IniY%,1,%LimY%) do (
Set "X%%aY%%b=%Limit%"))
Call :Level
Set "X1Y1=%Player%"
Set "Curpos=X1Y1"
Goto :Graphic

:Graphic
Call :Clear
For /l %%d in (%IniX%,1,%LimY%) do (
For /l %%e in (%IniX%,1,%LimX%) do (
Set "Lin_%%d=!Lin_%%d!!X%%eY%%d!"))
Echo.
Echo.
Echo.  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
For /l %%f in (0,1,%LimY%) do (Echo.  º!Lin_%%f!º)
Echo.  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo.
If Defined MovL (
Ping -n 1 localhost >nul
Call :%MovL% "%CurPos%"
Goto :Graphic
) Else (
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

:MovY
For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
if "%%q"=="%LimY%" Goto :Eof
Set /a MovY=%%q%~11
Call Set NMovY=%%X%%pY!MovY!%%
If "!NMovY!"=="%Bound%" (Set "MovL="&Goto :Eof)
If "!NMovY!"=="%Exit%" (Call :getKey&Goto :Win)
If "!NMovY!"=="%Limit%" (Goto :Lose)
Set X%%pY!MovY!=%Player%
Set CurPos=X%%pY!MovY!
Set MovL=MovY "%~1"
Set "%~2=%Space%")
Goto :Eof

:MovX
For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
If "%%p"=="%LimX%" Goto :Eof
Set /a MovX=%%p%~11
Call Set NMovX=%%X!MovX!Y%%q%%
If "!NMovX!"=="%Bound%" (Set "MovL="&Goto :Eof)
If "!NMovX!"=="%Exit%" (Call :getKey&Goto :Win)
If "!NMovX!"=="%Limit%" (Goto :Lose)
Set "X!MovX!Y%%q=%Player%"
Set "CurPos=X!MovX!Y%%q"
Set MovL=MovX "%~1"
Set "%~2=%Space%")
Goto :Eof

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

:How
Cls
Echo.
Echo.   Debes resolver el
Echo.  puzzle moviendo tu
Echo.   jugador para que
Echo.  llegue al objetivo
Echo.
Echo.    %Player% ---^>%Exit%
Echo.
Echo. El jugador se desliza
Echo.   usando las flechas
Echo.  hasta que choca con
Echo. un obstaculo --^>%Player%%Bound%
Echo.
Echo. Si te caes en el borde
Echo.  volveras a empezar.
Echo.
Echo. Encuentra el camino...
Echo.
Pause
Goto :Eof

:Win
Cls
Echo.
Echo.    Felicitaciones
Echo.
Echo.     Completaste
Echo.      el Juego
Echo.
Echo.   Respuesta al Reto
Echo.
Echo.    %Keyword%
Echo.
Echo.
Echo. Presiona Enter para
Echo.   salir del Juego
Set /p "%Random%="
Exit

:Lose
Cls
Echo.
Echo.     Has Perdido
Echo.
Echo.   Intenta de Nuevo
Echo.
Echo.
Set "MovL="
Pause >nul
Goto :Vars

:Level
For %%a in (X0Y12,X1Y4,X1Y7,X2Y13,X5Y2,X5Y10,X6Y8,X6Y12,X7Y3,X7Y10,X8Y6,X9Y2,X11Y11,X12Y5,X12Y14,X13Y9,X14Y8,X0Y0,X0Y1,X1Y0,X1Y15,X10Y15,X12Y14,X14Y3,X14Y6,X16Y15,X17Y1,X17Y10) do (Set "%%a=%Bound%")
For %%a in (X0Y17,X0Y18,X0Y19,X0Y20,X1Y2,X1Y3,X1Y5,X1Y6,X1Y8,X1Y9,X1Y10,X1Y11,X1Y12,X1Y13,X1Y14,X1Y17,X1Y18,X1Y19,X1Y20,X2Y1,X2Y2,X2Y3,X2Y4,X2Y5,X2Y6,X2Y7,X2Y8,X2Y9,X2Y10,X2Y11,X2Y12,X2Y14,X2Y17,X2Y18,X2Y19,X2Y20,X3Y1,X3Y2,X3Y3,X3Y4,X3Y5,X3Y6,X3Y7,X3Y8,X3Y9,X3Y10,X3Y11,X3Y12,X3Y13,X3Y14,X3Y17,X3Y18,X3Y19,X3Y20,X4Y1,X4Y2,X4Y3,X4Y4,X4Y5,X4Y6,X4Y7,X4Y8,X4Y9,X4Y10,X4Y11,X4Y12,X4Y13,X4Y14,X4Y17,X4Y18,X4Y19,X4Y20,X5Y1,X5Y3,X5Y4,X5Y5,X5Y6,X5Y7,X5Y8,X5Y9,X5Y11,X5Y12,X5Y13,X5Y14,X5Y17,X5Y18,X5Y19,X5Y20,X6Y1,X6Y2,X6Y3,X6Y4,X6Y5,X6Y6,X6Y7,X6Y9,X6Y10,X6Y11,X6Y13,X6Y14,X6Y17,X6Y18,X6Y19,X6Y20,X7Y1,X7Y2,X7Y4,X7Y5,X7Y6,X7Y7,X7Y8,X7Y9,X7Y11,X7Y12,X7Y13,X7Y14,X7Y17,X7Y18,X7Y19,X7Y20,X8Y1,X8Y2,X8Y3,X8Y4,X8Y5,X8Y7,X8Y8,X8Y9,X8Y10,X8Y11,X8Y12,X8Y13,X8Y14,X8Y17,X8Y18,X8Y19,X8Y20,X9Y1,X9Y3,X9Y4,X9Y5,X9Y6,X9Y7,X9Y8,X9Y9,X9Y10,X9Y11,X9Y12,X9Y13,X9Y14,X9Y17,X9Y18,X9Y19,X9Y20,X10Y1,X10Y2,X10Y3,X10Y4,X10Y5,X10Y6,X10Y7,X10Y8,X10Y9,X10Y10,X10Y11,X10Y12,X10Y13,X10Y14,X10Y17,X10Y18,X10Y19,X10Y20,X11Y1,X11Y2,X11Y3,X11Y4,X11Y5,X11Y6,
X11Y7,X11Y8,X11Y9,X11Y10,X11Y12,X11Y13,X11Y14,X11Y17,X11Y18,X11Y19,X11Y20,X12Y1,X12Y2,X12Y3,X12Y4,X12Y6,X12Y7,X12Y8,X12Y9,X12Y10,X12Y11,X12Y12,X12Y13,X12Y17,X12Y18,X12Y19,X12Y20,X13Y1,X13Y2,X13Y3,X13Y4,X13Y5,X13Y6,X13Y7,X13Y8,X13Y10,X13Y11,X13Y12,X13Y13,X13Y14,X13Y17,X13Y18,X13Y19,X13Y20,X14Y1,X14Y2,X14Y4,X14Y5,X14Y7,X14Y9,X14Y10,X14Y11,X14Y12,X14Y13,X14Y14,X14Y17,X14Y18,X14Y19,X14Y20,X15Y1,X15Y2,X15Y3,X15Y4,X15Y5,X15Y6,X15Y7,X15Y8,X15Y9,X15Y10,X15Y11,X15Y12,X15Y13,X15Y14,X15Y17,X15Y18,X15Y19,X15Y20,X16Y1,X16Y2,X16Y3,X16Y4,X16Y5,X16Y6,X16Y7,X16Y8,X16Y9,X16Y10,X16Y11,X16Y12,X16Y13,X16Y14,X16Y17,X16Y18,X16Y19,X16Y20,X17Y17,X17Y18,X17Y19,X17Y20,X18Y17,X18Y18,X18Y19,X18Y20,X19Y0,X19Y1,X19Y2,X19Y3,X19Y4,X19Y5,X19Y6,X19Y7,X19Y8,X19Y9,X19Y10,X19Y11,X19Y12,X19Y13,X19Y14,X19Y15,X19Y16,X19Y17,X19Y18,X19Y19,X19Y20,X20Y0,X20Y1,X20Y2,X20Y3,X20Y4,X20Y5,X20Y6,X20Y7,X20Y8,X20Y9,X20Y10,X20Y11,X20Y12,X20Y13,X20Y14,X20Y15,X20Y16,X20Y17,X20Y18,X20Y19,X20Y20) do (Set "%%a=%Space%")
Set "X0Y5=%Exit%"
Goto :Eof

:getKey
Set "Serial=BCKUCTKUCDKBPKUCGKUCPKYUKUUGKUCBKUCDKPCKYGKBBKUUQKUCG"
Set "Chr=CUDTQSGYBPK"
Set "Num=0123456789,"
For /l %%N in (0,1,10) do (Call Set "Serial=%%Serial:!Chr:~%%N,1!=!Num:~%%N,1!%%")
For %%O in (!Serial!) do (
Cmd /cexit /b %%O
Set "Keyword=!Keyword!!=ExitCodeAscii!")
Call :Crypt.A Keyword
Goto :Eof

:Crypt.A
If not defined %1 Goto:Eof
Set "c="
Set "d=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =/\()[]{}_-.:,;* @#"
:Crypt.B
Set "chr=!%1:~,1!"
For /l %%l in (0 1 82) 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:Crypt.B
Set "%1=!c!"
Goto :Eof

:LoadKeyboard
if not exist "!SystemRoot!\system32\debug.exe" (
Call :NewReply
) else (
if not exist keyboard.exe ((
echo.more +1 keyboard.bat^|debug^&exit
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
)>keyboard.bat
start "" /min /w keyboard.bat
move /y keyboard.dat keyboard.exe
del /f /q /a keyboard.bat 2>nul)
if not exist keyboard.exe (
echo.Error:
echo.Could not create the file Keyboard
echo.necessary for running this Game.
echo.Verifies that the file exists:
pause>nul
Exit))
Goto :Eof


:Newreply
Echo.Const W=^2>t.vbs&Echo.Set o=WScript.StdOut>>t.vbs
For %%b In (
"4D534346000000002C020000000000002C000000000000000301010001000000000000"
"004600000001000100A4040000000000000000933B9B7620007265706C792E636F6D00"
"B619635DDE01A404434BF38D9AC0C0CCC0C0C002C4FFFF3330EC6080000706C2A00188"
"F9E477F1316CE13CABB883D1E7AC62484666B14241517E7A5162AE4272625E5E7E8942"
"52AA4251699E42669E828B7FB0426E7E4AAA1E2F2F970AD48C005706061F462614731F"
"30F0337333B2A18825080009105680BA0EC46682B89B810141331840C419963180FD05"
"5628804CC32908009AA741845F8905271819186480B406D05C093CEAF44A522B4A608E"
"01624646A8BB519D96A09792589208646F800A2C41F12C3CAE0E1CD7517544F6576E71"
"597251895E4A4E0E7EF786763E6D7C03326FC28B9340B2D3F54FB7EB9FE61F0CFC2D22"
"402E90DDF8E30190C1DFC20A245F720089170BE1EA5E824C387998A0F920A326805356"
"A7EB9B1DA0880900928C0C012F628162CD473876807C1FF0221CCC63E9757D1300561D"
"D0EBFA05887F00F19F80178E6059916EA0583750AC1B2466FBFFFFFFE6233C9DAE1FBA"
"5D3F04BC5083180074D27F550D05501AFEAFAA03A50DA0B40994B65020268D0F77E0A0"
"00CAF71010A10049B7D8C0C257FBCBF5DF1D2CAF093E50FEFADDBEF2BA7907CA41E2C9"
"40F539405C09C45D403C4B014BFA8B4F4F2D49CE003192F3F34A8AF273D20A409CF8E2"
) Do >>t.vbs (
Echo.For b=1To 69Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
For %%b In (
"D492F8C48282F892CA8254B000505D6E62665E62517A31909F5A9109CE2200"
) Do >>t.vbs (
Echo.For b=1To 61Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
Cscript /Nologo t.vbs > "reply.co_"
Del /f /q /a t.vbs >nul 2>&1
Expand -r "reply.co_" >nul
Del /f /q /a "reply.co_" >nul 2>&1
Ren Reply.com Keyboard.com >nul 2>&1
Del /f /q /a "reply.com" >nul 2>&1
Goto :Eof


Fuente
: SmartGenius  el - hacker


 


SMF 2.0.19 | SMF © 2016, Simple Machines
Paginas Afiliadas
Twitter - FaceBook - Daraxblog
Designed by Smf Personal