Advertisement
SmartGenius

BattleShips 1 (aka Naval Battle) Batch Game

May 18th, 2012
1,330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 6.08 KB | None | 0 0
  1. @echo off
  2.  @title BattleShip
  3.  @::Another Batch Game
  4.  @::Coded by ::SmartGenius::
  5. setlocal enabledelayedexpansion
  6.  
  7. if not exist "keyboard.exe" (Goto :NoKey)
  8.  
  9. Call :Logo
  10.  
  11. :Menu
  12.  @cls
  13.  @::BattleShip v 1
  14.  @mode con cols=21 lines=20
  15. set colors=a123b567c9
  16. echo.
  17. echo. BattleShips v 1
  18. echo. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  19. echo. ÚÄÄ¿ ÚÄÄÄÄÄÄ¿
  20. echo. ³1.³ ³Jugar ³
  21. echo. ÀÄÄÙ ÀÄÄÄÄÄÄÙ
  22. echo. ÚÄÄ¿ ÚÄÄÄÄÄÄ¿
  23. echo. ³2.³ ³Salir ³
  24. echo. ÀÄÄÙ ÀÄÄÄÄÄÄÙ
  25. keyboard
  26. if "%errorlevel%"=="49" (Goto :InGame)
  27. if "%errorlevel%"=="50" (msg * BattleShip v 1 by SmartGenius&exit)
  28. if "%errorlevel%"=="32" (color 0!colors:~%random:~-1%,1!)
  29. Goto :Menu
  30.  
  31. :InGame
  32. Call :Clear
  33. Call :Load1
  34. cls
  35. echo.
  36. echo. Barcos en Posicion
  37. echo. Cargando Juego...
  38. ping -n 3 0.0.0.0 >nul
  39. Call :Load2
  40. Goto :Menu
  41.  
  42. ::Tablero posicionador
  43. :Load1
  44. set LimX=6
  45. set LimY=6
  46. set IniX=0
  47. set IniY=0
  48. set MovX=0
  49. set MovY=0
  50. set Ships=5
  51. set Water=²
  52. set Blank=X
  53.  
  54. :init1
  55. for /l %%a in (0,1,%LimX%) do (
  56. for /l %%b in (0,1,%LimY%) do (
  57. set X%%aY%%b
  58. ))
  59. set X0Y0=
  60. set Last=°
  61. set Curpos=X0Y0
  62. Goto :First
  63.  
  64. :Gp1
  65. Call :Clear
  66. :First
  67. for /l %%d in (0,1,%LimY%) do (
  68. for /l %%e in (0,1,%LimX%) do (
  69. set Lin_%%d=!Lin_%%d!³!X%%eY%%d!))
  70. echo.
  71. echo. Posiciona tus
  72. echo. Barcos...
  73. echo.
  74. echo. ÚÄÂÄÂÄÂÄÂÄÂÄÂÄ¿
  75. for /l %%f in (0,1,%LimY%) do (
  76. echo. !Lin_%%f!³
  77. echo. ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´)
  78. echo. ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ
  79. if "%Ships%"=="0" Goto :Eof
  80. keyboard
  81. if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%")
  82. if "%errorlevel%"=="75" (call :MovAX- "%CurPos%")
  83. if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%")
  84. if "%errorlevel%"=="72" (call :MovAY- "%CurPos%")
  85. if "%errorlevel%"=="13" (call :PosShip "%CurPos%")
  86. if "%errorlevel%"=="88" (Goto :Menu)
  87. if "%errorlevel%"=="120" (Goto :Menu)
  88. Goto :Gp1
  89. ::Fin Tablero Posicionador
  90.  
  91. ::Tablero de Batalla
  92. :Load2
  93.  @mode con cols=42 lines=20
  94. for /l %%a in (0,1,%LimX%) do (
  95. for /l %%b in (0,1,%LimY%) do (
  96. set MX%%aY%%b=
  97. ))
  98. Call :GenPC
  99.  
  100. :init2
  101. for /l %%a in (0,1,%LimX%) do (
  102. for /l %%b in (0,1,%LimY%) do (
  103. set PX%%aY%%b=!X%%aY%%b!
  104. set X%%aY%%b))
  105. set Player=5
  106. set X0Y0=
  107. set Last=°
  108. set Curpos=X0Y0
  109. Goto :Gp2
  110.  
  111. :Gp2
  112. title BattleShip v 1 by SmartGenius
  113. Call :Clear
  114. :Second
  115. for /l %%d in (0,1,%LimY%) do (
  116. for /l %%e in (0,1,%LimX%) do (
  117. set Lin_%%d=!Lin_%%d!³!PX%%eY%%d!
  118. set Lin2_%%d=!Lin2_%%d!³!X%%eY%%d!))
  119. echo.
  120. echo.  Jugador: %Player%      PC: %PC%
  121. echo.  A B C D E F G   A B C D E F G
  122. echo.  ÚÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ : ÚÄÂÄÂÄÂÄÂÄÂÄÂÄ¿
  123. for /l %%f in (0,1,%LimY%) do (
  124. echo. %%f !Lin_%%f!³ : !REG3XP0!>%%f !Lin2_%%f!³
  125. echo.  ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´ : ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´)
  126. echo.  ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ : ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ
  127. if "%PC%"=="0" Goto :Win
  128. if "%Player%"=="0" Goto :Lose
  129. keyboard
  130. if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%")
  131. if "%errorlevel%"=="75" (call :MovAX- "%CurPos%")
  132. if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%")
  133. if "%errorlevel%"=="72" (call :MovAY- "%CurPos%")
  134. if "%errorlevel%"=="13" (
  135. call :Player "%CurPos%"
  136. Call :MovPC
  137. )
  138. if "%errorlevel%"=="88" (Goto :Menu)
  139. if "%errorlevel%"=="120" (Goto :Menu)
  140. Goto :Gp2
  141. ::Fin Tablero de Batalla
  142.  
  143. :MovAX+
  144. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  145. if "%%p"=="%LimX%" Goto :Eof
  146. if !%~1!== set %~1=%Last%
  147. set /a MovX=%%p+1
  148. call set Last=%%X!MovX!Y%%q%%
  149. set X!MovX!Y%%q=
  150. set CurPos=X!MovX!Y%%q
  151. )
  152. Goto :Eof
  153.  
  154. :MovAX-
  155. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  156. if "%%p"=="%IniX%" Goto :Eof
  157. if !%~1!== set %~1=%Last%
  158. set /a MovX=%%p-1
  159. call set Last=%%X!MovX!Y%%q%%
  160. set X!MovX!Y%%q=
  161. set CurPos=X!MovX!Y%%q
  162. )
  163. Goto :Eof
  164.  
  165. :MovAY+
  166. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  167. if "%%q"=="%LimY%" Goto :Eof
  168. if !%~1!== set %~1=%Last%
  169. set /a MovY=%%q+1
  170. call set Last=%%X%%pY!MovY!%%
  171. set X%%pY!MovY!=
  172. set CurPos=X%%pY!MovY!
  173. )
  174. Goto :Eof
  175.  
  176. :MovAY-
  177. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  178. if "%%q"=="%IniY%" Goto :Eof
  179. if !%~1!== set %~1=%Last%
  180. set /a MovY=%%q-1
  181. call set Last=%%X%%pY!MovY!%%
  182. set X%%pY!MovY!=
  183. set CurPos=X%%pY!MovY!
  184. )
  185. Goto :Eof
  186.  
  187. :GenPC
  188. set PC=5
  189. set R1=%random:~-1%
  190. set R2=%random:~-1%
  191. if not "%R1%" GTR "%LimX%" (
  192. if not "%R2%" GTR "%LimY%" (
  193. set MX%R1%Y%R2%
  194. set /a var+=1
  195. ))
  196. if "%var%"=="%PC%" Goto :Eof
  197. Goto :GenPC
  198.  
  199. :MovPC
  200. set R1=%random:~-1%
  201. set R2=%random:~-1%
  202. if not "%R1%" GTR "%LimX%" (
  203. if not "%R2%" GTR "%LimY%" (
  204. call set Tar=!PX%R1%Y%R2%!
  205. if "!Tar!"=="X" (
  206. Goto :MovPC
  207. )
  208. if "!Tar!"=="" (
  209. Goto :MovPC
  210. )
  211. if "!Tar!"=="Û" (
  212. set PX%R1%Y%R2%=
  213. set /a Player-=1
  214. Goto :Eof
  215. ) else (
  216. set PX%R1%Y%R2%=X
  217. Goto :Eof
  218. )
  219. ))
  220. Goto :MovPC
  221.  
  222. :PosShip
  223. if not "%Last%"=="Û" (
  224. set %~1
  225. set /a Ships-=1)
  226. Goto :Eof
  227.  
  228. :Player
  229. if defined M%~1 (
  230. set %~1
  231. set /a PC-=1
  232. Goto :Eof
  233. )
  234. set %~1=%Blank%
  235. Goto :Eof
  236.  
  237. :Lose
  238. msg * Perdiste !
  239. ping -n 3 0.0.0.0 >nul
  240. Goto :Menu
  241.  
  242. :Win
  243. msg * Ganaste !
  244. ping -n 3 0.0.0.0 >nul
  245. Goto :Menu
  246.  
  247. :Clear
  248. for /l %%m in (0,1,%LimY%) do (
  249. set Lin_%%m=
  250. set Lin2_%%m=
  251. )
  252. Goto :Eof
  253.  
  254. :Logo
  255.  @mode con cols=40 lines=15
  256.  @title BattleShips v 1 by SmartGenius
  257. echo.
  258. echo.        _==^|
  259. echo. Battle _==^| )__) ^| Ships
  260. echo.       )_) )___) ))
  261. echo.      )___) )____))_)
  262. echo.    _  )____)_____))__)\
  263. echo.    \---__^|____/^|___^|___-\\---
  264. echo. ~~~~~~~~~\ oo oo oo oo  /~~~~~~~~
  265. echo. ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
  266. echo.  ~~~~   ~~~~  ~~~~ ~~ ~~
  267. echo.     ~~~~~    ~~~~~
  268. echo.
  269. echo.    SmartGenius, Corp. 2009
  270. pause >nul
  271. ping -n 3 0.0.0.0 >nul
  272. Goto :Eof
  273.  
  274. :NoKey
  275. cls
  276. echo.
  277. echo Uno de los archivos necesarios para el
  278. echo funcionamiento de este Script no se
  279. echo encuentra.
  280. echo.
  281. echo A Continuacion sera creado...
  282. call :keyboard
  283. ping -n 2 0.0.0.0 >nul
  284. Goto :Menu
  285.  
  286. :keyboard
  287. (
  288. echo n keyboard.dat
  289. echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  290. echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  291. echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  292. echo rcx
  293. echo 002E
  294. echo w0
  295. echo q
  296. echo.
  297. )>keyboard.dat
  298. type keyboard.dat|debug>NUL 2>&1
  299. del /f/q/a "keyboard.exe">NUL 2>&1
  300. ren keyboard.dat "keyboard.exe"
  301. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement