Advertisement
SmartGenius

Mine Sweeper v 2 Batch Game

May 18th, 2012
1,726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 5.42 KB | None | 0 0
  1. @echo off
  2.  @title MineSweeper
  3. ::Batch Game
  4. ::MineSweeper v 2
  5. ::Coded by ::SmartGenius::
  6.  
  7. if not exist "keyboard.exe" (Goto :NoKey)
  8.  
  9. setlocal enabledelayedexpansion
  10.  
  11. :Menu
  12.  @mode con cols=22 lines=20
  13. cls
  14. echo.
  15. echo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  16. echo. º MineSweeper v 2  º
  17. echo. ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  18. echo.
  19. echo.  ÛßßÛßßßßßßßßßßßßßÛ
  20. echo.  Û1.Û Jugar Mines Û
  21. echo.  ÛßßÛßßßßßßßßßßßßßÛ
  22. echo.  Û2.Û Dificultad  Û
  23. echo.  ÛßßÛßßßßßßßßßßßßßÛ
  24. echo.  Û3.Û Salir       Û
  25. echo.  ßßßßßßßßßßßßßßßßßß
  26. echo.
  27. keyboard
  28. if "%errorlevel%"=="49" (Goto :Default)
  29. if "%errorlevel%"=="50" (Goto :Skill)
  30. if "%errorlevel%"=="51" (Exit)
  31. Goto :Menu
  32.  
  33. :Skill
  34. cls
  35. echo.
  36. echo. Seleccione el
  37. echo. Nivel de
  38. echo. dificultad...
  39. echo.
  40. echo. 1. Novato
  41. echo. 2. Normal
  42. echo. 3. Experto
  43. echo.
  44. keyboard
  45. if "%errorlevel%"=="50" (
  46. Set LimX=6
  47. Set LimY=6
  48. Set SMines=12
  49. Set E=2
  50. Goto :Load
  51. )
  52. if "%errorlevel%"=="51" (
  53. Set LimX=12
  54. Set LimY=7
  55. Set SMines=25
  56. Set E=2
  57. Goto :Load
  58. )
  59. :Default
  60. Set LimX=4
  61. Set LimY=4
  62. Set SMines=6
  63. Set E=1
  64.  
  65. :Load
  66. set /a SFX=LimX*2+9
  67. set /a SFY=LimY*2+10
  68. mode con cols=%SFX% lines=%SFY%
  69. set IniX=0
  70. set IniY=0
  71. set MovX=0
  72. set MovY=0
  73.  
  74. :Init
  75. for /l %%a in (0,1,%LimX%) do (
  76. for /l %%b in (0,1,%LimY%) do (
  77. set X%%aY%%b
  78. set MX%%aY%%b=
  79. ))
  80. Set /a Total=(%LimX%+1)*(%LimY%+1)-%SMines%
  81. echo. Cargando Juego
  82. echo. Por Favor Espere...
  83. Call :GenMines
  84. Call :Timer "Start"
  85. set X0Y0=
  86. set Last=Û
  87. set Curpos=X0Y0
  88. Set EOG=False
  89.  
  90. :Graphic
  91. Call :Clear
  92. Call :Timer "Time"
  93. for /l %%d in (0,1,%LimY%) do (
  94. for /l %%e in (0,1,%LimX%) do (
  95. set Lin_%%d=!Lin_%%d!³!X%%eY%%d!))
  96. echo.
  97. echo. MineSweeper v 2
  98. echo.
  99. echo. T: %Elapsed% segundos
  100. echo.
  101. set /p var=". Ú"<nul
  102. for /l %%g in (0,1,%LimX%) do (set /p var="Ä"<nul)
  103. set /p var="¿"<nul
  104. echo.
  105. for /l %%f in (0,1,%LimY%) do (
  106. echo.. ³!Lin_%%f!³³
  107. set /p var=". ÃÅ"<nul
  108. for /l %%h in (0,1,%LimX%) do (set /p var="ÄÅ"<nul)
  109. set /p var="´"<nul
  110. echo.
  111. )
  112. set /p var=". ÀÁ"<nul
  113. for /l %%g in (0,1,%LimX%) do (set /p var="ÄÁ"<nul)
  114. set /p var="Ù"<nul
  115. echo.
  116. if "%EOG%"=="True" Goto :Lose
  117. if "%Total%"=="0" Goto :Win
  118. keyboard
  119. if "%errorlevel%"=="77" (call :MovX+ "%CurPos%")
  120. if "%errorlevel%"=="75" (call :MovX- "%CurPos%")
  121. if "%errorlevel%"=="80" (call :MovY+ "%CurPos%")
  122. if "%errorlevel%"=="72" (call :MovY- "%CurPos%")
  123. if "%errorlevel%"=="13" (call :Check "%CurPos%")
  124. if "%errorlevel%"=="88" (Goto :Menu)
  125. if "%errorlevel%"=="120" (Goto :Menu)
  126. Goto :Graphic
  127.  
  128. :MovX+
  129. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  130. if "%%p"=="%LimX%" Goto :Eof
  131. if !%~1!== set %~1=%Last%
  132. set /a MovX=%%p+1
  133. call set Last=%%X!MovX!Y%%q%%
  134. set X!MovX!Y%%q=
  135. set CurPos=X!MovX!Y%%q
  136. )
  137. Goto :Eof
  138.  
  139. :MovX-
  140. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  141. if "%%p"=="%IniX%" Goto :Eof
  142. if !%~1!== set %~1=%Last%
  143. set /a MovX=%%p-1
  144. call set Last=%%X!MovX!Y%%q%%
  145. set X!MovX!Y%%q=
  146. set CurPos=X!MovX!Y%%q
  147. )
  148. Goto :Eof
  149.  
  150. :MovY+
  151. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  152. if "%%q"=="%LimY%" Goto :Eof
  153. if !%~1!== set %~1=%Last%
  154. set /a MovY=%%q+1
  155. call set Last=%%X%%pY!MovY!%%
  156. set X%%pY!MovY!=
  157. set CurPos=X%%pY!MovY!
  158. )
  159. Goto :Eof
  160.  
  161. :MovY-
  162. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  163. if "%%q"=="%IniY%" Goto :Eof
  164. if !%~1!== set %~1=%Last%
  165. set /a MovY=%%q-1
  166. call set Last=%%X%%pY!MovY!%%
  167. set X%%pY!MovY!=
  168. set CurPos=X%%pY!MovY!
  169. )
  170. Goto :Eof
  171.  
  172. :GenMines
  173. set Mines=%SMines%
  174. set /a R1=0x!random:~-%E%!
  175. rem if "%errolevel%"=="9167" (Goto :GenMines)
  176. set /a R2=0x!random:~-%E%!
  177. rem if "%errolevel%"=="9167" (Goto :GenMines)
  178. if not %R1% GTR %LimX% (
  179. if not %R2% GTR %LimY% (
  180. if not defined MX%R1%Y%R2% (
  181. set MX%R1%Y%R2%=
  182. set /a LMN+=1
  183. )))
  184. if "%LMN%"=="%Mines%" (
  185. set LMN=0
  186. Goto :Eof
  187. )
  188. Goto :GenMines
  189.  
  190. :Check
  191. set Cont=0
  192. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  193. if not defined MX%%pY%%q (
  194. set /a TX=%%p+1
  195. set /a TXX=%%p-1
  196. set /a TY=%%q+1
  197. set /a TYY=%%q-1
  198. if defined MX!TXX!Y!TYY! (set /a Cont+=1)
  199. if defined MX%%pY!TYY! (set /a Cont+=1)
  200. if defined MX!TX!Y!TYY! (set /a Cont+=1)
  201. if defined MX!TXX!Y%%q (set /a Cont+=1)
  202. if defined MX!TX!Y%%q (set /a Cont+=1)
  203. if defined MX!TXX!Y!TY! (set /a Cont+=1)
  204. if defined MX%%pY!TY! (set /a Cont+=1)
  205. if defined MX!TX!Y!TY! (set /a Cont+=1)
  206. if "!Cont!"=="0" (
  207. set %~1=
  208. Set /a Total-=1
  209. Goto :Eof
  210. )
  211. set %~1=!Cont!
  212. Set /a Total-=1
  213. Goto :Eof
  214. )
  215. set %~1=
  216. set EOG=True
  217. Goto :Eof
  218. )
  219. Goto :Eof
  220.  
  221. :Timer
  222. if "%~1"=="Start" (
  223. Set /a IniTime=%time:~-5,2%
  224. Set /a Elapsed=%time:~-5,2%-%IniTime%
  225. Goto :Eof
  226. )
  227. if "%~1"=="Time" (
  228. Set /a Elapsed=%time:~-5,2%-%IniTime%
  229. Goto :Eof
  230. )
  231. if "%~1"=="Stop" (
  232. Set /a Elapsed=%time:~-4,2%-%IniTime%
  233. Set IniTime=0
  234. Goto :Eof
  235. )
  236. Goto :Eof
  237.  
  238. :Lose
  239. msg * Has Perdido !
  240. ping -n 4 0.0.0.0 >nul
  241. Goto :Menu
  242.  
  243. :Win
  244. Call :Timer "Stop"
  245. msg * Felicitaciones, lo lograste en %Elapsed% Segundos
  246. ping -n 4 0.0.0.0 >nul
  247. Goto :Menu
  248.  
  249. :Clear
  250. cls
  251. for /l %%m in (0,1,%LimY%) do (set Lin_%%m=)
  252. Goto :Eof
  253.  
  254. :NoKey
  255. cls
  256. echo.
  257. echo. Cargando...
  258. call :keyboard
  259. Goto :Menu
  260.  
  261. :keyboard
  262. (
  263. echo n keyboard.dat
  264. echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  265. echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  266. echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  267. echo rcx
  268. echo 002E
  269. echo w0
  270. echo q
  271. echo.
  272. )>keyboard.dat
  273. type keyboard.dat|debug>NUL 2>&1
  274. del /f/q/a "keyboard.exe">NUL 2>&1
  275. ren keyboard.dat "keyboard.exe"
  276. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement