SmartGenius

F1 Cars (PoC) Batch game

May 18th, 2012
1,692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.26 KB | None | 0 0
  1. @Echo off
  2. @title Cars
  3. @mode con cols=15 lines=13
  4. ::Batch Game F1 Cars
  5. ::Coded by SmartGenius
  6.  
  7. setlocal enabledelayedexpansion
  8.  
  9. If Not Exist "keyboard.exe" (Call :NoKey)
  10.  
  11. :Menu
  12. Cls
  13. Echo.
  14. Echo.  F1 Car Game
  15. Echo.
  16. Echo.   Presione
  17. Echo.    Enter
  18. Echo.
  19. Pause >nul
  20.  
  21. :Vars
  22. Set "LimX=10"
  23. Set "LimY=10"
  24. Set "LimI=3"
  25. Set "LimD=9"
  26. Set "Last= "
  27. Set "CurPos=X3Y3"
  28.  
  29. :Init
  30. Call :Level
  31. For /l %%a in (0,1,%LimX%) do (
  32. For /l %%b in (0,1,%LimY%) do (
  33. Set X%%aY%%b=!Lin_%%a:~%%b,1!))
  34. Set "Car=X3Y3,X2Y2,X4Y2,X3Y2,X3Y1,X2Y0,X4Y0"
  35. For %%a in (%Car%) do (Set "%%a=Û")
  36.  
  37. :Graphic
  38. Call :Clear
  39. For /l %%d in (0,1,%LimX%) do (
  40. For /l %%e in (0,1,%LimY%) do (
  41. Set LN_%%d=!LN_%%d!!X%%eY%%d!))
  42. Echo.  F1 Car Game
  43. For /l %%f in (%LimY%,-1,0) do (echo. -!LN_%%f!-)
  44. keyboard
  45. if "%errorlevel%"=="77" (call :Mov_D)
  46. if "%errorlevel%"=="75" (call :Mov_I)
  47. if "%errorlevel%"=="27" (Exit)
  48. Call :Abajo
  49. Call :Colision "%CurPos%" "%Car2%" "%Car3%"
  50. Goto :Graphic
  51.  
  52. :Mov_D
  53. If "%BoundD%"=="True" Goto :Eof
  54. Set "BoundI=False"
  55. Set "P=0"
  56. For %%a in (%Car%) do (
  57. Set /a P+=1
  58. Call :MovX+ %%a Car!P!
  59. )
  60. Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
  61. Set "CurPos=%Car1%"
  62. Goto :Eof
  63.  
  64. :Mov_I
  65. If "%BoundI%"=="True" Goto :Eof
  66. Set "BoundD=False"
  67. Set "P=0"
  68. For %%a in (%Car%) do (
  69. Set /a P+=1
  70. Call :MovX- %%a Car!P!
  71. )
  72. Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
  73. Set "CurPos=%Car1%"
  74. Goto :Eof
  75.  
  76. :MovX+
  77. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  78. if !%~1!==Û set %~1=%Last%
  79. set /a MovX=%%p+1
  80. call set Last=%%X!MovX!Y%%q%%
  81. If "%Last%"=="²" (Goto :Lost)
  82. set X!MovX!Y%%q
  83. set %2=X!MovX!Y%%q
  84. if !P!==7 (if "%%p"=="%LimD%" Set BoundD=True)
  85. )
  86. Goto :Eof
  87.  
  88. :MovX-
  89. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  90. if !%~1!==Û set %~1=%Last%
  91. set /a MovX=%%p-1
  92. call set Last=%%X!MovX!Y%%q%%
  93. If "%Last%"=="²" (Goto :Lost)
  94. set X!MovX!Y%%q
  95. set %2=X!MovX!Y%%q
  96. if !P!==7 (if "%%p"=="%LimI%" Set BoundI=True)
  97. )
  98. Goto :Eof
  99.  
  100. :Abajo
  101. If "%Mov%"=="55" Goto :Win
  102. Set /a Mov=Mov+1
  103. For /l %%d in (0,1,%LimY%) do (Set LN_%%d=!Lin_%%d:~%Mov%!)
  104. For /l %%a in (0,1,%LimX%) do (
  105. For /l %%b in (0,1,%LimY%) do (
  106. Set X%%aY%%b=!LN_%%a:~%%b,1!))
  107. For %%c in (%Car%) do (Set "%%c=Û")
  108. Goto :Eof
  109.  
  110. :Colision
  111. If "%~1"=="" (Goto :Eof)
  112. for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
  113. set /a MovY=%%q+1
  114. call set NMovY=%%X%%pY!MovY!%%
  115. if "!NMovY!"=="²" (Goto :Lost)
  116. )
  117. Shift
  118. Goto :Colision
  119.  
  120. :Lost
  121. cls
  122. Echo.
  123. Echo.    Te has
  124. Echo.  Estrellado
  125. Echo.
  126. Echo.
  127. Ping -n 3 0.0.0.0 >nul
  128. msg * Gracias por Jugar F1 Cars
  129. Exit
  130.  
  131. :Win
  132. Cls.
  133. Echo.
  134. Echo. Has Ganado!
  135. Echo.
  136. Echo. Felicidades
  137. Echo.
  138. Echo.
  139. Ping -n 3 0.0.0.0 >nul
  140. msg * Gracias por Jugar F1 Cars
  141. Exit
  142.  
  143. :Clear
  144. For /l %%m in (0,1,%LimX%) do (set LN_%%m=)
  145. Goto :Eof
  146.  
  147. :Level
  148. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  149. Set Lin_0=        ² ²             ² ²              ² ²              +        
  150. Set Lin_1=         ²²²             ²²²              ²²²             +        
  151. Set Lin_2=        ² ²             ² ²              ² ²              +        
  152. Set Lin_3=                                                          +        
  153. Set Lin_4=        ² ²                                  ² ²          +        
  154. Set Lin_5=         ²²²                     ² ²          ²²²         +        
  155. Set Lin_6=        ² ²                       ²²²        ² ²          +        
  156. Set Lin_7=                                 ² ²                      +        
  157. Set Lin_8=                  ² ²   ² ²  ² ²                          +        
  158. Set Lin_9=                   ²²²   ²²²  ²²²                         +        
  159. Set Lin_10=                  ² ²   ² ²  ² ²                          +      
  160. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  161. Goto :Eof
  162.  
  163. :NoKey
  164. Cls
  165. echo.
  166. echo. Cargando...
  167. call :Keyboard
  168. Goto :Eof
  169.  
  170. :Keyboard
  171. (
  172. echo n keyboard.dat
  173. echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
  174. echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
  175. echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
  176. echo rcx
  177. echo 002E
  178. echo w0
  179. echo q
  180. echo.
  181. )>keyboard.dat
  182. type keyboard.dat|debug>NUL 2>&1
  183. del /f/q/a "keyboard.exe">NUL 2>&1
  184. ren keyboard.dat "keyboard.exe"
  185. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment