Guest User

Tie Invaders (c) 1995 kb^The Obsessed Maniacs

a guest
Jul 30th, 2010
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 28.31 KB | None | 0 0
  1. DECLARE SUB startzak ()
  2. DECLARE SUB initzak ()
  3. DECLARE SUB Idiot ()
  4. DECLARE SUB WechHier ()
  5. DECLARE SUB FadeScr (h AS INTEGER)
  6. DECLARE SUB FadeUp ()
  7. DECLARE SUB FadeDown ()
  8. DECLARE SUB SFDown ()
  9. DECLARE SUB ResetKeyb ()
  10. DECLARE SUB GetKey ()
  11. DECLARE SUB KeybOff ()
  12. DECLARE SUB KeybOn ()
  13. DECLARE SUB StarWait ()
  14. DECLARE SUB Xtra.SND ()
  15. DECLARE SUB AddRep (rpt$)
  16. DECLARE FUNCTION CalcCS! ()
  17. DECLARE SUB LoadHi ()
  18. DECLARE SUB SaveHi ()
  19. DECLARE SUB WrongCS ()
  20. DECLARE SUB Shoot (Num AS INTEGER)
  21. DECLARE SUB XWeapon.SND ()
  22. DECLARE SUB PsEnd.SND ()
  23. DECLARE SUB PauseIt ()
  24. DECLARE SUB InitStars ()
  25. DECLARE SUB StarField ()
  26. DECLARE SUB FillScrn (jump%, col%)
  27. DECLARE SUB First ()
  28. DECLARE SUB Instructs ()
  29. DECLARE SUB Xlife.SND ()
  30. DECLARE SUB TxtFade (s$, col%, YPos%)
  31. DECLARE SUB Intro ()
  32. DECLARE SUB GetReady (Lives%)
  33. DECLARE SUB Xplode.SND ()
  34. DECLARE SUB AlienHit (bnum AS INTEGER)
  35. DECLARE SUB DelBob (bnum%)
  36. DECLARE SUB AlHit.SND ()
  37. DECLARE SUB Alien.SND (tp%)
  38. DECLARE SUB Shoot.SND ()
  39. DECLARE SUB DoBobs ()
  40. DECLARE FUNCTION AddBob% (xp%, yp%, xs%, ys%, ch$, cl%)
  41. DECLARE SUB HiScore (flag AS INTEGER, you AS INTEGER)
  42. DECLARE SUB AlShot0.SND ()
  43. DECLARE SUB AlShot1.SND ()
  44. DECLARE SUB Pause.SND ()
  45.  
  46. ON ERROR GOTO Fehler
  47.  
  48. TYPE Bob
  49.   XPos AS INTEGER
  50.   YPos AS INTEGER
  51.   Colr AS INTEGER
  52.   XDst AS INTEGER
  53.   YDst AS INTEGER
  54. END TYPE
  55.  
  56. DIM SHARED MaxBobs AS INTEGER
  57. MaxBobs = 500
  58.  
  59. DIM SHARED Shot(MaxBobs) AS Bob, AlBob(8) AS INTEGER, Lives AS INTEGER, AlNum AS INTEGER, Hits AS INTEGER, Score, sndon AS INTEGER
  60. DIM SHARED StarX(49) AS INTEGER, StarC(49) AS INTEGER, StarS(49) AS INTEGER
  61. DIM SHARED SCol(2), SFlag AS INTEGER: SCol(0) = 8: SCol(1) = 7: SCol(2) = 15
  62. DIM SHARED Nme$(10), Scr(10), Csum, BChar$(MaxBobs), AlTyp(8) AS INTEGER, Tie$(1), TypCol(1) AS INTEGER, ShipX%
  63. DIM SHARED Keyz(127) AS INTEGER, k%, tpal(15, 2) AS INTEGER, fdval(3, 63) AS INTEGER, SYAdr(50) AS INTEGER
  64.  
  65.  
  66. DEF SEG = &HB800
  67. CLS
  68. WIDTH 80, 50
  69. KeybOff
  70. FOR p% = 0 TO 15: PALETTE p%, p%: NEXT
  71.  
  72. FOR op% = 0 TO 1
  73.   FOR ip% = 0 TO 7
  74.     tpal(8 * op% + ip%, 0) = 2 * SGN(ip% AND 4) + op%
  75.     tpal(8 * op% + ip%, 1) = 2 * SGN(ip% AND 2) + op%
  76.     tpal(8 * op% + ip%, 2) = 2 * SGN(ip% AND 1) + op%
  77.   NEXT
  78. NEXT
  79.  
  80. FOR v% = 0 TO 63
  81.   FOR l% = 1 TO 3
  82.     fdval(l%, v%) = INT(l% * v% / 3)
  83.   NEXT
  84. NEXT
  85.  
  86. InitStars
  87. SFlag = 0
  88. FadeScr (0)
  89. SCREEN 0, 1, 0, 0
  90. COLOR 15, 12, 4
  91. CLS
  92. LOCATE 22, 1
  93. PRINT TAB(8); "This program is official property of KB of The Obsessed Maniacs.": PRINT
  94. PRINT TAB(10); "Main code could be changed without positive effect on game...": PRINT
  95. PRINT
  96. PRINT TAB(24); "(C) T.O.M. northern section, 1995"
  97. FadeUp
  98.  
  99. RANDOMIZE TIMER
  100.  
  101. LoadHi
  102. sndon = 1
  103. Tie$(0) = "è": Tie$(1) = "Æþµ"
  104. ship$(0) = " ÖÛ· ": ship$(1) = " ÑÛÑ ": ship$(2) = " ÆÎµ ": ship$(3) = " ÑÎÑ ": ship$(4) = " ÌÛ¹ "
  105. TypCol(0) = 14: TypCol(1) = 7
  106. DIM SHARED t$(9), seq(16), seqp
  107. initzak
  108.  
  109. seqp = 0: PLAY OFF
  110. ON PLAY(3) GOSUB mrout
  111.  
  112.  
  113. FOR y% = 1 TO 50: SYAdr(y%) = 160 * y% - 162: NEXT
  114.  
  115.  
  116. SLEEP 1: GetKey: IF Keyz(1) THEN SFlag = 1
  117.  
  118. First
  119.  
  120. Beginning:
  121. Intro
  122. Lives = 3: Score = 0: ShtNum% = 0
  123.  
  124. Game:
  125. ShipX% = 40: cnt% = 0: AlNum = 0: Hits = INT(Score / 100): ShtNum% = ShtNum% - SGN(ShtNum%)
  126. GetReady (Lives)
  127.          
  128. CLS
  129. LOCATE 50, 20: COLOR 15: PRINT "<=- TIE INVADERS   (C) KB/TOM 1995 ! -=>";
  130. InitStars
  131. KeybOff
  132. Main:
  133.  
  134. GetKey
  135. IF Keyz(75) AND ShipX% > 1 THEN ShipX% = ShipX% - 1
  136. IF Keyz(77) AND ShipX% < 75 THEN ShipX% = ShipX% + 1
  137. IF Keyz(57) THEN
  138.   SCnt = SCnt + 1: IF SCnt = 3 THEN Shoot (ShtNum%): SCnt = 0
  139. ELSE
  140.   SCnt = 0
  141. END IF
  142.  
  143. IF Keyz(25) THEN PauseIt: ResetKeyb: GOTO Main
  144. IF Keyz(1) THEN SFDown: GOTO Beginning
  145.  
  146. IF 10 * RND > 9.5 AND AlNum < 8 THEN
  147.   tp% = 0: IF 100 * RND < Hits THEN tp% = 1
  148.   cl% = TypCol(tp%): IF RND < .05 THEN cl% = 2
  149.   ab% = AddBob(78 * RND + 1, 1, 78 * RND + 1, 35 * RND + 1, Tie$(tp%), cl%)
  150.   IF ab% THEN
  151.     AlNum = AlNum + 1
  152.     AlBob(AlNum) = ab%
  153.     AlTyp(AlNum) = tp%
  154.     Alien.SND (tp%)
  155.   END IF
  156. END IF
  157.  
  158. IF AlNum THEN
  159.   an% = INT(cnt% MOD AlNum + 1)
  160.   bn% = AlBob(an%)
  161.   Shot(bn%).XDst = 78 * RND + 1 - AlTyp(an%)
  162.   Shot(bn%).YDst = 35 * RND + 1
  163. END IF
  164.                        
  165. IF 100 * RND <= Hits AND AlNum THEN
  166.   xn% = INT(AlNum * RND + 1)
  167.   an% = AlBob(xn%)
  168.     IF AlTyp(xn%) = 0 THEN
  169.     ab% = AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "Â", 9)
  170.     IF ab% THEN AlShot0.SND ELSE
  171.   ELSE
  172.     ab% = AddBob(Shot(an%).XPos + 1, Shot(an%).YPos, 0, 50, "/", 12)
  173.     ab% = ab% OR AddBob(Shot(an%).XPos + 1, Shot(an%).YPos, 80, 50, "\", 12)
  174.     ab% = ab% OR AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "³", 12)
  175.     IF ab% THEN AlShot1.SND
  176.   END IF
  177. END IF
  178.  
  179. LOCATE 49, ShipX%: COLOR 3: PRINT ship$(ShtNum%);
  180. DoBobs
  181. LOCATE 50, 1: COLOR 10: PRINT "Score:"; Score; : LOCATE 50, 71: PRINT "Lives:"; Lives;
  182. StarField
  183.  
  184. FOR b% = 1 TO MaxBobs
  185.   IF Shot(b%).YPos THEN
  186.     IF INSTR("®¯", BChar$(b%)) AND Shot(b%).XPos = Shot(b%).XDst THEN DelBob (b%)
  187.     IF BChar$(b%) = "º" THEN AlienHit (b%)
  188.     IF INSTR("³Â/\", BChar$(b%)) AND Shot(b%).YPos = 49 AND ABS(Shot(b%).XPos - ShipX% - 2) < 2 GOTO LebenWech
  189.     IF BChar$(b%) = "S" AND Shot(b%).YPos = 49 THEN
  190.       xp% = ABS(Shot(b%).XPos - ShipX% - 2)
  191.       DelBob (b%)
  192.       IF xp% < 2 THEN ShtNum% = ShtNum% + 1: XWeapon.SND
  193.       IF ShtNum% > 4 THEN ShtNum% = 4: Score = Score + 1000
  194.     END IF
  195.   END IF
  196. NEXT
  197.  
  198. IF RND < .5 THEN cnt% = cnt% + 1
  199. WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  200. WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  201. GOTO Main
  202.                                
  203. LebenWech:
  204. FOR t% = 4 TO MaxBobs: Shot(t%).YPos = 0: NEXT
  205. Shot(1).YPos = 49: Shot(2).YPos = 49: Shot(3).YPos = 49
  206. Shot(1).XPos = ShipX% + 1: Shot(2).XPos = ShipX% + 2: Shot(3).XPos = ShipX% + 3
  207. Shot(1).XDst = 0: Shot(2).XDst = ShipX% + 2: Shot(3).XDst = 80
  208. Shot(1).YDst = 0: Shot(2).YDst = 0: Shot(3).YDst = 0
  209. BChar$(1) = "Ö": BChar$(2) = "Û": BChar$(3) = "·"
  210. Shot(1).Colr = 3: Shot(2).Colr = 3: Shot(3).Colr = 3
  211. Xplode.SND
  212. WHILE Shot(1).YPos OR Shot(2).YPos OR Shot(3).YPos > 0
  213.   DoBobs
  214.   StarField
  215.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  216.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  217. WEND
  218. SLEEP 1
  219. Lives = Lives - 1
  220. IF Lives THEN FadeDown: GOTO Game
  221.  
  222. LOCATE 24, 35: COLOR 15: PRINT "Game Over!"
  223. a$ = "Score:" + STR$(Score): LOCATE 26, 40 - LEN(a$) / 2: COLOR 2: PRINT a$;
  224. IF sndon THEN
  225.   PLAY "mft100l32o5c<gd#gd#cd#c<g>c<gd#gd#c<g"
  226.   PLAY "o5c<g#fg#fcfc<g#>c<g#fg#fc<g#"
  227.   PLAY "o4bgfgf<b>f<bgbgfgf<bg"
  228.   PLAY "o2cdeg>cdeg>cdeg>cdegl64o6c<c<c<c<c<c<ccl16c"
  229. END IF
  230. SLEEP 1
  231. FadeDown
  232. CALL HiScore(1, 0)
  233. GOTO Beginning
  234.  
  235. Fehler:
  236.  
  237. IF ERR = 70 THEN RESUME
  238. SCREEN 0, 1, 1, 1
  239. COLOR 30, 4
  240. CLS
  241. LOCATE 10, 35
  242.  
  243. IF ERR < 52 GOTO Ferr
  244.  
  245. PRINT "DISK ERROR !"
  246. PRINT
  247. COLOR 15
  248. PRINT TAB(20); "Something is wrong with the Hard Disk."
  249. PRINT TAB(14); "Press (R) to retry,(I) to ignore or (A) to abort."
  250. KeybOn
  251. DO
  252. k$ = INKEY$
  253. IF LCASE$(k$) = "r" THEN SCREEN 0, 1, 0, 0: KeybOff: RESUME
  254. IF LCASE$(k$) = "i" THEN SCREEN 0, 1, 0, 0: KeybOff: RESUME NEXT
  255. IF LCASE$(k$) = "a" THEN AddRep "Program aborted because of disk Error #" + STR$(ERR): SCREEN 0, 1, 0, 0: COLOR 7, 0: CLS : SYSTEM
  256. LOOP
  257.  
  258. Ferr:
  259. KeybOn
  260. PRINT "FATAL ERROR:"
  261. PRINT
  262. COLOR 15
  263. PRINT TAB(25); "Internal error #"; ERR; " appeared."
  264. PRINT TAB(26); "Please notify it and contact"
  265. PRINT
  266. PRINT TAB(26); "Tammo Hinrichs, Kl. 11d, AGO"
  267. PRINT
  268. COLOR 31
  269. PRINT
  270. PRINT TAB(30); "PRESS ANY KEY TO QUIT"
  271. WHILE INKEY$ <> "": WEND
  272. DO: a$ = INKEY$: LOOP WHILE a$ = ""
  273. AddRep "Program aborted because of Fatal Error #" + STR$(ERR)
  274. SCREEN 0, 1, 0, 0
  275. COLOR 7, 0
  276. CLS
  277. SYSTEM
  278.  
  279. mrout:
  280.   IF seq(seqp) = -1 THEN seqp = 0
  281.   IF sndon THEN PLAY t$(seq(seqp))
  282.   seqp = seqp + 1
  283. RETURN
  284.  
  285. FUNCTION AddBob% (xp%, yp%, xs%, ys%, ch$, cl%)
  286.   ok% = 0: FOR t% = 1 TO MaxBobs
  287.     IF Shot(t%).YPos = 0 THEN ok% = 1: EXIT FOR
  288.   NEXT
  289.   IF ok% THEN
  290.     Shot(t%).XPos = xp%
  291.     Shot(t%).YPos = yp%
  292.     Shot(t%).XDst = xs%
  293.     Shot(t%).YDst = ys%
  294.     BChar$(t%) = ch$
  295.     Shot(t%).Colr = cl%
  296.     AddBob = t%
  297.   ELSE
  298.     AddBob = 0
  299.   END IF
  300. END FUNCTION
  301.  
  302. SUB AddRep (rpt$)
  303.   OPEN "invaders.rpt" FOR APPEND AS 2
  304.   PRINT #2, DATE$; " , "; TIME$; " : "; rpt$
  305.   CLOSE 2
  306. END SUB
  307.  
  308. SUB AlHit.SND
  309. IF sndon AND PLAY(0) < 5 THEN PLAY "t200l64o2bagfedc"
  310. END SUB
  311.  
  312. SUB Alien.SND (tp%)
  313.   IF sndon AND PLAY(0) < 5 THEN
  314.     IF tp% = 0 THEN PLAY "t90l64o2f>f>f" ELSE PLAY "t90l64o3f<f<f"
  315.   END IF
  316. END SUB
  317.  
  318. SUB AlienHit (bnum AS INTEGER)
  319.   IF AlNum THEN
  320.     ok% = 0: FOR t% = 1 TO AlNum
  321.       ab% = AlBob(t%): IF Shot(bnum).XPos = Shot(ab%).XPos + AlTyp(t%) AND ABS(Shot(bnum).YPos - Shot(ab%).YPos) < 2 THEN ok% = 1: EXIT FOR
  322.     NEXT
  323.     IF ok% = 0 THEN EXIT SUB
  324.     Typ% = AlTyp(t%)
  325.     IF Shot(ab%).Colr = 2 THEN x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, ShipX% + 2, 49, "S", 10): IF x THEN Xtra.SND
  326.     x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, Shot(ab%).XPos - 3, Shot(ab%).YPos, "®", 15)
  327.     x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, Shot(ab%).XPos + 3, Shot(ab%).YPos, "¯", 15)
  328.     DelBob (ab%)
  329.     DelBob (bnum)
  330.     AlHit.SND
  331.     IF t% < AlNum THEN
  332.       FOR x = t% TO AlNum - 1
  333.         AlBob(x) = AlBob(x + 1)
  334.         AlTyp(x) = AlTyp(x + 1)
  335.       NEXT
  336.     END IF
  337.     AlNum = AlNum - 1
  338.     Hits = Hits + 1
  339.     Score = Score + 3 * INT(LOG(Hits + 3) * (Typ% + 1) + .5)
  340.     IF Score MOD 999 - Hits < 0 THEN Lives = Lives + 1: Xlife.SND
  341.     END IF
  342. END SUB
  343.  
  344. SUB AlShot0.SND
  345. IF sndon AND PLAY(0) < 5 THEN PLAY "t255l32o5gfe"
  346. END SUB
  347.  
  348. SUB AlShot1.SND
  349. IF sndon AND PLAY(0) < 5 THEN PLAY "t255l32o4gfe"
  350. END SUB
  351.  
  352. FUNCTION CalcCS
  353.   x = 0
  354.   FOR t% = 1 TO 10
  355.     x = x + LEN(Nme$(t%)) * Scr(t%)
  356.   NEXT t%
  357.   CalcCS = x MOD 37494
  358. END FUNCTION
  359.  
  360. SUB DelBob (bnum%)
  361.   LOCATE Shot(bnum%).YPos, Shot(bnum%).XPos
  362.   PRINT SPACE$(LEN(BChar$(bnum%)));
  363.   Shot(bnum%).YPos = 0
  364. END SUB
  365.  
  366. SUB DoBobs
  367. FOR t% = 1 TO MaxBobs
  368.   IF Shot(t%).YPos THEN
  369.     LOCATE Shot(t%).YPos, Shot(t%).XPos: PRINT SPACE$(LEN(BChar$(t%)));
  370.     Shot(t%).YPos = Shot(t%).YPos + SGN(Shot(t%).YDst - Shot(t%).YPos)
  371.     Shot(t%).XPos = Shot(t%).XPos + SGN(Shot(t%).XDst - Shot(t%).XPos)
  372.     IF Shot(t%).XPos > 0 AND Shot(t%).XPos < 80 AND Shot(t%).YPos > 0 AND Shot(t%).YPos < 50 THEN COLOR Shot(t%).Colr: LOCATE Shot(t%).YPos, Shot(t%).XPos: PRINT BChar$(t%);  ELSE Shot(t%).YPos = 0
  373.   END IF
  374. NEXT
  375. END SUB
  376.  
  377. SUB FadeDown
  378. FOR i% = 63 TO 0 STEP -1: FadeScr (i%): NEXT
  379. END SUB
  380.  
  381. SUB FadeScr (h AS INTEGER)
  382.   OUT &H3C8, 0
  383.   FOR c% = 0 TO 15
  384.     FOR p% = 0 TO 2
  385.       OUT &H3C9, fdval(tpal(c%, p%), h)
  386.     NEXT
  387.   NEXT
  388.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  389.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  390. END SUB
  391.  
  392. SUB FadeUp
  393. FOR i% = 0 TO 63: FadeScr i%: NEXT
  394. END SUB
  395.  
  396. SUB First
  397. COLOR , 0
  398. FadeDown
  399. CLS
  400. FadeScr 63
  401. cnt% = 0
  402. DIM txt$(2)
  403. txt$(0) = SPACE$(76) + "     T h e "
  404. txt$(1) = SPACE$(76) + "O b s e s s e d "
  405. txt$(2) = SPACE$(76) + " M a n i a c s "
  406. fx$ = "p r o u d l y   p r e s e n t  :"
  407. InitStars
  408. ResetKeyb
  409. KeybOff
  410. startzak
  411.  
  412. DO UNTIL cnt% = 310 OR Keyz(57)
  413.  
  414.   GetKey
  415.   StarField
  416.   IF cnt% > 19 AND cnt% < 20 + 3 * 45 THEN
  417.     c2% = cnt% - 20
  418.     tn% = INT(c2% / 45)
  419.     tp% = c2% MOD 45 + 1
  420.     COLOR 11
  421.     LOCATE 24 + 2 * tn%, 1
  422.     PRINT MID$(txt$(tn%), tp%, 79);
  423.     IF cnt% = 154 THEN tn% = 3
  424.   END IF
  425.   IF tn% > 0 THEN
  426.     COLOR 11
  427.     FOR t% = 0 TO tn% - 1
  428.     LOCATE 24 + 2 * t%, 1
  429.     PRINT MID$(txt$(t%), 45)
  430.     NEXT
  431.   END IF
  432.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  433.   WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  434.   cnt% = cnt% + 1
  435.  
  436.   c3% = (cnt% - 185) / 2: IF c3% < 0 THEN c3% = 0
  437.   IF c3% > 32 THEN c3% = 32
  438.   COLOR 13
  439.   LOCATE 34, 25
  440.   PRINT LEFT$(fx$, c3%);
  441. LOOP
  442. FadeDown
  443. END SUB
  444.  
  445. SUB GetKey
  446. FOR t% = 1 TO 4
  447.   k% = 0
  448.   DO
  449.     o% = k%
  450.     DO: k% = INP(&H60): LOOP WHILE k% = 224
  451.     IF k% AND 128 THEN
  452.       Keyz(k% - 128) = 0
  453.       ELSE Keyz(k%) = 1
  454.     END IF
  455.   LOOP UNTIL o% = k%
  456. NEXT
  457. IF Keyz(29) AND Keyz(56) AND Keyz(83) THEN Idiot
  458. END SUB
  459.  
  460. SUB GetReady (Lives%)
  461. KeybOff
  462. CLS
  463. LOCATE 50, 20: COLOR 15: PRINT "<=- TIE INVADERS   (C) KB/TOM 1995 ! -=>";
  464. LOCATE 24, 35: COLOR 15: PRINT "Get Ready!"
  465. LOCATE 26, 36: COLOR 2: PRINT "Lives:"; Lives%
  466. FadeUp
  467. IF sndon THEN
  468.   PLAY "mft100l64o3gd<bg>gd<bn0>gd<bg"
  469.   PLAY "l64o4c<gec>c<gec>c<gec"
  470.   PLAY "o4gec<g>gec<g>gec<g"
  471.   PLAY "o4fc<af>e<bge>d<afd"
  472.   PLAY "o5c<gec>c<gec>c<gec"
  473.   PLAY "o4gec<g>gec<g>gec<gmb"
  474. END IF
  475. SLEEP 1
  476. END SUB
  477.  
  478. SUB HiScore (flag AS INTEGER, you AS INTEGER)
  479.  
  480.   DIM hicl%(10)
  481.   hicl%(1) = 15: hicl%(2) = 7: hicl%(3) = 13: hicl%(4) = 5: hicl%(5) = 4
  482.   FOR t% = 6 TO 10: hicl%(t%) = 6: NEXT
  483.  
  484.   CLS
  485.   InitStars
  486.   StarField
  487. WIDTH 80, 50
  488. COLOR 1
  489. LOCATE 1, 13:   PRINT "                ÛÛ ÛÛ ÛÛÛÛ  ÛÛÛÛ ÛÛ ÛÛ          "
  490. LOCATE 2, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ    ÛÛ ÛÛ          "
  491. LOCATE 3, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ    ÛÛ ÛÛ          "
  492. LOCATE 4, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ    ÛÛ ÛÛ          "
  493. LOCATE 5, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ    ÛÛ ÛÛ          "
  494. LOCATE 6, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ    ÛÛ ÛÛ          "
  495. LOCATE 7, 13:   PRINT "                ÛÛÛÛÛ  ÛÛ  ÛÛ ÛÛ ÛÛÛÛÛ          "
  496. LOCATE 8, 13:   PRINT "                ÛÛÛÛÛ  ÛÛ  ÛÛ ÛÛ ÛÛÛÛÛ          "
  497. LOCATE 9, 13:   PRINT "                ÛÛ ÛÛ  ÛÛ  ÛÛ ÛÛ ÛÛ ÛÛ          "
  498. LOCATE 10, 13:  PRINT "                SÛ ÛC  ÛÛ  OOÛÛR RR ÛE          "
  499. LOCATE 11, 13:  PRINT "                SS CC CCÛO  OOÛR ÛR ÛE          "
  500. COLOR 15
  501. LOCATE 12, 13:  PRINT "  **        SSS    CC    OO OO RR RR EE           **   "
  502. LOCATE 13, 13:  PRINT "******       SSSS  CC    OO OO RRRR  EEEE       ****** "
  503. LOCATE 14, 13:  PRINT "  **           SSS CC    OO OO RR R  EE           **   "
  504. LOCATE 15, 13:  PRINT " *  *       SS  SS CC CC OO OO RR RR EE  E       *  *  "
  505. LOCATE 16, 13:  PRINT "             SSSS   CCC   OOO  RR RR EEEEE             "
  506. LOCATE 10, 26: PRINT "SSS"
  507. LOCATE 10, 34: PRINT "CC"
  508. LOCATE 10, 39: PRINT "O"
  509. LOCATE 10, 45: PRINT "R"
  510. LOCATE 10, 51: PRINT "EEEE"
  511. LOCATE 11, 25: PRINT "SS"
  512. LOCATE 11, 39: PRINT "OO"
  513. LOCATE 11, 45: PRINT "R"
  514. LOCATE 11, 48: PRINT "R"
  515. LOCATE 11, 51: PRINT "E  E"
  516. LOCATE 11, 13: PRINT " *  *"
  517. LOCATE 11, 61: PRINT " *  *"
  518. COLOR 5
  519. LOCATE 18, 13: PRINT "ú úúÄÄÄÄÍÍÍ THEùTIEùINVADERS'ùHALLùOFùFAME ÍÍÍÄÄÄÄúú ú"
  520.  
  521.  
  522.   IF flag = 1 THEN
  523.    
  524.     LoadHi
  525.  
  526.     ok% = 0
  527.     FOR x% = 1 TO 10
  528.       IF Score > Scr(x%) THEN ok% = 1: EXIT FOR
  529.     NEXT
  530.    
  531.     IF ok% = 1 THEN
  532.      
  533.       COLOR 11
  534.       LOCATE 20, 1
  535.       PRINT TAB(32); "Congratulations!": PRINT
  536.       COLOR 3
  537.       PRINT TAB(22); "You have got one of our top scores !"
  538.       FadeUp
  539.       IF sndon THEN PLAY "mbt200l32o3gecn0>c<gen0>ec<gn0>gecgecgn0ec<gn0>gecgecgecgecgecg" ELSE
  540.       COLOR 14
  541.       LOCATE 26, 20
  542.       PRINT "Please enter your name: ";
  543.       COLOR 15
  544.       nam$ = ""
  545.       WHILE INKEY$ <> "": WEND
  546.       KeybOn
  547.       LINE INPUT nam$
  548.       KeybOff
  549.       nam$ = LTRIM$(RTRIM$(LEFT$(nam$, 16)))
  550.       IF nam$ = "" THEN nam$ = "Der Enterdrcker" ELSE
  551.  
  552.       IF x% < 10 THEN
  553.         FOR t% = 10 TO x% + 1 STEP -1
  554.           Nme$(t%) = Nme$(t% - 1): Scr(t%) = Scr(t% - 1)
  555.         NEXT
  556.       END IF
  557.      
  558.       Scr(x%) = Score: Nme$(x%) = nam$
  559.       SaveHi
  560.       AddRep "'" + Nme$(x%) + "' achieved Place" + STR$(x%) + " with score" + STR$(Scr(x%))
  561.  
  562.       FadeDown
  563.       HiScore 0, x%
  564.    
  565.     ELSE
  566.       flag = 0
  567.       you = 0
  568.       LOCATE 42, 21
  569.       COLOR 8
  570.       PRINT "Sorry...  they're all better than you!"
  571.  
  572.     END IF
  573.  
  574.   END IF
  575.  
  576.   IF flag = 0 THEN
  577.    
  578.     LoadHi
  579.    
  580.     FOR t% = 1 TO 10
  581.       COLOR hicl%(t%)
  582.       LOCATE 2 * t% + 20, 26 - INT(t% / 10)
  583.       PRINT t%;
  584.       LOCATE 2 * t% + 20, 28
  585.       PRINT ". "; Nme$(t%);
  586.       s$ = MID$(STR$(Scr(t%)), 2)
  587.       LOCATE 2 * t% + 20, 53 - LEN(s$)
  588.       PRINT s$;
  589.     NEXT
  590.    
  591.     IF you THEN
  592.       COLOR 11
  593.       LOCATE 2 * you + 20, 19
  594.       PRINT "YOU ¯";
  595.       LOCATE 2 * you + 20, 55
  596.       PRINT "® YOU";
  597.     END IF
  598.    
  599.     FadeUp
  600.     IF sndon THEN
  601.       PLAY "t200l32o4c<g>c<g>c<g>c<g>c<g>c<g>c<g>n0n0"
  602.       PLAY "c<g>c<g>c<g>n0n0c<g>c<g>c<g>n0n0"
  603.       PLAY "gcgcgcgcgcgcgcgcgcgcgcgc"
  604.     END IF
  605.    
  606.     LOCATE 46, 26: COLOR 15: PRINT "PRESS ANY KEY TO CONTINUE."
  607.     StarWait
  608.     SFDown
  609.  
  610.   END IF
  611.  
  612. END SUB
  613.  
  614. SUB Idiot
  615.   FadeDown
  616.   SCREEN 0, 1, 2, 2
  617.   COLOR 11, 4
  618.   CLS
  619.   PRINT : PRINT
  620.   PRINT : PRINT "  So, dir gef„llt dieses Spiel also nicht?"
  621.   PRINT : PRINT "  Du meinst, du kommst hier einfach so raus?"
  622.   PRINT : PRINT "  Du denkst, nur weil dieses Spiel in Basic programmiert ist, kannst"
  623.   PRINT : PRINT "  du es einfach so berlisten und so weiter?"
  624.   PRINT : PRINT
  625.   COLOR 14
  626.   PRINT : PRINT "  Dann hast du ein Problem."
  627.   PRINT : PRINT "  Denn wenn du unbedingt ein Spiel brauchst, das deine krampfhaften"
  628.   PRINT : PRINT "  Guckmalichbinjasovieltolleralsderprogrammiererzeigversuche nicht"
  629.   PRINT : PRINT "  abf„ngt, bist du hier ziemlich falsch. Fr solche Problemf„lle emp-"
  630.   PRINT : PRINT "  fehle ich Windoze oder irgendwas in der Richtung."
  631.   PRINT : PRINT "  Auáerdem jetzt noch ein kleiner Rat:"
  632.   COLOR 31
  633.   PRINT : PRINT
  634.   PRINT : PRINT "  DU DRšCKST JETZT MAL GANZ BRAV AUF SPACE UND SPIELST DANN WEITER ,KLAR ???"
  635.   PRINT : PRINT
  636.   PRINT : PRINT
  637.   COLOR 11
  638.   PRINT : PRINT "  Ein sehr entrsteter Programmierer"
  639.   FadeUp
  640.   ResetKeyb
  641.   DO: LOOP UNTIL INP(&H60) = 57
  642.   ResetKeyb
  643.   FadeDown
  644.   SCREEN 0, 1, 0, 0
  645.   FadeUp
  646. END SUB
  647.  
  648. SUB InitStars
  649.   FOR t% = 1 TO 49: StarX(t%) = INT(79 * RND): StarC(t%) = SCol(INT(3 * RND)): StarS(t%) = INT(3 * RND) + 1: NEXT
  650. END SUB
  651.  
  652. SUB initzak
  653.  
  654. m$ = "msl8o0c>c"
  655. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  656. m$ = m$ + "msl8o0c"
  657. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  658. m$ = m$ + "msl8o0c>c"
  659. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  660. t$(0) = m$
  661.  
  662. m$ = "msl8o0d#>d#"
  663. m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
  664. m$ = m$ + "msl8o0d#f"
  665. m$ = m$ + "mlo4l64fd<a#fd<a#fd"
  666. m$ = m$ + "msl8o0f>f"
  667. t$(1) = m$
  668.  
  669. m$ = "msl8o0c>c"
  670. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  671. m$ = m$ + "msl8o0c"
  672. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  673. m$ = m$ + "mnl8o3c"
  674. m$ = m$ + "msl8o0c"
  675. m$ = m$ + "mnl8o3c"
  676. t$(2) = m$
  677.  
  678. m$ = "msl8o0d#>d#"
  679. m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
  680. m$ = m$ + "mno3l8cd#d"
  681. m$ = m$ + "msl8o0f>f"
  682. t$(3) = m$
  683.  
  684. m$ = "msl8o0c>c"
  685. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  686. m$ = m$ + "msl8o0c"
  687. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  688. m$ = m$ + "mnl8o3g"
  689. m$ = m$ + "msl8o0c"
  690. m$ = m$ + "mnl8o3g"
  691. t$(4) = m$
  692.  
  693. m$ = "msl8o0d#>d#"
  694. m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
  695. m$ = m$ + "mno3l8ga#f"
  696. m$ = m$ + "msl8o0f>f"
  697. t$(5) = m$
  698.  
  699. m$ = "msl8o0c>c"
  700. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  701. m$ = m$ + "msl8o0c"
  702. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  703. m$ = m$ + "mnl8o4c"
  704. m$ = m$ + "msl8o0c"
  705. m$ = m$ + "mnl8o4c"
  706. t$(6) = m$
  707.  
  708. m$ = "msl8o0d#>d#"
  709. m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
  710. m$ = m$ + "mno4l8c<a#g"
  711. m$ = m$ + "msl8o0f>f"
  712. t$(7) = m$
  713.  
  714. m$ = "msl8o0c>c"
  715. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  716. m$ = m$ + "msl8o0c"
  717. m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
  718. m$ = m$ + "mnl8o3f"
  719. m$ = m$ + "msl8o0c"
  720. m$ = m$ + "mnl8o3f"
  721. t$(8) = m$
  722.  
  723. m$ = "msl8o0d#>d#"
  724. m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
  725. m$ = m$ + "mno3l8gfc"
  726. m$ = m$ + "msl8o0f>f"
  727. t$(9) = m$
  728.  
  729.  
  730. seq(0) = 0: seq(1) = 1: seq(2) = 0: seq(3) = 1: seq(4) = 2: seq(5) = 3: seq(6) = 4: seq(7) = 5: seq(8) = 6: seq(9) = 7: seq(10) = 8: seq(11) = 9: seq(12) = 0: seq(13) = 1: seq(14) = 0: seq(15) = 1: seq(16) = -1
  731.  
  732. END SUB
  733.  
  734. SUB Instructs
  735. CLS
  736. COLOR 15
  737. PRINT : PRINT "Instructions for TIE Invaders:"
  738. PRINT : PRINT "You are this little thing here ";
  739. COLOR 3:  PRINT "ÖÛ· ";
  740. COLOR 15: PRINT "and have to shoot all the big bad"
  741. PRINT : PRINT "TIE fighters from space (";
  742. COLOR 14:  PRINT Tie$(0); : COLOR 15:  PRINT ","; : COLOR 7: PRINT Tie$(1);
  743. COLOR 15:  PRINT "). Do this by pressing the space bar to shoot"
  744. PRINT : PRINT "and the arrow keys to move left or right."
  745. PRINT : PRINT "But attention. The TIE fighters won't be pleased about the things you do"
  746. PRINT : PRINT "and shoot back to do the same thing with you you did to them, namely:"
  747. PRINT : PRINT "KILL YOU! So watch out for their deadly missiles (";
  748. COLOR 9: PRINT "Â"; : COLOR 15: PRINT ","; : COLOR 12: PRINT "/"; : COLOR 15:  PRINT ","; : COLOR 12:  PRINT "\"; : COLOR 15: PRINT ","; : COLOR 12: PRINT "³";
  749. COLOR 15:  PRINT ") and avoid them as"
  750. PRINT : PRINT "often as you can, because if not, ya gonna lose one of yer 3 lives (yo man!)."
  751. PRINT : PRINT "But calm down. Every 1000 points you'll gain an extra life. "
  752. PRINT : PRINT ""
  753. PRINT : PRINT "So, now have fun with this little product of my boredom and GOOD LUCK!"
  754. COLOR 11: PRINT : PRINT : PRINT : PRINT "KB/TOM in Nov/Dec 1995!"
  755. COLOR 15: PRINT : PRINT
  756. PRINT : PRINT "P.S. Sometimes there will be a green ("; : COLOR 2:  PRINT "Û"; : COLOR 15:  PRINT ") TIE fighter"
  757. PRINT : PRINT "on screen. Shoot it and it will reveal a falling S. Now just don't move,"
  758. PRINT : PRINT "collect the S and your shoot power will be increased."
  759. COLOR 7: PRINT : PRINT : PRINT : PRINT : PRINT : PRINT "PRESS ANY KEY TO CONTINUE"
  760. FadeUp
  761. StarWait
  762. SFDown
  763. END SUB
  764.  
  765. SUB Intro
  766. DIM switch$(1): switch$(0) = "off": switch$(1) = "on "
  767. lab1:
  768. KeybOff
  769. CLS
  770. IF sndon THEN PLAY ON: IF PLAY(0) < 3 THEN startzak
  771. FadeScr 63
  772. CALL TxtFade("±±±±± ±±±±± ±±±±±", 6, 3)
  773. CALL TxtFade("² ² ²   ²   ²   ²", 6, 4)
  774. CALL TxtFade("  Û     Û   Û    ", 6, 5)
  775. CALL TxtFade("  Û     Û   ÛÛÛÛ ", 14, 6)
  776. CALL TxtFade("  ²     ²   ²    ", 14, 7)
  777. CALL TxtFade("  ±     ±   ±   ±", 14, 8)
  778. CALL TxtFade(" °°°  °°°°° °°°°°", 14, 9)
  779.  
  780. InitStars
  781. LOCATE 12, 1
  782. COLOR &H4: PRINT TAB(17); "±±±±± ±   ± ±   ±   ±   ±±±   ±±±±± ±±±±    ±±±"
  783. COLOR &H4: PRINT TAB(17); "  ²   ²   ² ²   ²  ² ²  ²  ²  ²   ² ²   ²  ²   "
  784. COLOR &H4: PRINT TAB(17); "  Û   ÛÛ  Û Û   Û Û   Û Û   Û Û     Û   Û Û    "
  785. COLOR &HC: PRINT TAB(17); "  Û   Û Û Û Û   Û ÛÛÛÛÛ Û   Û ÛÛÛÛ  ÛÛÛÛ   ÛÛÛ "
  786. COLOR &HC: PRINT TAB(17); "  ²   ²  ²² ²   ² ²   ² ²   ² ²     ² ²       ²"
  787. COLOR &HC: PRINT TAB(17); "  ±   ±   ±  ± ±  ±   ± ±  ±  ±   ± ±  ±     ± "
  788. COLOR &HC: PRINT TAB(17); "°°°°° °   °   °   °° °° °°°   °°°°° °° °° °°°  "
  789.  
  790. LOCATE 21, 1
  791. COLOR &H1: PRINT TAB(22); "\\   °ÛÛ  °ÛÛ °ÛÛÛ °ÛÛÛÛ °ÛÛÛÛ     //"
  792. COLOR &H9: PRINT TAB(22); " \\  °ÛÛ  °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ   //"
  793. COLOR &HB: PRINT TAB(22); "  \\ °ÛÛ  °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ  //"
  794. COLOR &HF: PRINT TAB(22); "   >>°ÛÛ°Û°ÛÛ°ÛÛÛÛÛ°ÛÛÛÛ °ÛÛÛÛ  <<"
  795. COLOR &HB: PRINT TAB(22); "  // °ÛÛ°Û°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ     \\"
  796. COLOR &H9: PRINT TAB(22); " //  °ÛÛ°Û°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ      \\"
  797. COLOR &H1: PRINT TAB(22); "//    °ÛÛÛÛÛ °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ       \\"
  798.  
  799. COLOR 10: LOCATE 30, 20: PRINT "-=*> The * High Resolution * Edition <*=-"
  800.  
  801. COLOR 8: LOCATE 50, 2: PRINT "(C) 1995 KB of T.O.M. + ÅÝoPS"; : LOCATE 1, 1
  802.  
  803. AlNum = 0: k$ = ""
  804. WHILE INKEY$ <> "": WEND
  805.  
  806. lab2:
  807.  
  808. IF (10 * RND) > 9.5 AND AlNum < 8 THEN
  809.   ab% = AddBob(78 * RND + 1, 16 * RND + 32, 78 * RND + 1, 16 * RND + 32, "è", 14)
  810.   IF ab% THEN
  811.     AlNum = AlNum + 1
  812.     AlBob(AlNum) = ab%
  813.   END IF
  814. END IF
  815.  
  816. IF AlNum THEN
  817.   bn% = AlBob(cnt% MOD AlNum + 1)
  818.   Shot(bn%).XDst = 78 * RND + 1
  819.   Shot(bn%).YDst = 16 * RND + 32
  820. END IF
  821.  
  822. IF 100 * RND <= 15 AND AlNum > 0 THEN
  823.   an% = AlBob(INT(AlNum * RND + .9))
  824.   ab% = AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "Â", 9)
  825. END IF
  826.  
  827. DoBobs
  828. COLOR 15
  829. LOCATE 36, 26: PRINT "press 'H' to view highscores"
  830. LOCATE 38, 32: PRINT "'I' for instructions"
  831. LOCATE 40, 32: PRINT "'S' to turn sound "; switch$(1 - sndon)
  832. LOCATE 42, 32: PRINT "'SPACE' to start game "
  833. LOCATE 44, 32: PRINT "'ESC' to exit to DOS"
  834. COLOR 7: LOCATE 46, 30: PRINT "In game press 'P' to pause"
  835. StarField
  836.  
  837. IF RND < .5 THEN cnt% = cnt% + 1
  838.  
  839. WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  840. WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  841.  
  842. GetKey
  843. IF Keyz(35) THEN PLAY OFF: SFDown: HiScore 0, 0: startzak: GOTO lab1
  844. IF Keyz(23) THEN SFDown: Instructs: GOTO lab1
  845. IF Keyz(31) THEN sndon = 1 - sndon: IF sndon = 1 THEN startzak ELSE PLAY OFF
  846. IF Keyz(57) THEN PLAY OFF: GOTO lab3
  847. IF Keyz(1) THEN PLAY OFF: WechHier
  848. GOTO lab2
  849.  
  850. lab3:
  851. FOR t% = 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
  852. SFDown
  853. END SUB
  854.  
  855. SUB KeybOff
  856. OUT &H21, 2
  857. ResetKeyb
  858. END SUB
  859.  
  860. SUB KeybOn
  861. DO: LOOP UNTIL INP(&H60) = INP(&H60)
  862. OUT &H21, 0
  863. DO: LOOP UNTIL INKEY$ = ""
  864. END SUB
  865.  
  866. SUB LoadHi
  867.   OPEN "invaders.his" FOR INPUT AS 1
  868.   FOR t% = 1 TO 10
  869.     INPUT #1, Nme$(t%), Scr(t%)
  870.   NEXT
  871.   INPUT #1, Csum
  872.   CLOSE 1
  873.   IF Csum <> CalcCS THEN WrongCS
  874. END SUB
  875.  
  876. SUB Pause.SND
  877. IF sndon THEN PLAY "t125l64o0ceg>ceg>ceg>ceg>ceg>ceg>ceg"
  878. END SUB
  879.  
  880. SUB PauseIt
  881.   Pause.SND
  882.   DO WHILE Keyz(57) = 0
  883.     GetKey
  884.     LOCATE 23, 34
  885.     COLOR 15
  886.     PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿": PRINT TAB(34); "³";
  887.     COLOR INT(15 * RND + 1): PRINT "Game paused!";
  888.     COLOR 15: PRINT "³": PRINT TAB(34); "ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ"
  889.     StarField
  890.     WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  891.     WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  892.   LOOP
  893.   LOCATE 11, 1
  894.   FOR t% = 1 TO 3: PRINT TAB(34); SPACE$(14): NEXT
  895.   PsEnd.SND
  896. END SUB
  897.  
  898. SUB PsEnd.SND
  899. IF sndon THEN PLAY "t125l64o6gec<gec<gec<gec<gec<gec<gec"
  900. END SUB
  901.  
  902. SUB ResetKeyb
  903. FOR k% = 0 TO 127: Keyz(k%) = 0: NEXT
  904. DO: LOOP UNTIL INP(&H60) = INP(&H60)
  905. END SUB
  906.  
  907. SUB SaveHi
  908.       OPEN "invaders.his" FOR OUTPUT AS 1
  909.       FOR t% = 1 TO 10
  910.         WRITE #1, Nme$(t%), Scr(t%)
  911.       NEXT
  912.       WRITE #1, CalcCS
  913.       CLOSE 1
  914. END SUB
  915.  
  916. SUB SFDown
  917.   FOR i% = 63 TO 0 STEP -1: FadeScr i%: StarField: NEXT
  918. END SUB
  919.  
  920. SUB Shoot (Num AS INTEGER)
  921.   ab% = 0
  922.   IF Num <> 1 THEN ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% + 2, 0, "º", 13)
  923.   IF Num = 1 OR Num = 2 THEN
  924.     ab% = ab% OR AddBob(ShipX% + 1, 49, ShipX% + 1, 0, "º", 13)
  925.     ab% = ab% OR AddBob(ShipX% + 3, 49, ShipX% + 3, 0, "º", 13)
  926.   END IF
  927.   IF Num = 3 THEN
  928.     ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% - 1, 0, "º", 13)
  929.     ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% + 5, 0, "º", 13)
  930.   END IF
  931.   IF Num > 3 THEN
  932.     ab% = ab% OR AddBob(ShipX% + 2, 49, 0, 0, "º", 13)
  933.     ab% = ab% OR AddBob(ShipX% + 2, 49, 80, 0, "º", 13)
  934.   END IF
  935.   IF ab% THEN Shoot.SND
  936. END SUB
  937.  
  938. SUB Shoot.SND
  939. IF sndon AND PLAY(0) < 8 THEN PLAY "t255l64o6gc<gc<gc<gc<gc<gc<gc"
  940. END SUB
  941.  
  942. SUB StarField
  943.   IF SFlag THEN EXIT SUB
  944.   FOR t% = 1 TO 49
  945.     IF PEEK(SYAdr(t%) + 2 * StarX(t%)) = 249 THEN POKE SYAdr(t%) + 2 * StarX(t%), 32
  946.     StarX(t%) = (StarX(t%) + StarS(t%)) MOD 79
  947.     IF PEEK(SYAdr(t%) + 2 * StarX(t%)) = 32 THEN ad% = SYAdr(t%) + 2 * StarX(t%): POKE ad%, 249: POKE ad% + 1, StarC(t%)
  948.   NEXT
  949. END SUB
  950.  
  951. SUB startzak
  952. PLAY "t180mb"
  953. PLAY ON: seqp = 0: IF PLAY(0) < 3 THEN PLAY t$(seq(0)): seqp = 1
  954. END SUB
  955.  
  956. SUB StarWait
  957.   KeybOff
  958.   WHILE Keyz(57) = 0
  959.     GetKey
  960.     StarField
  961.     WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  962.     WAIT &H3DA, 8: WAIT &H3DA, 8, 8
  963.   WEND
  964. END SUB
  965.  
  966. SUB TxtFade (s$, col%, YPos%)
  967.   s$ = LEFT$(s$, MaxBobs)
  968.   XPos% = 39 - LEN(s$) / 2
  969.   f% = 1
  970.   FOR t% = 1 TO LEN(s$)
  971.     IF MID$(s$, t%, 1) <> " " THEN
  972.       Shot(f%).XPos = 79 * RND + 1
  973.       Shot(f%).YPos = 5 * RND + 45
  974.       Shot(f%).XDst = XPos% + t%
  975.       Shot(f%).YDst = YPos%
  976.       BChar$(f%) = MID$(s$, t%, 1)
  977.       Shot(f%).Colr = col%
  978.       f% = f% + 1
  979.     END IF
  980.   NEXT
  981.   IF LEN(s$) < MaxBobs THEN FOR t% = LEN(s$) + 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
  982.   FOR t% = 1 TO 50
  983.     DoBobs
  984.   NEXT
  985.   LOCATE YPos%, XPos% + 1: COLOR col%: PRINT s$;
  986.   FOR t% = 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
  987. END SUB
  988.  
  989. SUB WechHier
  990.   FadeDown
  991.   COLOR 7, 0, 0
  992.   WIDTH 80, 25
  993.   CLS
  994.   PRINT "Thanx for playing TIE Invaders!"
  995.   FadeUp
  996.   KeybOn
  997.   SYSTEM
  998. END SUB
  999.  
  1000. SUB WrongCS
  1001.   FadeDown
  1002.   COLOR 15, 4
  1003.   CLS
  1004.   COLOR 30
  1005.   LOCATE 10, 35
  1006.   PRINT "FATAL ERROR:"
  1007.   PRINT
  1008.   COLOR 15
  1009.   PRINT TAB(18); "'Someone' has manipulated the High Score file."
  1010.   PRINT TAB(22); "High Score will be erased completely !"
  1011.   FOR t% = 1 TO 10: Nme$(t%) = "KB": Scr(t%) = 1100 - 100 * t%: NEXT
  1012.   SaveHi
  1013.   AddRep "High Score manipulation detected and file erased"
  1014.   PRINT
  1015.   PRINT
  1016.   COLOR 31
  1017.   PRINT TAB(27); "Press any key for Cold Boot."
  1018.   ResetKeyb
  1019.   FadeUp
  1020.   KeybOn
  1021.   WHILE INKEY$ = "": WEND
  1022. END SUB
  1023.  
  1024. SUB Xlife.SND
  1025. IF sndon AND PLAY(0) < 10 THEN PLAY "t160l16o4ceg>c"
  1026. END SUB
  1027.  
  1028. SUB Xplode.SND
  1029. IF sndon THEN PLAY "t255l32o5c<af#d#c<af#d#c<af#d#c<af#d#c<a#f#d#cdedcdedc"
  1030. END SUB
  1031.  
  1032. SUB Xtra.SND
  1033. IF sndon AND PLAY(0) < 5 THEN PLAY "l32t125o4cg>c"
  1034. END SUB
  1035.  
  1036. SUB XWeapon.SND
  1037. IF sndon AND PLAY(0) < 5 THEN PLAY "t160l32o5c<gec<g"
  1038. END SUB
Advertisement
Add Comment
Please, Sign In to add comment