home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / COMMUNIC / CA24_1.ZIP / SCRIPTS.ZIP / BREAKOUT.CMD < prev    next >
Encoding:
Text File  |  1988-09-22  |  4.9 KB  |  329 lines

  1. ; Initialize
  2. GOSUB Init
  3. SET FLAG OFF
  4. ; Move the ball until keypress or obstruction
  5. Ball:
  6. IF GE N1 79
  7.    N1 = 79
  8.    N3 = -1
  9.    ENDIF
  10. IF LE N1 0
  11.    N1 = 0
  12.    N3 = 1
  13.    ENDIF
  14. IF HITKEY
  15.    GOTO Paddle
  16.    ENDIF
  17. N4 = N0
  18. N5 = N1
  19. N0 = N0+N2
  20. N1 = N1+N3
  21. SWIT N4
  22.   CASE 1
  23.   ATSAY N4,N5 (Blac,blue) S4
  24.   ENDC
  25.   CASE 2
  26.   ATSAY N4,N5 (Blac,cyan) S4
  27.   ENDC
  28.   CASE 3
  29.   ATSAY N4,N5 (Blac,yell) S4
  30.   ENDC
  31.   CASE 4
  32.   ATSAY N4,N5 (Blac,red) S4
  33.   ENDC
  34.   CASE 22
  35.   ATSAY N4,N5 (Blac,Gree) S4
  36.   ENDC
  37.   DEFA
  38.   ATSAY N4,N5 (Blac,Whit) S4
  39.   ENDC
  40. ENDS
  41. ATSCR N0,N1 1 S4
  42. N4 = N0
  43. N5 = N1
  44. ATSAY N0,N1 (Blac,Whit) "o"
  45. IF LE N0,0
  46.    GOTO Hit_Top
  47.    ENDIF
  48. IF LT N0 5
  49.    GOTO In_Bricks
  50.    ENDIF
  51. SET FLAG OFF
  52. IF GE N0,22
  53.    GOTO On_Paddle
  54.    ENDIF
  55. IF LE N1,0
  56.    GOTO Wall
  57.    ENDIF
  58. IF GE N1,79
  59.    GOTO Wall
  60.    ENDIF
  61. GOTO Ball
  62. ;
  63. ;    We've hit the top
  64. ;
  65. Hit_Top:
  66. N2 = -N2
  67. SET FLAG ON
  68. GOTO Ball
  69. ;
  70. ;    We've hit the left or right wall
  71. ;
  72. Wall:
  73. N3 = -N3
  74. SOUND 100 10
  75. IF GE N0 4 ; test in bricks
  76.    GOTO Ball
  77.    ENDIF
  78. ;
  79. ;    We're in the bricks
  80. ;
  81. In_Bricks:
  82. IF NULL S4
  83.    GOTO Ball
  84.    ENDIF
  85. IF GT N2 0 ; going down
  86.    GOTO Breakout
  87.    ENDIF
  88. ;
  89. ;    Take a brick
  90. ;
  91. Take_Brick:
  92. N8 = (N1/4)*4
  93. N7 = N8+3
  94. SWIT N0
  95.    CASE  1
  96.    S0(N8:N7) = "    "
  97.    S3(N1:N1) = "o"
  98.    ATSAY 1,N8 (Blac,Blue) S0(N8:N7)
  99.    SOUND 4000 1
  100.    N10 = N10+4
  101.    ENDC
  102.  
  103.    CASE  2
  104.    S1(N8:N7) = "    "
  105.    S3(N1:N1) = "o"
  106.    ATSAY 2,N8 (Blac,cyan) S1(N8:N7)
  107.    SOUND 2000 1
  108.    N10 = N10+3
  109.    ENDC
  110.  
  111.    CASE  3
  112.    S2(N8:N7) = "    "
  113.    S3(N1:N1) = "o"
  114.    ATSAY 3,N8 (Blac,yell) S2(N8:N7)
  115.    SOUND 1000 1
  116.    N10 = N10+2
  117.    ENDC
  118.  
  119.    CASE  4
  120.    S3(N8:N7) = "    "
  121.    S3(N1:N1) = "o"
  122.    ATSAY 4,N8 (Blac,red ) S3(N8:N7)
  123.    SOUND 500 1
  124.    N10 = N10+4
  125.    ENDC
  126. ENDS
  127. S4 = " "
  128. N2 = -N2
  129. GOTO Ball
  130. ;
  131. ;    We have a breakout
  132. ;
  133. Breakout:
  134. IF NOT FLAG
  135.    GOTO Ball
  136.    ENDIF
  137. SWIT N0
  138.    CASE  1
  139.    ENDC
  140.  
  141.    CASE  2
  142.    N8 = N1+N3
  143.    IF NULL S2(N8:N8)
  144.       N2 = -N2
  145.       ENDIF
  146.    ENDC
  147.  
  148.    CASE  3
  149.    N8 = N1+N3
  150.    IF NULL S3(N8:N8)
  151.       N2 = -N2
  152.       ENDIF
  153.    ENDC
  154.  
  155.    CASE  4
  156.    N2 = -N2
  157.    ENDC
  158. ENDS
  159. GOTO Take_Brick
  160. ;
  161. ;    We're on the paddle line
  162. ;
  163. On_Paddle:
  164. N8 = N9-1
  165. IF EQ N1 N8
  166.    GOTO Reverse
  167.    ENDIF
  168. N8 = N9+4
  169. IF EQ N1 N8
  170.    GOTO Reverse
  171.    ENDIF
  172. IF EQ N1 N9
  173.    GOTO English
  174.    ENDIF
  175. N8 = N9+3
  176. IF EQ N1 N8
  177.    GOTO English
  178.    ENDIF
  179. IF LT N1 N9
  180.    GOTO Missed
  181.    ENDIF
  182. IF GT N1 N8
  183.    GOTO Missed
  184.    ENDIF
  185. ;
  186. ;    Hit on the paddle
  187. ;
  188. SOUND 300 10
  189. N2 = -N2
  190. IF LT N3 0
  191.    N3 = -1
  192. ELSE
  193.    N3 = 1
  194. ENDIF
  195. GOTO Ball
  196. ;
  197. ;    Give some english
  198. ;
  199. English:
  200. SOUND 300 10
  201. N2 = -N2
  202. IF LT N3 0
  203.    N3 = N3-1
  204. ELSE
  205.    N3 = N3+1
  206. ENDIF
  207. GOTO Ball
  208. ;
  209. ;    Return the ball
  210. ;
  211. Reverse:
  212. SOUND 200 10
  213. N2 = -N2
  214. N3 = -N3
  215. GOTO Ball
  216. ;
  217. ;    Move the paddle
  218. ;
  219. Paddle:
  220. KEYGET S7
  221. IF STRCMP S7(0:3) "4D00"
  222.    GOTO Right_Paddle
  223.    ENDIF
  224. IF STRCMP S7(0:3) "4B00"
  225.    GOTO Left_Paddle
  226.    ENDIF
  227. GOTO Ball
  228. ;
  229. ;    Move the paddle right
  230. ;
  231. Right_Paddle:
  232. ATSAY 22,N9 (Blac,Gree) "    "
  233. IF LT N9 76
  234.    N9 = N9+3
  235. ELSE
  236.    N9 = 76
  237.    ENDIF
  238. ATSAY 22,N9 (Blac,Gree) "____"
  239. IF HITKEY
  240.    GOTO Paddle
  241.    ENDIF
  242. GOTO Ball
  243. ;
  244. ;    Move the paddle left
  245. ;
  246. Left_Paddle:
  247. ATSAY 22,N9 (Blac,Gree) "    "
  248. IF GT N9 3
  249.    N9 = N9-3
  250. ELSE
  251.    N9 = 0
  252.    ENDIF
  253. ATSAY 22,N9 (Blac,Gree) "____"
  254. IF HITKEY
  255.    GOTO Paddle
  256.    ENDIF
  257. GOTO Ball
  258. ;
  259. ;    Missed the ball with the paddle
  260. ;
  261. Missed:
  262. N10 = N10/40 ; 200 max
  263. SWIT N10
  264.    CASE 0
  265.    SOUND 50 100
  266.    ATSAY 22,0 (Blac,gree) "Too bad..."
  267.    ENDC
  268.    CASE 1
  269.    ATSAY 22,0 (Blac,gree) "Not bad..."
  270.    SOUND 50 100
  271.    ENDC
  272.    CASE 2
  273.    ATSAY 22,0 (Blac,gree) "Better than average..."
  274.    ALARM
  275.    ENDC
  276.    CASE 3
  277.    ATSAY 22,0 (Blac,gree) "Real good..."
  278.    SOUND 100,100
  279.    ENDC
  280.    CASE 4
  281.    ATSAY 22,0 (Blac,gree) "Why did you stop?"
  282.    SOUND 100,100
  283.    ENDC
  284.    CASE 5
  285.    ATSAY 22,0 (Blac,gree) "WOW..."
  286.    ALARM
  287.    ENDC
  288. ENDS
  289. EXIT
  290. ;
  291. ;    Initialization...
  292. ;    .. Placed here to cache all pgm labels when we start
  293. ;    .. S0-S3 are the rows of bricks
  294. ;    .. S4     is the character replaced by the ball
  295. ;    .. N0,N1 is the position of the ball (row/col)
  296. ;    .. N2,N3 is the vector of motion (row/col offsets)
  297. ;    .. N9     is the paddle col #
  298. ;
  299. Init:
  300. S0 = "░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  301. S1 = "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒"
  302. S2 = "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"
  303. S3 = "████████████████████████████████████████████████████████████████████████████████"
  304. S4 = " "
  305. N0 = 5
  306. N1 = 0
  307. N2 = 1
  308. N3 = 1
  309. N4 = N0
  310. N5 = N1
  311. N9 = 38
  312. N10 = 0
  313. ;
  314. ;    Set states
  315. ;
  316. CLEAR (Blac,Gree)
  317. LEGEND "                              ... Breakout ..."
  318. CUROFF
  319. SET TTHRU OFF
  320. ;
  321. ;    Paint the screen
  322. ;
  323. ATSAY 1,0 (Blac,Blue) S0
  324. ATSAY 2,0 (Blac,cyan) S1
  325. ATSAY 3,0 (Blac,yell) S2
  326. ATSAY 4,0 (Blac,red) S3
  327. ATSAY 22,N9 (Blac,Gree) "____"
  328. RETURN
  329.