Advertisement
SmartGenius

Pong (PoC) Batch Game

May 18th, 2012
3,248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 8.77 KB | None | 0 0
  1. @echo off
  2. @title PingPong v 1
  3. @mode con cols=28 lines=24
  4. @::Juego Batch PingPong
  5. @::Another Batch Game
  6. @::by ::SmartGenius ::
  7.  
  8. if not exist "choice.com" (Goto :NoKey)
  9.  
  10. :load
  11. call :Logo
  12. setlocal enabledelayedexpansion
  13. set LimX=18
  14. set LimY=16
  15. set TBound=3
  16. set LBound=1
  17. set /a RBound=%LimX%-1
  18. set /a BBound=%LimY%-3
  19. set NLevels=1
  20.  
  21. :init
  22. for /l %%a in (0,1,%LimX%) do (
  23. for /l %%b in (0,1,%LimY%) do (
  24. set X%%aY%%b= ))
  25. set Ball=O
  26. set Bound=Û
  27. set Block=
  28. set Line=Û
  29. set Lost=ù
  30.  
  31. :Levels
  32. set /a L+=1
  33. Call :Level%L%
  34. Call :Graphic
  35. set P%L%=%Movs%
  36. if "%LOS%"=="True" Goto :Lost
  37. if "%NXL%"=="True" Goto :End
  38. if "%L%"=="%NLevels%" Goto :Win
  39. ping -n 1 0.0.0.0 >nul
  40. Goto :Init
  41.  
  42. :Graphic
  43. Call :Clear
  44. cls
  45. for /l %%d in (0,1,%LimY%) do (
  46. for /l %%e in (0,1,%LimX%) do (
  47. set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
  48. echo.
  49. echo.  PingPong v 1 by Smart
  50. echo.
  51. echo.  PC:%PPC%   Player:%Points%
  52. echo.  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  53. for /l %%f in (0,1,%LimY%) do (echo.  º!Lin_%%f!º)
  54. echo.  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  55. rem pause >nul
  56. call :%Action%
  57. if "%PPC%"=="10" (Set LOS=True&set NXL=True)
  58. if "%NXL%"=="True" (Goto :Eof)
  59. Goto :Graphic
  60.  
  61. :Paused
  62. CHOICE /C:WADX /N >nul
  63. if "%errorlevel%"=="1" (set Action=Playing)
  64. if "%errorlevel%"=="2" (call :LeftA)
  65. if "%errorlevel%"=="3" (call :RightA)
  66. if "%errorlevel%"=="4" (set NXL=True)
  67. Call :MovPC "%CurPos%"
  68. Goto :Eof
  69.  
  70. :Playing
  71. CHOICE /C:WADX /N /T:W,1 >nul
  72. if "%errorlevel%"=="1" (set Action=Playing)
  73. if "%errorlevel%"=="2" (call :LeftB)
  74. if "%errorlevel%"=="3" (call :RightB)
  75. if "%errorlevel%"=="4" (set NXL=True)
  76. Call :MovBall
  77. Call :MovPC "%CurPos%"
  78. Goto :Eof
  79.  
  80. ::Logica de Movimiento en el Plano
  81. ::Coded by :: SmartGenius ::
  82.  
  83. :RightA
  84. if ["%Table%"]==["%MaxTable%"] (Goto :Eof)
  85. for /f "tokens=1,5 delims=," %%u in ("%Table%") do (
  86. call :MovAX+ "%%u" "%%v" TB "!%%u!"
  87. call set NewTable=!TB!,%Table%
  88. for /f "tokens=1-5 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x)
  89. set Table=!NewTable!
  90. call :MovAX+ "%CurPos%" "%CurPos%" CurPos "!%CurPos%!"
  91. )
  92. Goto :Eof
  93.  
  94. :MovAX+
  95. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  96. set /a MovX=%%p+1
  97. call set NMovX=%%X!MovX!Y%%q%%
  98. if "!NMovX!"=="%Bound%" (Goto :Eof)
  99. if "!NMovX!"==" " (
  100. set %~2=
  101. set X!MovX!Y%%q=%~4
  102. set %3=X!MovX!Y%%q))
  103. Goto :Eof
  104.  
  105. :RightB
  106. if ["%Table%"]==["%MaxTable%"] (Goto :Eof)
  107. for /f "tokens=1,5 delims=," %%u in ("%Table%") do (
  108. call :MovAX+ "%%u" "%%v" TB "!%%u!"
  109. call set NewTable=!TB!,%Table%
  110. for /f "tokens=1-5 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x)
  111. set Table=!NewTable!)
  112. Goto :Eof
  113.  
  114. :LeftA
  115. if ["%Table%"]==["%MinTable%"] (Goto :Eof)
  116. for /f "tokens=1,5 delims=," %%u in ("%Table%") do (
  117. call :MovAX- "%%v" "%%u" TB "!%%v!"
  118. call set NewTable=%Table%,!TB!
  119. for /f "tokens=2-6 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x)
  120. set Table=!NewTable!
  121. call :MovAX- "%CurPos%" "%CurPos%" CurPos "!%CurPos%!"
  122. )
  123. Goto :Eof
  124.  
  125. :LeftB
  126. if ["%Table%"]==["%MinTable%"] (Goto :Eof)
  127. for /f "tokens=1,5 delims=," %%u in ("%Table%") do (
  128. call :MovAX- "%%v" "%%u" TB "!%%v!"
  129. call set NewTable=%Table%,!TB!
  130. for /f "tokens=2-6 delims=," %%t in ("!NewTable!") do (set NewTable=%%t,%%u,%%v,%%w,%%x)
  131. set Table=!NewTable!)
  132. Goto :Eof
  133.  
  134. :MovAX-
  135. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  136. set /a MovX=%%p-1
  137. call set NMovX=%%X!MovX!Y%%q%%
  138. if "!NMovX!"=="%Bound%" (Goto :Eof)
  139. if "!NMovX!"==" " (
  140. set %~2=
  141. set X!MovX!Y%%q=%~4
  142. set %3=X!MovX!Y%%q))
  143. Goto :Eof
  144.  
  145. :MovPC
  146. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  147. for /l %%x in (%LBound%,1,%RBound%) do (set X%%xY2= )
  148. set /a PCL=%%p-2
  149. set /a PCR=%%p+2
  150. for /l %%s in (!PCL!,1,!PCR!) do (set X%%sY2=%Bound%))
  151. Goto :Eof
  152.  
  153. :MovBall
  154. set EOM=False
  155. Call :%NextMov% "%CurPos%"
  156. if "%EOM%"=="True" Goto :Eof
  157. Goto :MovBall
  158.  
  159. ::Moviemtos Diagonales de la Bola
  160. ::Movimiento Diagonal1
  161. :Diag1
  162. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  163. set /a MovX=%%p+1
  164. set /a MovY=%%q+1
  165. call set NMovXY=%%X!MovX!Y!MovY!%%
  166.  
  167. if "!NMovXY!"=="%Bound%" (
  168. if "%%q"=="%BBound%" (set NextMov=Diag3)
  169. if "%%p"=="%RBound%" (set NextMov=Diag4)
  170. Goto :Eof)
  171.  
  172. if "!NMovXY!"==" " (
  173. set %~1=
  174. set X!MovX!Y!MovY!=%Ball%
  175. set CurPos=X!MovX!Y!MovY!
  176. set EOM=True)
  177. )
  178.  
  179. if "!NMovXY!"=="%Lost%" (
  180. set %~1=
  181. set /a PPC+=1
  182. call :Reset
  183. set EOM=True)
  184. )
  185. Goto :Eof
  186.  
  187. ::Movimiento Diagonal2
  188. :Diag2
  189. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  190. set /a MovX=%%p-1
  191. set /a MovY=%%q-1
  192. call set NMovXY=%%X!MovX!Y!MovY!%%
  193.  
  194. if "!NMovXY!"=="%Bound%" (
  195. if "%%q"=="%TBound%" (set NextMov=Diag4)
  196. if "%%p"=="%LBound%" (set NextMov=Diag3)
  197. Goto :Eof)
  198.  
  199. if "!NMovXY!"==" " (
  200. set %~1=
  201. set X!MovX!Y!MovY!=%Ball%
  202. set CurPos=X!MovX!Y!MovY!
  203. set EOM=True)
  204. )
  205.  
  206. if "!NMovXY!"=="%Lost%" (
  207. set %~1=
  208. set /a Points+=1
  209. call :Reset
  210. set EOM=True)
  211. )
  212. Goto :Eof
  213.  
  214. ::Movimiento Diagonal3
  215. :Diag3
  216. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  217. set /a MovX=%%p+1
  218. set /a MovY=%%q-1
  219. call set NMovXY=%%X!MovX!Y!MovY!%%
  220.  
  221. if "!NMovXY!"=="%Bound%" (
  222. if "%%q"=="%TBound%" (set NextMov=Diag1)
  223. if "%%p"=="%RBound%" (set NextMov=Diag2)
  224. Goto :Eof)
  225.  
  226. if "!NMovXY!"==" " (
  227. set %~1=
  228. set X!MovX!Y!MovY!=%Ball%
  229. set CurPos=X!MovX!Y!MovY!
  230. set EOM=True)
  231. )
  232.  
  233. if "!NMovXY!"=="%Lost%" (
  234. set %~1=
  235. set /a Points+=1
  236. call :Reset
  237. set EOM=True)
  238. )
  239. Goto :Eof
  240.  
  241. ::Movimiento Diagonal4
  242. :Diag4
  243. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  244. set /a MovX=%%p-1
  245. set /a MovY=%%q+1
  246. call set NMovXY=%%X!MovX!Y!MovY!%%
  247.  
  248. if "!NMovXY!"=="%Bound%" (
  249. if "%%q"=="%BBound%" (set NextMov=Diag2)
  250. if "%%p"=="%LBound%" (set NextMov=Diag1)
  251. Goto :Eof)
  252.  
  253. if "!NMovXY!"==" " (
  254. set %~1=
  255. set X!MovX!Y!MovY!=%Ball%
  256. set CurPos=X!MovX!Y!MovY!
  257. set EOM=True)
  258. )
  259.  
  260. if "!NMovXY!"=="%Lost%" (
  261. set %~1=
  262. set /a PPC+=1
  263. call :Reset
  264. set EOM=True)
  265. )
  266. Goto :Eof
  267.  
  268. :Clear
  269. for /l %%m in (0,1,%LimY%) do (set Lin_%%m=)
  270. Goto :Eof
  271.  
  272. :Reset
  273. set CurPos=X8Y13
  274. set Table=X10Y14,X9Y14,X8Y14,X7Y14,X6Y14
  275. for /l %%h in (1,1,17) do (set X%%hY14= )
  276. for %%k in (%Init%) do (set %%k=%Line%)
  277. for /f "tokens=1 delims=," %%j in ("%Init%") do (set %%j=%Ball%)
  278. set Action=Paused
  279. Goto :Eof
  280.  
  281. :Lost
  282. msg * Perdiste !
  283.  
  284. :End
  285. msg * Gracias por Jugar PingPong v1 by :: SmartGenius::
  286. endlocal
  287. exit
  288.  
  289. ::Niveles del Juego PingPong
  290. ::Coordenadas Cartesianas
  291. ::Coded by :: SmartGenius ::
  292.  
  293. ::Inicio Nivel 1
  294. :Level1
  295. set Movs=0
  296. set Points=0
  297. set PPC=0
  298. set CurPos=X8Y13
  299. set Table=X10Y14,X9Y14,X8Y14,X7Y14,X6Y14
  300. set MaxTable=X17Y14,X16Y14,X15Y14,X14Y14,X13Y14
  301. set MinTable=X5Y14,X4Y14,X3Y14,X2Y14,X1Y14
  302. set Init=X8Y13,X6Y14,X7Y14,X8Y14,X9Y14,X10Y14
  303. set Lives=3
  304. set Dir=N
  305. set Action=Paused
  306. set NextMov=Diag3
  307. for /l %%e in (%LBound%,1,%RBound%) do (set X%%eY1=.)
  308. for /l %%f in (6,1,10) do (set X%%fY2=%Bound%)
  309. for %%k in (%Init%) do (set %%k=%Line%)
  310. for /f "tokens=1 delims=," %%j in ("%Init%") do (set %%j=%Ball%)
  311. for /l %%i in (0,1,%LimX%) do (
  312. set X0Y%%i=%Bound%
  313. set X%LimX%Y%%i=%Bound%
  314. set X%%iY0=%Bound%
  315. set X%%iY%LimY%=%Bound%)
  316. rem for /l %%l in (2,1,16) do (set X%%lY2=%Block%)
  317. rem for /l %%m in (4,1,14) do (set X%%mY3=%Block%)
  318. rem for /l %%n in (6,1,12) do (set X%%nY4=%Block%)
  319. rem for /l %%o in (8,1,10) do (set X%%oY5=%Block%)
  320. for /l %%r in (1,1,17) do (set X%%rY15=%Lost%)
  321. Goto :Eof
  322.  
  323. ::Fin Nivel 1
  324.  
  325. ::Fin de Coordenadas
  326.  
  327. :Logo
  328. cls
  329. echo.
  330. echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  331. echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  332. echo. °ÛÛÛÛ°°Û°°ÛÛ°°°Û°°°ÛÛÛÛ°°°
  333. echo. °Û°°Û°°Û°°Û°Û°°Û°°Û°°°°°°°
  334. echo. °Û°°Û°°Û°°Û°°Û°Û°°Û°°°°°°°
  335. echo. °ÛÛÛÛ°°Û°°Û°°Û°Û°°Û°°ÛÛ°°°
  336. echo. °Û°°°°°Û°°Û°°°ÛÛ°°Û°°°Û°°°
  337. echo. °Û°°°°°Û°°Û°°°°Û°°°ÛÛÛÛ°°°
  338. echo. °°°°°°°°°°°±°°°°°°°°°°°°°°
  339. echo. °°°°°°°°°°±°°±°°°°°°°°°°°°
  340. echo. °°°°°°°°°±°°±°°°±°°°°°°°°°
  341. echo. °ÛÛÛÛ°°²²°°±ÛÛ°±°Û°°ÛÛÛÛ°°
  342. echo. °Û°°Û°²ÛÛ²±°Û°Û°°Û°Û°°°°°°
  343. echo. °Û°°Û°ÛÛÛÛ°°Û±°Û°Û°Û°°°°°°
  344. echo. °ÛÛÛÛ°ÛÛÛÛ°±Û°°Û°Û°Û°°°ÛÛ°
  345. echo. °Û°°°°²ÛÛ²±°Û°°°ÛÛ°Û°°°°Û°
  346. echo. °Û°°°°°²²°°°Û°°°°Û°°ÛÛÛÛ°°
  347. echo. °°°ÛÛÛÛÛÛÛ°°°°°°°°°°°°°°°°
  348. echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  349. echo. °°°°°: SmartGenius :°°°°°°
  350. echo. °°°°° Corp. 2009 °°°°°°
  351. echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  352. ping -n 3 0.0.0.0 >nul
  353. Goto :Eof
  354.  
  355.  
  356. :NoKey
  357. @mode con cols=30 lines=20
  358. cls
  359. echo.
  360. echo Uno de los archivos necesarios para el
  361. echo funcionamiento de este Script no se
  362. echo encuentra.
  363. echo.
  364. echo CHOICE.COM
  365. echo.
  366. echo Por favor descargue una copia del Comando
  367. echo CHOICE de Internet...
  368. echo.
  369. pause
  370. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement