Advertisement
SmartGenius

Sliding Puzzle

Jan 9th, 2013
871
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.00 KB | None | 0 0
  1. @Echo off&title Sliding Puzzle
  2. @mode con cols=24 lines=21
  3.  
  4. ::Batch Game Sliding Puzzle
  5. ::Coded by SmartGenius
  6.  
  7. SetLocal EnableDelayedExpansion
  8.  
  9. Call :LoadKeyboard
  10.  
  11. :Vars
  12. Set /a "LimX=17,LimY=15,IniX=0,IniY=0,MovX=0,MovY=0"
  13. Set "Bound=Û"
  14. Set "Space=°"
  15. Set "Player=O"
  16. Set "Limit= "
  17. Set "Exit=X"
  18.  
  19. Call :How
  20.  
  21. :Init
  22. For /l %%a in (%IniX%,1,%LimX%) do (
  23. For /l %%b in (%IniY%,1,%LimY%) do (
  24. Set "X%%aY%%b=%Limit%"))
  25. Call :Level
  26. Set "X1Y1=%Player%"
  27. Set "Curpos=X1Y1"
  28. Goto :Graphic
  29.  
  30. :Graphic
  31. Call :Clear
  32. For /l %%d in (%IniX%,1,%LimY%) do (
  33. For /l %%e in (%IniX%,1,%LimX%) do (
  34. Set "Lin_%%d=!Lin_%%d!!X%%eY%%d!"))
  35. Echo.
  36. Echo.
  37. Echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  38. For /l %%f in (0,1,%LimY%) do (Echo. º!Lin_%%f!º)
  39. Echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  40. Echo.
  41. If Defined MovL (
  42. Ping -n 1 localhost >nul
  43. Call :%MovL% "%CurPos%"
  44. Goto :Graphic
  45. ) Else (
  46. Keyboard
  47. )
  48. If "%Errorlevel%"=="77" (call :MovX "+" "%CurPos%")
  49. If "%Errorlevel%"=="75" (call :MovX "-" "%CurPos%")
  50. If "%Errorlevel%"=="80" (call :MovY "+" "%CurPos%")
  51. If "%Errorlevel%"=="72" (call :MovY "-" "%CurPos%")
  52. If "%Errorlevel%"=="88" (Pause&exit)
  53. If "%Errorlevel%"=="120" (Pause&exit)
  54. Goto :Graphic
  55.  
  56. :MovY
  57. For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
  58. if "%%q"=="%LimY%" Goto :Eof
  59. Set /a MovY=%%q%~11
  60. Call Set NMovY=%%X%%pY!MovY!%%
  61. If "!NMovY!"=="%Bound%" (Set "MovL="&Goto :Eof)
  62. If "!NMovY!"=="%Exit%" (Call :getKey&Goto :Win)
  63. If "!NMovY!"=="%Limit%" (Goto :Lose)
  64. Set X%%pY!MovY!=%Player%
  65. Set CurPos=X%%pY!MovY!
  66. Set MovL=MovY "%~1"
  67. Set "%~2=%Space%")
  68. Goto :Eof
  69.  
  70. :MovX
  71. For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
  72. If "%%p"=="%LimX%" Goto :Eof
  73. Set /a MovX=%%p%~11
  74. Call Set NMovX=%%X!MovX!Y%%q%%
  75. If "!NMovX!"=="%Bound%" (Set "MovL="&Goto :Eof)
  76. If "!NMovX!"=="%Exit%" (Call :getKey&Goto :Win)
  77. If "!NMovX!"=="%Limit%" (Goto :Lose)
  78. Set "X!MovX!Y%%q=%Player%"
  79. Set "CurPos=X!MovX!Y%%q"
  80. Set MovL=MovX "%~1"
  81. Set "%~2=%Space%")
  82. Goto :Eof
  83.  
  84. :Clear
  85. For /l %%m in (0,1,%LimY%) do (set Lin_%%m=)
  86. Goto :Eof
  87.  
  88. :How
  89. Cls
  90. Echo.
  91. Echo. Debes resolver el
  92. Echo. puzzle moviendo tu
  93. Echo. jugador para que
  94. Echo. llegue al objetivo
  95. Echo.
  96. Echo. %Player% ---^>%Exit%
  97. Echo.
  98. Echo. El jugador se desliza
  99. Echo. usando las flechas
  100. Echo. hasta que choca con
  101. Echo. un obstaculo --^>%Player%%Bound%
  102. Echo.
  103. Echo. Si te caes en el borde
  104. Echo. volveras a empezar.
  105. Echo.
  106. Echo. Encuentra el camino...
  107. Echo.
  108. Pause
  109. Goto :Eof
  110.  
  111. :Win
  112. Cls
  113. Echo.
  114. Echo. Felicitaciones
  115. Echo.
  116. Echo. Completaste
  117. Echo. el Juego
  118. Echo.
  119. Echo. Respuesta al Reto
  120. Echo.
  121. Echo. %Keyword%
  122. Echo.
  123. Echo.
  124. Echo. Presiona Enter para
  125. Echo. salir del Juego
  126. Set /p "%Random%="
  127. Exit
  128.  
  129. :Lose
  130. Cls
  131. Echo.
  132. Echo. Has Perdido
  133. Echo.
  134. Echo. Intenta de Nuevo
  135. Echo.
  136. Echo.
  137. Set "MovL="
  138. Pause >nul
  139. Goto :Vars
  140.  
  141. :Level
  142. 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%")
  143. 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,
  144. 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%")
  145. Set "X0Y5=%Exit%"
  146. Goto :Eof
  147.  
  148. :getKey
  149. Set "Serial=BCKUCTKUCDKBPKUCGKUCPKYUKUUGKUCBKUCDKPCKYGKBBKUUQKUCG"
  150. Set "Chr=CUDTQSGYBPK"
  151. Set "Num=0123456789,"
  152. For /l %%N in (0,1,10) do (Call Set "Serial=%%Serial:!Chr:~%%N,1!=!Num:~%%N,1!%%")
  153. For %%O in (!Serial!) do (
  154. Cmd /cexit /b %%O
  155. Set "Keyword=!Keyword!!=ExitCodeAscii!")
  156. Call :Crypt.A Keyword
  157. Goto :Eof
  158.  
  159. :Crypt.A
  160. If not defined %1 Goto:Eof
  161. Set "c="
  162. Set "d=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =/\()[]{}_-.:,;* @#"
  163. :Crypt.B
  164. Set "chr=!%1:~,1!"
  165. For /l %%l in (0 1 82) do if "!chr!" equ "!d:~%%l,1!" (
  166. set /a "x=%%l^5"
  167. call set "c=!c!%%d:~!x!,1%%"
  168. )
  169. Set "%1=!%1:~1!"
  170. If defined %1 goto:Crypt.B
  171. Set "%1=!c!"
  172. Goto :Eof
  173.  
  174. :LoadKeyboard
  175. if not exist "!SystemRoot!\system32\debug.exe" (
  176. Call :NewReply
  177. ) else (
  178. if not exist keyboard.exe ((
  179. echo.more +1 keyboard.bat^|debug^&exit
  180. echo.n keyboard.dat
  181. echo.e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  182. echo.e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  183. echo.e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  184. echo.rcx
  185. echo.002E
  186. echo.w0
  187. echo.q
  188. )>keyboard.bat
  189. start "" /min /w keyboard.bat
  190. move /y keyboard.dat keyboard.exe
  191. del /f /q /a keyboard.bat 2>nul)
  192. if not exist keyboard.exe (
  193. echo.Error:
  194. echo.Could not create the file Keyboard
  195. echo.necessary for running this Game.
  196. echo.Verifies that the file exists:
  197. pause>nul
  198. Exit))
  199. Goto :Eof
  200.  
  201.  
  202. :Newreply
  203. Echo.Const W=^2>t.vbs&Echo.Set o=WScript.StdOut>>t.vbs
  204. For %%b In (
  205. "4D534346000000002C020000000000002C000000000000000301010001000000000000"
  206. "004600000001000100A4040000000000000000933B9B7620007265706C792E636F6D00"
  207. "B619635DDE01A404434BF38D9AC0C0CCC0C0C002C4FFFF3330EC6080000706C2A00188"
  208. "F9E477F1316CE13CABB883D1E7AC62484666B14241517E7A5162AE4272625E5E7E8942"
  209. "52AA4251699E42669E828B7FB0426E7E4AAA1E2F2F970AD48C005706061F462614731F"
  210. "30F0337333B2A18825080009105680BA0EC46682B89B810141331840C419963180FD05"
  211. "5628804CC32908009AA741845F8905271819186480B406D05C093CEAF44A522B4A608E"
  212. "01624646A8BB519D96A09792589208646F800A2C41F12C3CAE0E1CD7517544F6576E71"
  213. "597251895E4A4E0E7EF786763E6D7C03326FC28B9340B2D3F54FB7EB9FE61F0CFC2D22"
  214. "402E90DDF8E30190C1DFC20A245F720089170BE1EA5E824C387998A0F920A326805356"
  215. "A7EB9B1DA0880900928C0C012F628162CD473876807C1FF0221CCC63E9757D1300561D"
  216. "D0EBFA05887F00F19F80178E6059916EA0583750AC1B2466FBFFFFFFE6233C9DAE1FBA"
  217. "5D3F04BC5083180074D27F550D05501AFEAFAA03A50DA0B40994B65020268D0F77E0A0"
  218. "00CAF71010A10049B7D8C0C257FBCBF5DF1D2CAF093E50FEFADDBEF2BA7907CA41E2C9"
  219. "40F539405C09C45D403C4B014BFA8B4F4F2D49CE003192F3F34A8AF273D20A409CF8E2"
  220. ) Do >>t.vbs (
  221. Echo.For b=1To 69Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
  222. For %%b In (
  223. "D492F8C48282F892CA8254B000505D6E62665E62517A31909F5A9109CE2200"
  224. ) Do >>t.vbs (
  225. Echo.For b=1To 61Step 2:o.Write Chr(Clng("&H"^&Mid(%%b,b,W^)^)^):Next)
  226. Cscript /Nologo t.vbs > "reply.co_"
  227. Del /f /q /a t.vbs >nul 2>&1
  228. Expand -r "reply.co_" >nul
  229. Del /f /q /a "reply.co_" >nul 2>&1
  230. Ren Reply.com Keyboard.com >nul 2>&1
  231. Del /f /q /a "reply.com" >nul 2>&1
  232. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement