Advertisement
SmartGenius

Tetris Batch Game

May 18th, 2012
7,836
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 10.32 KB | None | 0 0
  1. @Echo off
  2. @title Tetris v 1
  3. @mode con cols=28 lines=24
  4.  
  5. :: Batch Game - Tetris v 1
  6. :: Proof Of Concept
  7. :: Coded by SmartGenius
  8. :: SmartGenius, Corp. 2010
  9.  
  10. Choice /N /T:Y,1 >Nul 2>&1
  11. If "%Errorlevel%"=="9009" (Echo. CHOICE command not found&Pause&Exit)
  12.  
  13. Set "Game=%0"
  14.  
  15. Call :Logo
  16.  
  17. :Menu
  18. Cls
  19. Echo.
  20. Echo.
  21. Echo. Tetris v 1 by SmartGenius
  22. Echo. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  23. Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
  24. Echo. ³1.³ ³Play TETRIS ³
  25. Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
  26. Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
  27. Echo. ³2.³ ³How to Play ³
  28. Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
  29. Echo. ÚÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
  30. Echo. ³3.³ ³Exit Game   ³
  31. Echo. ÀÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
  32. Echo.
  33. CHOICE /C:123 /N >nul
  34. If "%errorlevel%"=="1" (Goto :Load)
  35. If "%errorlevel%"=="2" (Goto :Help)
  36. If "%errorlevel%"=="3" (Goto :End)
  37. Goto :Menu
  38.  
  39. :Load
  40. Setlocal enabledelayedexpansion
  41. Set /a "LimX=18","LimY=16","TBound=1","LBound=0","Turn=1","Points=0"
  42. Set /a "RBound=%LimX%","BBound=%LimY%"
  43.  
  44. :Init
  45. For /l %%a in (0,1,%LimX%) do (
  46. For /l %%b in (0,1,%LimY%) do (
  47. Set "X%%aY%%b= "))
  48. Set "Bound=Û"
  49. Set "Bound2=²"
  50.  
  51. :Main
  52. Set /a "L=(%Random% %% 7)+1"
  53. Call :Figure%L%
  54. Call :Graphic
  55. Goto :Main
  56.  
  57. :Graphic
  58. If "%New_F%"=="True" (
  59. Call :Solid
  60. Set "New_F=False"
  61. Goto :Eof
  62. )
  63. Call :Clear
  64. Cls
  65. Echo.
  66. Echo.  Tetris v 1 by SmartGenius
  67. Echo.
  68. Echo.   Points:%Points%
  69. Echo.   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  70. For /l %%f in (0,1,%LimY%) do (Echo.   º!Lin_%%f!º)
  71. Echo.   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  72. Call :Move
  73. Goto :Graphic
  74.  
  75. :Move
  76. :: Normal CHOICE (provided into ZIP package)
  77. CHOICE /C:SADRXC /N >nul
  78. :: Windows 7 or x64 system CHOICE (uncomment)
  79. REM CHOICE /C SADRXC /N
  80. If "%errorlevel%"=="1" (Call :Down)
  81. If "%errorlevel%"=="2" (Call :Left)
  82. If "%errorlevel%"=="3" (Call :Rigth)
  83. If "%errorlevel%"=="4" (Call :Rotate)
  84. If "%errorlevel%"=="5" (Goto :Menu)
  85. If "%errorlevel%"=="6" (Call :MovCR)
  86. ::Descomentar para doble movimiento
  87. REM Call :Down
  88. Call :CheckL2
  89. Goto :Eof
  90.  
  91. ::::::::::::::::::::::::::::::::::::::::
  92. :Solid
  93. For %%a in (%Table%) do (Set "%%a=%Bound2%")
  94. Goto :Eof
  95.  
  96. :Rotate
  97. Set "TmpTB="
  98. If "%XToken%"=="11" (Set "XToken=10")
  99. If "%YToken%"=="15" (Set "XToken=14")
  100. Set /a "NextRotate=(%RotateLevel% %% 4)+1"
  101. Set "TmpTable=!Figure%CurFig%_Pos%NextRotate%!
  102. For %%R in (%TmpTable%) do (
  103. Call :MovR "%YToken%" "%XToken%" "%%R" "Val"
  104. Call Set "TmpTB=!TmpTB!,!Val!"
  105. )
  106. For %%c in (%TmpTB:~1%) do (
  107. If "!%%c!"=="%Bound2%" (
  108. For %%b in (%Table%) do (Set "%%b=%Bound%")
  109. Goto :Eof
  110. ))
  111. For %%a in (%Table%) do (Set "%%a= ")
  112. Set "Table=%TmpTB:~1%"
  113. For %%b in (%Table%) do (Set "%%b=%Bound%")
  114. Set /a "RotateLevel+=1"
  115. Goto :Eof
  116.  
  117. :MovR
  118. For /f "tokens=1,2 delims=X,Y" %%p in ("%~3") do (
  119. Set /a MovY=%%q+%~1
  120. Set /a MovX=%%p+%~2
  121. Set "%~4=X!MovX!Y!MovY!"
  122. Set "%~3= ")
  123. Goto :Eof
  124.  
  125. :::::::::::::::::::::::::::::::::::::::::::
  126. :Down
  127. Set "TmpTB="
  128. Set "TmpTable=%Table%"
  129. For %%a in (%TmpTable%) do (
  130. Echo.!TmpTable!|Find "Y%BBound%">nul
  131. If !Errorlevel! EQU 0 (Set "New_F=True"&Goto :Eof)
  132. Call :MovYR "1" "%%a" "Val"
  133. Call Set "TmpTB=!TmpTB!,!Val!"
  134. )
  135. For %%c in (%TmpTB:~1%) do (
  136. If "!%%c!"=="%Bound2%" (
  137. Set "New_F=True"
  138. For %%b in (%Table%) do (Set "%%b=%Bound%")
  139. Goto :Eof
  140. ))
  141. Set "Table=%TmpTB:~1%"
  142. For %%d in (%Table%) do (Set "%%d=%Bound%")
  143. Set /a "YToken+=1"
  144. Goto :Eof
  145.  
  146. :MovYR
  147. For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
  148. Set /a MovY=%%q+%~1
  149. Set "%~3=X%%pY!MovY!"
  150. Set "%~2= ")
  151. Goto :Eof
  152.  
  153. :MovCR
  154. Cls
  155. Echo.
  156. Echo.
  157. Call :L2 "Goto :Eof"
  158. Echo.
  159. For /f "tokens=2 skip=3" %%c in ('find "::_0" %Game%') do (
  160. Set "Tmp_Var=%%c"
  161. Call :Key.A Tmp_Var
  162. Echo. !Tmp_Var!
  163. )
  164. Pause >nul
  165. Goto :Eof
  166. ::::::::::::::::::::::::::::::::::::::::
  167.  
  168. ::::::::::::::::::::::::::::::::::::::::
  169. :Rigth
  170. Set "TmpTB="
  171. Set "TmpTable=%Table%"
  172. For %%a in (%TmpTable%) do (
  173. Echo.!TmpTable!|Find "X%RBound%">nul
  174. If !Errorlevel! EQU 0 (Goto :Eof)
  175. Call :MovXR "+1" "%%a" "Val"
  176. Call Set "TmpTB=!TmpTB!,!Val!"
  177. )
  178. For %%c in (%TmpTB:~1%) do (
  179. If "!%%c!"=="%Bound2%" (
  180. For %%b in (%Table%) do (Set "%%b=%Bound%")
  181. Goto :Eof
  182. ))
  183. Set "Table=%TmpTB:~1%"
  184. For %%d in (%Table%) do (Set "%%d=%Bound%")
  185. Set /a "XToken+=1"
  186. Goto :Eof
  187.  
  188. :Left
  189. Set "TmpTB="
  190. Set "TmpTable=%Table%"
  191. For %%a in (%TmpTable%) do (
  192. Echo.!TmpTable!|Find "X%LBound%">nul
  193. If !Errorlevel! EQU 0 (Goto :Eof)
  194. Call :MovXR "-1" "%%a" "Val"
  195. Call Set "TmpTB=!TmpTB!,!Val!"
  196. )
  197. For %%c in (%TmpTB:~1%) do (
  198. If "!%%c!"=="%Bound2%" (
  199. For %%b in (%Table%) do (Set "%%b=%Bound%")
  200. Goto :Eof
  201. ))
  202. Set "Table=%TmpTB:~1%"
  203. For %%d in (%Table%) do (Set "%%d=%Bound%")
  204. Set /a "XToken-=1"
  205. Goto :Eof
  206.  
  207. :MovXR
  208. For /f "tokens=1,2 delims=X,Y" %%p in ("%~2") do (
  209. Set /a MovX=%%p%~1
  210. Set "%~3=X!MovX!Y%%q"
  211. Set "%~2= ")
  212. Goto :Eof
  213.  
  214. ::::::::::::::::::::::::::::::::::::::::
  215.  
  216. :CheckL2
  217. If "!Lin_1!"=="²²²²²²²²²²²²²²²²²²²" (Goto :Lost)
  218. If "!Lin_%LimY%!"=="²²²²²²²²²²²²²²²²²²²" (
  219. Call :Clear
  220. For /l %%x in (0,1,%LimX%) do (
  221. For /l %%y in (%LimY%,-1,1) do (
  222. Set /a "UpLine=%%y-1"
  223. Call Set "X%%xY%%y=%%X%%xY!UpLine!%%"
  224. ))
  225. Set /a "Points+=100"
  226. For /l %%d in (0,1,%LimX%) do (Set "X%%dY0= ")
  227. Goto :CheckL2
  228. )
  229. Goto :Eof
  230.  
  231. :::::::::::::::::::::::::::::::::::::::::
  232.  
  233. :Key.A
  234. If not defined %1 Goto:Eof
  235. Set "c="
  236. Set "d=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =/\()[]{}_-.:,;* @#"
  237. :Key.B
  238. Set "chr=!%1:~,1!"
  239. For /l %%l in (0 1 80) do if "!chr!" equ "!d:~%%l,1!" (
  240.   set /a "x=%%l^5"
  241.   call set "c=!c!%%d:~!x!,1%%"
  242. )
  243. Set "%1=!%1:~1!"
  244. If defined %1 goto:Key.B
  245. Set "%1=!c!"
  246. Goto :Eof
  247. :::::::::::::::::::::::::::::::::::::::::
  248.  
  249. :Clear
  250. For /l %%m in (0,1,%LimY%) do (Set Lin_%%m=)
  251. For /l %%d in (0,1,%LimY%) do (
  252. For /l %%e in (0,1,%LimX%) do (
  253. Set Lin_%%d=!Lin_%%d!!X%%eY%%d!))
  254. Goto :Eof
  255.  
  256. :Lost
  257. Cls
  258. Echo.
  259. Echo.  Tetris v 1 by SmartGenius
  260. Echo.
  261. Echo.     Points:%Points%
  262. Echo.        Perdiste !
  263. Goto :End
  264.  
  265. :Win
  266. Cls
  267. Echo.
  268. Echo.  Tetris v 1 by SmartGenius
  269. Echo.
  270. Echo.     Points:%Points%
  271. Echo.      Has Ganado !
  272. Goto :End
  273.  
  274. :End
  275. Echo.     Gracias por Jugar
  276. Echo.  Tetris v1 by SmartGenius
  277. Endlocal
  278. Ping -n 3 localhost >nul
  279. Exit
  280.  
  281. ::::::::::::::::::::::::::::::::::::::::::
  282. :Figure1
  283. Set Figure1_Pos1=X6Y2,X6Y1,X7Y1,X7Y0
  284. Set Figure1_Pos2=X7Y1,X8Y1,X6Y0,X7Y0
  285. Set Figure1_Pos3=X6Y2,X6Y1,X7Y1,X7Y0
  286. Set Figure1_Pos4=X7Y1,X8Y1,X6Y0,X7Y0
  287. Set /a "R=(%Random% %% 4)+1"
  288. Set Table=!Figure1_Pos%R%!
  289. For %%b in (%Table%) do (Set "%%b=%Bound%")
  290. Set /a "XToken=0","YToken=0","CurFig=1","RotateLevel=%R%"
  291. Goto :Eof
  292.  
  293. :Figure2
  294. Set Figure2_Pos1=X7Y2,X6Y1,X7Y1,X6Y0
  295. Set Figure2_Pos2=X6Y1,X7Y1,X7Y0,X8Y0
  296. Set Figure2_Pos3=X7Y2,X6Y1,X7Y1,X6Y0
  297. Set Figure2_Pos4=X6Y1,X7Y1,X7Y0,X8Y0
  298. Set /a "R=(%Random% %% 4)+1"
  299. Set Table=!Figure2_Pos%R%!
  300. For %%b in (%Table%) do (Set "%%b=%Bound%")
  301. Set /a "XToken=0","YToken=0","CurFig=2","RotateLevel=%R%"
  302. Goto :Eof
  303.  
  304. :Figure3
  305. Set Figure3_Pos1=X7Y1,X8Y1,X7Y0,X8Y0
  306. Set Figure3_Pos2=X7Y1,X8Y1,X7Y0,X8Y0
  307. Set Figure3_Pos3=X7Y1,X8Y1,X7Y0,X8Y0
  308. Set Figure3_Pos4=X7Y1,X8Y1,X7Y0,X8Y0
  309. Set /a "R=(%Random% %% 4)+1"
  310. Set "Table=!Figure3_Pos%R%!"
  311. For %%b in (%Table%) do (Set "%%b=%Bound%")
  312. Set /a "XToken=0","YToken=0","CurFig=3","RotateLevel=%R%"
  313. Goto :Eof
  314.  
  315. :Figure4
  316. Set Figure4_Pos1=X6Y1,X7Y1,X8Y1
  317. Set Figure4_Pos2=X7Y2,X7Y1,X7Y0
  318. Set Figure4_Pos3=X6Y1,X7Y1,X8Y1
  319. Set Figure4_Pos4=X7Y2,X7Y1,X7Y0
  320. Set /a "R=(%Random% %% 4)+1"
  321. Set Table=!Figure4_Pos%R%!
  322. For %%b in (%Table%) do (Set "%%b=%Bound%")
  323. Set /a "XToken=0","YToken=0","CurFig=4","RotateLevel=%R%"
  324. Goto :Eof
  325.  
  326. :Figure5
  327. Set Figure5_Pos1=X6Y1,X7Y1,X8Y1,X7Y0
  328. Set Figure5_Pos2=X7Y2,X7Y1,X8Y1,X7Y0
  329. Set Figure5_Pos3=X7Y1,X6Y0,X7Y0,X8Y0
  330. Set Figure5_Pos4=X8Y2,X7Y1,X8Y1,X8Y0
  331. Set /a "R=(%Random% %% 4)+1"
  332. Set Table=!Figure5_Pos%R%!
  333. For %%b in (%Table%) do (Set "%%b=%Bound%")
  334. Set /a "XToken=0","YToken=0","CurFig=5","RotateLevel=%R%"
  335. Goto :Eof
  336.  
  337. :Figure6
  338. Set Figure6_Pos1=X6Y1,X6Y0,X7Y0,X8Y0
  339. Set Figure6_Pos2=X8Y2,X8Y1,X8Y0,X7Y0
  340. Set Figure6_Pos3=X6Y1,X7Y1,X8Y1,X8Y0
  341. Set Figure6_Pos4=X6Y2,X7Y2,X6Y1,X6Y0
  342. Set /a "R=(%Random% %% 4)+1"
  343. Set Table=!Figure6_Pos%R%!
  344. For %%b in (%Table%) do (Set "%%b=%Bound%")
  345. Set /a "XToken=0","YToken=0","CurFig=6","RotateLevel=%R%"
  346. Goto :Eof
  347.  
  348. :Figure7
  349. Set Figure7_Pos1=X8Y1,X6Y0,X7Y0,X8Y0
  350. Set Figure7_Pos2=X7Y2,X8Y2,X8Y1,X8Y0
  351. Set Figure7_Pos3=X6Y1,X7Y1,X8Y1,X6Y0
  352. Set Figure7_Pos4=X6Y2,X6Y1,X6Y0,X7Y0
  353. Set /a "R=(%Random% %% 4)+1"
  354. Set Table=!Figure7_Pos%R%!
  355. For %%b in (%Table%) do (Set "%%b=%Bound%")
  356. Set /a "XToken=0","YToken=0","CurFig=7","RotateLevel=%R%"
  357. Goto :Eof
  358.  
  359. ::_0 xx9tYjYxWvxPrXmoLjqfzpxx
  360. ::_0 xxxxxXhXxLBINRPFGBaxxxxxx
  361. ::_0 xxxxxxxxxxxxxxxxxxxxxxxxx
  362. ::_0 xxxxx8jYfZXojYxOtxJvxxxxx
  363. ::_0 EjXzofizgxLfmgimfjqYx9GVJ
  364. ::_0 xxxJvx8XmgfqlxNxGtyjxRxxx
  365. ::_0 xxxxxxxxxxxxxxxxxxxxxxxxx
  366. ::_0 xPrXmoLjqfzpx9tms-x7545xxx
  367.  
  368. :Help
  369. Cls
  370. Echo.
  371. Call :L2 "Goto :Eof"
  372. Echo.
  373. Echo. How to Play Batch Tetris ?
  374. Echo.
  375. Echo. Use keys A,S,D,R,X
  376. Echo.
  377. Echo. A = Move Shape Left
  378. Echo. S = Move Shape Down
  379. Echo. D = Move Shape Rigth
  380. Echo. R = Rotate Shape
  381. Echo. X = Back to Menu Game
  382. Echo.
  383. Echo.
  384. Pause >nul
  385. Goto :Menu
  386.  
  387. :Logo
  388. Cls
  389. Color 0b
  390. Echo.
  391. Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  392. Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  393. :L2
  394. Echo. °°ÛÛÛ°ÛÛÛ°ÛÛÛ°ÛÛ°°Û°°ÛÛ°°°
  395. Echo. °°°Û°°Û°°°°Û°°Û°Û°Û°Û°°°°°
  396. Echo. °°°Û°°ÛÛÛ°°Û°°ÛÛ°°Û°°Û°°°°
  397. Echo. °°°Û°°Û°°°°Û°°Û°Û°Û°°°Û°°°
  398. Echo. °°°Û°°ÛÛÛ°°Û°°Û°Û°Û°ÛÛ°°°°
  399. %~1
  400. Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  401. Echo. °°±°°°°°°°°°²°°°°°°°°°°±°°
  402. Echo. °°±°²°°°²²°°²²°°°²²²°°°±°°
  403. Echo. °°±°²²°°°²°°²°°°°°°°°°°±°°
  404. Echo. °°±°°²°°°²°°°°°°²²°°°°°±°°
  405. Echo. °°±°°°°°°°°°°°°°°²²°°°°±°°
  406. Echo. °°±°°°°°°°°²°°°°°°°°°°°±°°
  407. Echo. °°±²°°°°°°°²²²°°°°°°°°°±°°
  408. Echo. °°±²°°²²°°°°°°°²°°°°°°²±°°
  409. Echo. °°±²°°²²°°°°°°²²²°°°²²²±°°
  410. Echo. °°±±±±±±±±±±±±±±±±±±±±±±°°
  411. Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  412. Echo. °°°°°: SmartGenius :°°°°°°
  413. Echo. °°°°°  Corp.  2010  °°°°°°
  414. Echo. °°°°°°°°°°°°°°°°°°°°°°°°°°
  415. Ping -n 3 0.0.0.0 >nul
  416. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement