Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE SUB startzak ()
- DECLARE SUB initzak ()
- DECLARE SUB Idiot ()
- DECLARE SUB WechHier ()
- DECLARE SUB FadeScr (h AS INTEGER)
- DECLARE SUB FadeUp ()
- DECLARE SUB FadeDown ()
- DECLARE SUB SFDown ()
- DECLARE SUB ResetKeyb ()
- DECLARE SUB GetKey ()
- DECLARE SUB KeybOff ()
- DECLARE SUB KeybOn ()
- DECLARE SUB StarWait ()
- DECLARE SUB Xtra.SND ()
- DECLARE SUB AddRep (rpt$)
- DECLARE FUNCTION CalcCS! ()
- DECLARE SUB LoadHi ()
- DECLARE SUB SaveHi ()
- DECLARE SUB WrongCS ()
- DECLARE SUB Shoot (Num AS INTEGER)
- DECLARE SUB XWeapon.SND ()
- DECLARE SUB PsEnd.SND ()
- DECLARE SUB PauseIt ()
- DECLARE SUB InitStars ()
- DECLARE SUB StarField ()
- DECLARE SUB FillScrn (jump%, col%)
- DECLARE SUB First ()
- DECLARE SUB Instructs ()
- DECLARE SUB Xlife.SND ()
- DECLARE SUB TxtFade (s$, col%, YPos%)
- DECLARE SUB Intro ()
- DECLARE SUB GetReady (Lives%)
- DECLARE SUB Xplode.SND ()
- DECLARE SUB AlienHit (bnum AS INTEGER)
- DECLARE SUB DelBob (bnum%)
- DECLARE SUB AlHit.SND ()
- DECLARE SUB Alien.SND (tp%)
- DECLARE SUB Shoot.SND ()
- DECLARE SUB DoBobs ()
- DECLARE FUNCTION AddBob% (xp%, yp%, xs%, ys%, ch$, cl%)
- DECLARE SUB HiScore (flag AS INTEGER, you AS INTEGER)
- DECLARE SUB AlShot0.SND ()
- DECLARE SUB AlShot1.SND ()
- DECLARE SUB Pause.SND ()
- ON ERROR GOTO Fehler
- TYPE Bob
- XPos AS INTEGER
- YPos AS INTEGER
- Colr AS INTEGER
- XDst AS INTEGER
- YDst AS INTEGER
- END TYPE
- DIM SHARED MaxBobs AS INTEGER
- MaxBobs = 500
- DIM SHARED Shot(MaxBobs) AS Bob, AlBob(8) AS INTEGER, Lives AS INTEGER, AlNum AS INTEGER, Hits AS INTEGER, Score, sndon AS INTEGER
- DIM SHARED StarX(49) AS INTEGER, StarC(49) AS INTEGER, StarS(49) AS INTEGER
- DIM SHARED SCol(2), SFlag AS INTEGER: SCol(0) = 8: SCol(1) = 7: SCol(2) = 15
- DIM SHARED Nme$(10), Scr(10), Csum, BChar$(MaxBobs), AlTyp(8) AS INTEGER, Tie$(1), TypCol(1) AS INTEGER, ShipX%
- DIM SHARED Keyz(127) AS INTEGER, k%, tpal(15, 2) AS INTEGER, fdval(3, 63) AS INTEGER, SYAdr(50) AS INTEGER
- DEF SEG = &HB800
- CLS
- WIDTH 80, 50
- KeybOff
- FOR p% = 0 TO 15: PALETTE p%, p%: NEXT
- FOR op% = 0 TO 1
- FOR ip% = 0 TO 7
- tpal(8 * op% + ip%, 0) = 2 * SGN(ip% AND 4) + op%
- tpal(8 * op% + ip%, 1) = 2 * SGN(ip% AND 2) + op%
- tpal(8 * op% + ip%, 2) = 2 * SGN(ip% AND 1) + op%
- NEXT
- NEXT
- FOR v% = 0 TO 63
- FOR l% = 1 TO 3
- fdval(l%, v%) = INT(l% * v% / 3)
- NEXT
- NEXT
- InitStars
- SFlag = 0
- FadeScr (0)
- SCREEN 0, 1, 0, 0
- COLOR 15, 12, 4
- CLS
- LOCATE 22, 1
- PRINT TAB(8); "This program is official property of KB of The Obsessed Maniacs.": PRINT
- PRINT TAB(10); "Main code could be changed without positive effect on game...": PRINT
- PRINT
- PRINT TAB(24); "(C) T.O.M. northern section, 1995"
- FadeUp
- RANDOMIZE TIMER
- LoadHi
- sndon = 1
- Tie$(0) = "è": Tie$(1) = "Æþµ"
- ship$(0) = " ÖÛ· ": ship$(1) = " ÑÛÑ ": ship$(2) = " ÆÎµ ": ship$(3) = " ÑÎÑ ": ship$(4) = " ÌÛ¹ "
- TypCol(0) = 14: TypCol(1) = 7
- DIM SHARED t$(9), seq(16), seqp
- initzak
- seqp = 0: PLAY OFF
- ON PLAY(3) GOSUB mrout
- FOR y% = 1 TO 50: SYAdr(y%) = 160 * y% - 162: NEXT
- SLEEP 1: GetKey: IF Keyz(1) THEN SFlag = 1
- First
- Beginning:
- Intro
- Lives = 3: Score = 0: ShtNum% = 0
- Game:
- ShipX% = 40: cnt% = 0: AlNum = 0: Hits = INT(Score / 100): ShtNum% = ShtNum% - SGN(ShtNum%)
- GetReady (Lives)
- CLS
- LOCATE 50, 20: COLOR 15: PRINT "<=- TIE INVADERS (C) KB/TOM 1995 ! -=>";
- InitStars
- KeybOff
- Main:
- GetKey
- IF Keyz(75) AND ShipX% > 1 THEN ShipX% = ShipX% - 1
- IF Keyz(77) AND ShipX% < 75 THEN ShipX% = ShipX% + 1
- IF Keyz(57) THEN
- SCnt = SCnt + 1: IF SCnt = 3 THEN Shoot (ShtNum%): SCnt = 0
- ELSE
- SCnt = 0
- END IF
- IF Keyz(25) THEN PauseIt: ResetKeyb: GOTO Main
- IF Keyz(1) THEN SFDown: GOTO Beginning
- IF 10 * RND > 9.5 AND AlNum < 8 THEN
- tp% = 0: IF 100 * RND < Hits THEN tp% = 1
- cl% = TypCol(tp%): IF RND < .05 THEN cl% = 2
- ab% = AddBob(78 * RND + 1, 1, 78 * RND + 1, 35 * RND + 1, Tie$(tp%), cl%)
- IF ab% THEN
- AlNum = AlNum + 1
- AlBob(AlNum) = ab%
- AlTyp(AlNum) = tp%
- Alien.SND (tp%)
- END IF
- END IF
- IF AlNum THEN
- an% = INT(cnt% MOD AlNum + 1)
- bn% = AlBob(an%)
- Shot(bn%).XDst = 78 * RND + 1 - AlTyp(an%)
- Shot(bn%).YDst = 35 * RND + 1
- END IF
- IF 100 * RND <= Hits AND AlNum THEN
- xn% = INT(AlNum * RND + 1)
- an% = AlBob(xn%)
- IF AlTyp(xn%) = 0 THEN
- ab% = AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "Â", 9)
- IF ab% THEN AlShot0.SND ELSE
- ELSE
- ab% = AddBob(Shot(an%).XPos + 1, Shot(an%).YPos, 0, 50, "/", 12)
- ab% = ab% OR AddBob(Shot(an%).XPos + 1, Shot(an%).YPos, 80, 50, "\", 12)
- ab% = ab% OR AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "³", 12)
- IF ab% THEN AlShot1.SND
- END IF
- END IF
- LOCATE 49, ShipX%: COLOR 3: PRINT ship$(ShtNum%);
- DoBobs
- LOCATE 50, 1: COLOR 10: PRINT "Score:"; Score; : LOCATE 50, 71: PRINT "Lives:"; Lives;
- StarField
- FOR b% = 1 TO MaxBobs
- IF Shot(b%).YPos THEN
- IF INSTR("®¯", BChar$(b%)) AND Shot(b%).XPos = Shot(b%).XDst THEN DelBob (b%)
- IF BChar$(b%) = "º" THEN AlienHit (b%)
- IF INSTR("³Â/\", BChar$(b%)) AND Shot(b%).YPos = 49 AND ABS(Shot(b%).XPos - ShipX% - 2) < 2 GOTO LebenWech
- IF BChar$(b%) = "S" AND Shot(b%).YPos = 49 THEN
- xp% = ABS(Shot(b%).XPos - ShipX% - 2)
- DelBob (b%)
- IF xp% < 2 THEN ShtNum% = ShtNum% + 1: XWeapon.SND
- IF ShtNum% > 4 THEN ShtNum% = 4: Score = Score + 1000
- END IF
- END IF
- NEXT
- IF RND < .5 THEN cnt% = cnt% + 1
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- GOTO Main
- LebenWech:
- FOR t% = 4 TO MaxBobs: Shot(t%).YPos = 0: NEXT
- Shot(1).YPos = 49: Shot(2).YPos = 49: Shot(3).YPos = 49
- Shot(1).XPos = ShipX% + 1: Shot(2).XPos = ShipX% + 2: Shot(3).XPos = ShipX% + 3
- Shot(1).XDst = 0: Shot(2).XDst = ShipX% + 2: Shot(3).XDst = 80
- Shot(1).YDst = 0: Shot(2).YDst = 0: Shot(3).YDst = 0
- BChar$(1) = "Ö": BChar$(2) = "Û": BChar$(3) = "·"
- Shot(1).Colr = 3: Shot(2).Colr = 3: Shot(3).Colr = 3
- Xplode.SND
- WHILE Shot(1).YPos OR Shot(2).YPos OR Shot(3).YPos > 0
- DoBobs
- StarField
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WEND
- SLEEP 1
- Lives = Lives - 1
- IF Lives THEN FadeDown: GOTO Game
- LOCATE 24, 35: COLOR 15: PRINT "Game Over!"
- a$ = "Score:" + STR$(Score): LOCATE 26, 40 - LEN(a$) / 2: COLOR 2: PRINT a$;
- IF sndon THEN
- PLAY "mft100l32o5c<gd#gd#cd#c<g>c<gd#gd#c<g"
- PLAY "o5c<g#fg#fcfc<g#>c<g#fg#fc<g#"
- PLAY "o4bgfgf<b>f<bgbgfgf<bg"
- PLAY "o2cdeg>cdeg>cdeg>cdegl64o6c<c<c<c<c<c<ccl16c"
- END IF
- SLEEP 1
- FadeDown
- CALL HiScore(1, 0)
- GOTO Beginning
- Fehler:
- IF ERR = 70 THEN RESUME
- SCREEN 0, 1, 1, 1
- COLOR 30, 4
- CLS
- LOCATE 10, 35
- IF ERR < 52 GOTO Ferr
- PRINT "DISK ERROR !"
- PRINT
- COLOR 15
- PRINT TAB(20); "Something is wrong with the Hard Disk."
- PRINT TAB(14); "Press (R) to retry,(I) to ignore or (A) to abort."
- KeybOn
- DO
- k$ = INKEY$
- IF LCASE$(k$) = "r" THEN SCREEN 0, 1, 0, 0: KeybOff: RESUME
- IF LCASE$(k$) = "i" THEN SCREEN 0, 1, 0, 0: KeybOff: RESUME NEXT
- IF LCASE$(k$) = "a" THEN AddRep "Program aborted because of disk Error #" + STR$(ERR): SCREEN 0, 1, 0, 0: COLOR 7, 0: CLS : SYSTEM
- LOOP
- Ferr:
- KeybOn
- PRINT "FATAL ERROR:"
- PRINT
- COLOR 15
- PRINT TAB(25); "Internal error #"; ERR; " appeared."
- PRINT TAB(26); "Please notify it and contact"
- PRINT
- PRINT TAB(26); "Tammo Hinrichs, Kl. 11d, AGO"
- PRINT
- COLOR 31
- PRINT
- PRINT TAB(30); "PRESS ANY KEY TO QUIT"
- WHILE INKEY$ <> "": WEND
- DO: a$ = INKEY$: LOOP WHILE a$ = ""
- AddRep "Program aborted because of Fatal Error #" + STR$(ERR)
- SCREEN 0, 1, 0, 0
- COLOR 7, 0
- CLS
- SYSTEM
- mrout:
- IF seq(seqp) = -1 THEN seqp = 0
- IF sndon THEN PLAY t$(seq(seqp))
- seqp = seqp + 1
- RETURN
- FUNCTION AddBob% (xp%, yp%, xs%, ys%, ch$, cl%)
- ok% = 0: FOR t% = 1 TO MaxBobs
- IF Shot(t%).YPos = 0 THEN ok% = 1: EXIT FOR
- NEXT
- IF ok% THEN
- Shot(t%).XPos = xp%
- Shot(t%).YPos = yp%
- Shot(t%).XDst = xs%
- Shot(t%).YDst = ys%
- BChar$(t%) = ch$
- Shot(t%).Colr = cl%
- AddBob = t%
- ELSE
- AddBob = 0
- END IF
- END FUNCTION
- SUB AddRep (rpt$)
- OPEN "invaders.rpt" FOR APPEND AS 2
- PRINT #2, DATE$; " , "; TIME$; " : "; rpt$
- CLOSE 2
- END SUB
- SUB AlHit.SND
- IF sndon AND PLAY(0) < 5 THEN PLAY "t200l64o2bagfedc"
- END SUB
- SUB Alien.SND (tp%)
- IF sndon AND PLAY(0) < 5 THEN
- IF tp% = 0 THEN PLAY "t90l64o2f>f>f" ELSE PLAY "t90l64o3f<f<f"
- END IF
- END SUB
- SUB AlienHit (bnum AS INTEGER)
- IF AlNum THEN
- ok% = 0: FOR t% = 1 TO AlNum
- 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
- NEXT
- IF ok% = 0 THEN EXIT SUB
- Typ% = AlTyp(t%)
- IF Shot(ab%).Colr = 2 THEN x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, ShipX% + 2, 49, "S", 10): IF x THEN Xtra.SND
- x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, Shot(ab%).XPos - 3, Shot(ab%).YPos, "®", 15)
- x = AddBob(Shot(ab%).XPos, Shot(ab%).YPos, Shot(ab%).XPos + 3, Shot(ab%).YPos, "¯", 15)
- DelBob (ab%)
- DelBob (bnum)
- AlHit.SND
- IF t% < AlNum THEN
- FOR x = t% TO AlNum - 1
- AlBob(x) = AlBob(x + 1)
- AlTyp(x) = AlTyp(x + 1)
- NEXT
- END IF
- AlNum = AlNum - 1
- Hits = Hits + 1
- Score = Score + 3 * INT(LOG(Hits + 3) * (Typ% + 1) + .5)
- IF Score MOD 999 - Hits < 0 THEN Lives = Lives + 1: Xlife.SND
- END IF
- END SUB
- SUB AlShot0.SND
- IF sndon AND PLAY(0) < 5 THEN PLAY "t255l32o5gfe"
- END SUB
- SUB AlShot1.SND
- IF sndon AND PLAY(0) < 5 THEN PLAY "t255l32o4gfe"
- END SUB
- FUNCTION CalcCS
- x = 0
- FOR t% = 1 TO 10
- x = x + LEN(Nme$(t%)) * Scr(t%)
- NEXT t%
- CalcCS = x MOD 37494
- END FUNCTION
- SUB DelBob (bnum%)
- LOCATE Shot(bnum%).YPos, Shot(bnum%).XPos
- PRINT SPACE$(LEN(BChar$(bnum%)));
- Shot(bnum%).YPos = 0
- END SUB
- SUB DoBobs
- FOR t% = 1 TO MaxBobs
- IF Shot(t%).YPos THEN
- LOCATE Shot(t%).YPos, Shot(t%).XPos: PRINT SPACE$(LEN(BChar$(t%)));
- Shot(t%).YPos = Shot(t%).YPos + SGN(Shot(t%).YDst - Shot(t%).YPos)
- Shot(t%).XPos = Shot(t%).XPos + SGN(Shot(t%).XDst - Shot(t%).XPos)
- 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
- END IF
- NEXT
- END SUB
- SUB FadeDown
- FOR i% = 63 TO 0 STEP -1: FadeScr (i%): NEXT
- END SUB
- SUB FadeScr (h AS INTEGER)
- OUT &H3C8, 0
- FOR c% = 0 TO 15
- FOR p% = 0 TO 2
- OUT &H3C9, fdval(tpal(c%, p%), h)
- NEXT
- NEXT
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- END SUB
- SUB FadeUp
- FOR i% = 0 TO 63: FadeScr i%: NEXT
- END SUB
- SUB First
- COLOR , 0
- FadeDown
- CLS
- FadeScr 63
- cnt% = 0
- DIM txt$(2)
- txt$(0) = SPACE$(76) + " T h e "
- txt$(1) = SPACE$(76) + "O b s e s s e d "
- txt$(2) = SPACE$(76) + " M a n i a c s "
- fx$ = "p r o u d l y p r e s e n t :"
- InitStars
- ResetKeyb
- KeybOff
- startzak
- DO UNTIL cnt% = 310 OR Keyz(57)
- GetKey
- StarField
- IF cnt% > 19 AND cnt% < 20 + 3 * 45 THEN
- c2% = cnt% - 20
- tn% = INT(c2% / 45)
- tp% = c2% MOD 45 + 1
- COLOR 11
- LOCATE 24 + 2 * tn%, 1
- PRINT MID$(txt$(tn%), tp%, 79);
- IF cnt% = 154 THEN tn% = 3
- END IF
- IF tn% > 0 THEN
- COLOR 11
- FOR t% = 0 TO tn% - 1
- LOCATE 24 + 2 * t%, 1
- PRINT MID$(txt$(t%), 45)
- NEXT
- END IF
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- cnt% = cnt% + 1
- c3% = (cnt% - 185) / 2: IF c3% < 0 THEN c3% = 0
- IF c3% > 32 THEN c3% = 32
- COLOR 13
- LOCATE 34, 25
- PRINT LEFT$(fx$, c3%);
- LOOP
- FadeDown
- END SUB
- SUB GetKey
- FOR t% = 1 TO 4
- k% = 0
- DO
- o% = k%
- DO: k% = INP(&H60): LOOP WHILE k% = 224
- IF k% AND 128 THEN
- Keyz(k% - 128) = 0
- ELSE Keyz(k%) = 1
- END IF
- LOOP UNTIL o% = k%
- NEXT
- IF Keyz(29) AND Keyz(56) AND Keyz(83) THEN Idiot
- END SUB
- SUB GetReady (Lives%)
- KeybOff
- CLS
- LOCATE 50, 20: COLOR 15: PRINT "<=- TIE INVADERS (C) KB/TOM 1995 ! -=>";
- LOCATE 24, 35: COLOR 15: PRINT "Get Ready!"
- LOCATE 26, 36: COLOR 2: PRINT "Lives:"; Lives%
- FadeUp
- IF sndon THEN
- PLAY "mft100l64o3gd<bg>gd<bn0>gd<bg"
- PLAY "l64o4c<gec>c<gec>c<gec"
- PLAY "o4gec<g>gec<g>gec<g"
- PLAY "o4fc<af>e<bge>d<afd"
- PLAY "o5c<gec>c<gec>c<gec"
- PLAY "o4gec<g>gec<g>gec<gmb"
- END IF
- SLEEP 1
- END SUB
- SUB HiScore (flag AS INTEGER, you AS INTEGER)
- DIM hicl%(10)
- hicl%(1) = 15: hicl%(2) = 7: hicl%(3) = 13: hicl%(4) = 5: hicl%(5) = 4
- FOR t% = 6 TO 10: hicl%(t%) = 6: NEXT
- CLS
- InitStars
- StarField
- WIDTH 80, 50
- COLOR 1
- LOCATE 1, 13: PRINT " ÛÛ ÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛ ÛÛ "
- LOCATE 2, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 3, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 4, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 5, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 6, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 7, 13: PRINT " ÛÛÛÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛ "
- LOCATE 8, 13: PRINT " ÛÛÛÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛ "
- LOCATE 9, 13: PRINT " ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ ÛÛ "
- LOCATE 10, 13: PRINT " SÛ ÛC ÛÛ OOÛÛR RR ÛE "
- LOCATE 11, 13: PRINT " SS CC CCÛO OOÛR ÛR ÛE "
- COLOR 15
- LOCATE 12, 13: PRINT " ** SSS CC OO OO RR RR EE ** "
- LOCATE 13, 13: PRINT "****** SSSS CC OO OO RRRR EEEE ****** "
- LOCATE 14, 13: PRINT " ** SSS CC OO OO RR R EE ** "
- LOCATE 15, 13: PRINT " * * SS SS CC CC OO OO RR RR EE E * * "
- LOCATE 16, 13: PRINT " SSSS CCC OOO RR RR EEEEE "
- LOCATE 10, 26: PRINT "SSS"
- LOCATE 10, 34: PRINT "CC"
- LOCATE 10, 39: PRINT "O"
- LOCATE 10, 45: PRINT "R"
- LOCATE 10, 51: PRINT "EEEE"
- LOCATE 11, 25: PRINT "SS"
- LOCATE 11, 39: PRINT "OO"
- LOCATE 11, 45: PRINT "R"
- LOCATE 11, 48: PRINT "R"
- LOCATE 11, 51: PRINT "E E"
- LOCATE 11, 13: PRINT " * *"
- LOCATE 11, 61: PRINT " * *"
- COLOR 5
- LOCATE 18, 13: PRINT "ú úúÄÄÄÄÍÍÍ THEùTIEùINVADERS'ùHALLùOFùFAME ÍÍÍÄÄÄÄúú ú"
- IF flag = 1 THEN
- LoadHi
- ok% = 0
- FOR x% = 1 TO 10
- IF Score > Scr(x%) THEN ok% = 1: EXIT FOR
- NEXT
- IF ok% = 1 THEN
- COLOR 11
- LOCATE 20, 1
- PRINT TAB(32); "Congratulations!": PRINT
- COLOR 3
- PRINT TAB(22); "You have got one of our top scores !"
- FadeUp
- IF sndon THEN PLAY "mbt200l32o3gecn0>c<gen0>ec<gn0>gecgecgn0ec<gn0>gecgecgecgecgecg" ELSE
- COLOR 14
- LOCATE 26, 20
- PRINT "Please enter your name: ";
- COLOR 15
- nam$ = ""
- WHILE INKEY$ <> "": WEND
- KeybOn
- LINE INPUT nam$
- KeybOff
- nam$ = LTRIM$(RTRIM$(LEFT$(nam$, 16)))
- IF nam$ = "" THEN nam$ = "Der Enterdrcker" ELSE
- IF x% < 10 THEN
- FOR t% = 10 TO x% + 1 STEP -1
- Nme$(t%) = Nme$(t% - 1): Scr(t%) = Scr(t% - 1)
- NEXT
- END IF
- Scr(x%) = Score: Nme$(x%) = nam$
- SaveHi
- AddRep "'" + Nme$(x%) + "' achieved Place" + STR$(x%) + " with score" + STR$(Scr(x%))
- FadeDown
- HiScore 0, x%
- ELSE
- flag = 0
- you = 0
- LOCATE 42, 21
- COLOR 8
- PRINT "Sorry... they're all better than you!"
- END IF
- END IF
- IF flag = 0 THEN
- LoadHi
- FOR t% = 1 TO 10
- COLOR hicl%(t%)
- LOCATE 2 * t% + 20, 26 - INT(t% / 10)
- PRINT t%;
- LOCATE 2 * t% + 20, 28
- PRINT ". "; Nme$(t%);
- s$ = MID$(STR$(Scr(t%)), 2)
- LOCATE 2 * t% + 20, 53 - LEN(s$)
- PRINT s$;
- NEXT
- IF you THEN
- COLOR 11
- LOCATE 2 * you + 20, 19
- PRINT "YOU ¯";
- LOCATE 2 * you + 20, 55
- PRINT "® YOU";
- END IF
- FadeUp
- IF sndon THEN
- PLAY "t200l32o4c<g>c<g>c<g>c<g>c<g>c<g>c<g>n0n0"
- PLAY "c<g>c<g>c<g>n0n0c<g>c<g>c<g>n0n0"
- PLAY "gcgcgcgcgcgcgcgcgcgcgcgc"
- END IF
- LOCATE 46, 26: COLOR 15: PRINT "PRESS ANY KEY TO CONTINUE."
- StarWait
- SFDown
- END IF
- END SUB
- SUB Idiot
- FadeDown
- SCREEN 0, 1, 2, 2
- COLOR 11, 4
- CLS
- PRINT : PRINT
- PRINT : PRINT " So, dir gef„llt dieses Spiel also nicht?"
- PRINT : PRINT " Du meinst, du kommst hier einfach so raus?"
- PRINT : PRINT " Du denkst, nur weil dieses Spiel in Basic programmiert ist, kannst"
- PRINT : PRINT " du es einfach so berlisten und so weiter?"
- PRINT : PRINT
- COLOR 14
- PRINT : PRINT " Dann hast du ein Problem."
- PRINT : PRINT " Denn wenn du unbedingt ein Spiel brauchst, das deine krampfhaften"
- PRINT : PRINT " Guckmalichbinjasovieltolleralsderprogrammiererzeigversuche nicht"
- PRINT : PRINT " abf„ngt, bist du hier ziemlich falsch. Fr solche Problemf„lle emp-"
- PRINT : PRINT " fehle ich Windoze oder irgendwas in der Richtung."
- PRINT : PRINT " Auáerdem jetzt noch ein kleiner Rat:"
- COLOR 31
- PRINT : PRINT
- PRINT : PRINT " DU DRšCKST JETZT MAL GANZ BRAV AUF SPACE UND SPIELST DANN WEITER ,KLAR ???"
- PRINT : PRINT
- PRINT : PRINT
- COLOR 11
- PRINT : PRINT " Ein sehr entrsteter Programmierer"
- FadeUp
- ResetKeyb
- DO: LOOP UNTIL INP(&H60) = 57
- ResetKeyb
- FadeDown
- SCREEN 0, 1, 0, 0
- FadeUp
- END SUB
- SUB InitStars
- FOR t% = 1 TO 49: StarX(t%) = INT(79 * RND): StarC(t%) = SCol(INT(3 * RND)): StarS(t%) = INT(3 * RND) + 1: NEXT
- END SUB
- SUB initzak
- m$ = "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- t$(0) = m$
- m$ = "msl8o0d#>d#"
- m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
- m$ = m$ + "msl8o0d#f"
- m$ = m$ + "mlo4l64fd<a#fd<a#fd"
- m$ = m$ + "msl8o0f>f"
- t$(1) = m$
- m$ = "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "mnl8o3c"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mnl8o3c"
- t$(2) = m$
- m$ = "msl8o0d#>d#"
- m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
- m$ = m$ + "mno3l8cd#d"
- m$ = m$ + "msl8o0f>f"
- t$(3) = m$
- m$ = "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "mnl8o3g"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mnl8o3g"
- t$(4) = m$
- m$ = "msl8o0d#>d#"
- m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
- m$ = m$ + "mno3l8ga#f"
- m$ = m$ + "msl8o0f>f"
- t$(5) = m$
- m$ = "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "mnl8o4c"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mnl8o4c"
- t$(6) = m$
- m$ = "msl8o0d#>d#"
- m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
- m$ = m$ + "mno4l8c<a#g"
- m$ = m$ + "msl8o0f>f"
- t$(7) = m$
- m$ = "msl8o0c>c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mlo4l64gd#c<gd#c<gd#"
- m$ = m$ + "mnl8o3f"
- m$ = m$ + "msl8o0c"
- m$ = m$ + "mnl8o3f"
- t$(8) = m$
- m$ = "msl8o0d#>d#"
- m$ = m$ + "mlo4l64d#c<g#d#c<g#d#c"
- m$ = m$ + "mno3l8gfc"
- m$ = m$ + "msl8o0f>f"
- t$(9) = m$
- 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
- END SUB
- SUB Instructs
- CLS
- COLOR 15
- PRINT : PRINT "Instructions for TIE Invaders:"
- PRINT : PRINT "You are this little thing here ";
- COLOR 3: PRINT "ÖÛ· ";
- COLOR 15: PRINT "and have to shoot all the big bad"
- PRINT : PRINT "TIE fighters from space (";
- COLOR 14: PRINT Tie$(0); : COLOR 15: PRINT ","; : COLOR 7: PRINT Tie$(1);
- COLOR 15: PRINT "). Do this by pressing the space bar to shoot"
- PRINT : PRINT "and the arrow keys to move left or right."
- PRINT : PRINT "But attention. The TIE fighters won't be pleased about the things you do"
- PRINT : PRINT "and shoot back to do the same thing with you you did to them, namely:"
- PRINT : PRINT "KILL YOU! So watch out for their deadly missiles (";
- COLOR 9: PRINT "Â"; : COLOR 15: PRINT ","; : COLOR 12: PRINT "/"; : COLOR 15: PRINT ","; : COLOR 12: PRINT "\"; : COLOR 15: PRINT ","; : COLOR 12: PRINT "³";
- COLOR 15: PRINT ") and avoid them as"
- PRINT : PRINT "often as you can, because if not, ya gonna lose one of yer 3 lives (yo man!)."
- PRINT : PRINT "But calm down. Every 1000 points you'll gain an extra life. "
- PRINT : PRINT ""
- PRINT : PRINT "So, now have fun with this little product of my boredom and GOOD LUCK!"
- COLOR 11: PRINT : PRINT : PRINT : PRINT "KB/TOM in Nov/Dec 1995!"
- COLOR 15: PRINT : PRINT
- PRINT : PRINT "P.S. Sometimes there will be a green ("; : COLOR 2: PRINT "Û"; : COLOR 15: PRINT ") TIE fighter"
- PRINT : PRINT "on screen. Shoot it and it will reveal a falling S. Now just don't move,"
- PRINT : PRINT "collect the S and your shoot power will be increased."
- COLOR 7: PRINT : PRINT : PRINT : PRINT : PRINT : PRINT "PRESS ANY KEY TO CONTINUE"
- FadeUp
- StarWait
- SFDown
- END SUB
- SUB Intro
- DIM switch$(1): switch$(0) = "off": switch$(1) = "on "
- lab1:
- KeybOff
- CLS
- IF sndon THEN PLAY ON: IF PLAY(0) < 3 THEN startzak
- FadeScr 63
- CALL TxtFade("±±±±± ±±±±± ±±±±±", 6, 3)
- CALL TxtFade("² ² ² ² ² ²", 6, 4)
- CALL TxtFade(" Û Û Û ", 6, 5)
- CALL TxtFade(" Û Û ÛÛÛÛ ", 14, 6)
- CALL TxtFade(" ² ² ² ", 14, 7)
- CALL TxtFade(" ± ± ± ±", 14, 8)
- CALL TxtFade(" °°° °°°°° °°°°°", 14, 9)
- InitStars
- LOCATE 12, 1
- COLOR &H4: PRINT TAB(17); "±±±±± ± ± ± ± ± ±±± ±±±±± ±±±± ±±±"
- COLOR &H4: PRINT TAB(17); " ² ² ² ² ² ² ² ² ² ² ² ² ² ² "
- COLOR &H4: PRINT TAB(17); " Û ÛÛ Û Û Û Û Û Û Û Û Û Û Û "
- COLOR &HC: PRINT TAB(17); " Û Û Û Û Û Û ÛÛÛÛÛ Û Û ÛÛÛÛ ÛÛÛÛ ÛÛÛ "
- COLOR &HC: PRINT TAB(17); " ² ² ²² ² ² ² ² ² ² ² ² ² ²"
- COLOR &HC: PRINT TAB(17); " ± ± ± ± ± ± ± ± ± ± ± ± ± ± "
- COLOR &HC: PRINT TAB(17); "°°°°° ° ° ° °° °° °°° °°°°° °° °° °°° "
- LOCATE 21, 1
- COLOR &H1: PRINT TAB(22); "\\ °ÛÛ °ÛÛ °ÛÛÛ °ÛÛÛÛ °ÛÛÛÛ //"
- COLOR &H9: PRINT TAB(22); " \\ °ÛÛ °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ //"
- COLOR &HB: PRINT TAB(22); " \\ °ÛÛ °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ //"
- COLOR &HF: PRINT TAB(22); " >>°ÛÛ°Û°ÛÛ°ÛÛÛÛÛ°ÛÛÛÛ °ÛÛÛÛ <<"
- COLOR &HB: PRINT TAB(22); " // °ÛÛ°Û°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ \\"
- COLOR &H9: PRINT TAB(22); " // °ÛÛ°Û°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ \\"
- COLOR &H1: PRINT TAB(22); "// °ÛÛÛÛÛ °ÛÛ°ÛÛ°ÛÛ°ÛÛ°ÛÛ \\"
- COLOR 10: LOCATE 30, 20: PRINT "-=*> The * High Resolution * Edition <*=-"
- COLOR 8: LOCATE 50, 2: PRINT "(C) 1995 KB of T.O.M. + ÅÝoPS"; : LOCATE 1, 1
- AlNum = 0: k$ = ""
- WHILE INKEY$ <> "": WEND
- lab2:
- IF (10 * RND) > 9.5 AND AlNum < 8 THEN
- ab% = AddBob(78 * RND + 1, 16 * RND + 32, 78 * RND + 1, 16 * RND + 32, "è", 14)
- IF ab% THEN
- AlNum = AlNum + 1
- AlBob(AlNum) = ab%
- END IF
- END IF
- IF AlNum THEN
- bn% = AlBob(cnt% MOD AlNum + 1)
- Shot(bn%).XDst = 78 * RND + 1
- Shot(bn%).YDst = 16 * RND + 32
- END IF
- IF 100 * RND <= 15 AND AlNum > 0 THEN
- an% = AlBob(INT(AlNum * RND + .9))
- ab% = AddBob(Shot(an%).XPos, Shot(an%).YPos, Shot(an%).XPos, 50, "Â", 9)
- END IF
- DoBobs
- COLOR 15
- LOCATE 36, 26: PRINT "press 'H' to view highscores"
- LOCATE 38, 32: PRINT "'I' for instructions"
- LOCATE 40, 32: PRINT "'S' to turn sound "; switch$(1 - sndon)
- LOCATE 42, 32: PRINT "'SPACE' to start game "
- LOCATE 44, 32: PRINT "'ESC' to exit to DOS"
- COLOR 7: LOCATE 46, 30: PRINT "In game press 'P' to pause"
- StarField
- IF RND < .5 THEN cnt% = cnt% + 1
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- GetKey
- IF Keyz(35) THEN PLAY OFF: SFDown: HiScore 0, 0: startzak: GOTO lab1
- IF Keyz(23) THEN SFDown: Instructs: GOTO lab1
- IF Keyz(31) THEN sndon = 1 - sndon: IF sndon = 1 THEN startzak ELSE PLAY OFF
- IF Keyz(57) THEN PLAY OFF: GOTO lab3
- IF Keyz(1) THEN PLAY OFF: WechHier
- GOTO lab2
- lab3:
- FOR t% = 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
- SFDown
- END SUB
- SUB KeybOff
- OUT &H21, 2
- ResetKeyb
- END SUB
- SUB KeybOn
- DO: LOOP UNTIL INP(&H60) = INP(&H60)
- OUT &H21, 0
- DO: LOOP UNTIL INKEY$ = ""
- END SUB
- SUB LoadHi
- OPEN "invaders.his" FOR INPUT AS 1
- FOR t% = 1 TO 10
- INPUT #1, Nme$(t%), Scr(t%)
- NEXT
- INPUT #1, Csum
- CLOSE 1
- IF Csum <> CalcCS THEN WrongCS
- END SUB
- SUB Pause.SND
- IF sndon THEN PLAY "t125l64o0ceg>ceg>ceg>ceg>ceg>ceg>ceg"
- END SUB
- SUB PauseIt
- Pause.SND
- DO WHILE Keyz(57) = 0
- GetKey
- LOCATE 23, 34
- COLOR 15
- PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿": PRINT TAB(34); "³";
- COLOR INT(15 * RND + 1): PRINT "Game paused!";
- COLOR 15: PRINT "³": PRINT TAB(34); "ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ"
- StarField
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- LOOP
- LOCATE 11, 1
- FOR t% = 1 TO 3: PRINT TAB(34); SPACE$(14): NEXT
- PsEnd.SND
- END SUB
- SUB PsEnd.SND
- IF sndon THEN PLAY "t125l64o6gec<gec<gec<gec<gec<gec<gec"
- END SUB
- SUB ResetKeyb
- FOR k% = 0 TO 127: Keyz(k%) = 0: NEXT
- DO: LOOP UNTIL INP(&H60) = INP(&H60)
- END SUB
- SUB SaveHi
- OPEN "invaders.his" FOR OUTPUT AS 1
- FOR t% = 1 TO 10
- WRITE #1, Nme$(t%), Scr(t%)
- NEXT
- WRITE #1, CalcCS
- CLOSE 1
- END SUB
- SUB SFDown
- FOR i% = 63 TO 0 STEP -1: FadeScr i%: StarField: NEXT
- END SUB
- SUB Shoot (Num AS INTEGER)
- ab% = 0
- IF Num <> 1 THEN ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% + 2, 0, "º", 13)
- IF Num = 1 OR Num = 2 THEN
- ab% = ab% OR AddBob(ShipX% + 1, 49, ShipX% + 1, 0, "º", 13)
- ab% = ab% OR AddBob(ShipX% + 3, 49, ShipX% + 3, 0, "º", 13)
- END IF
- IF Num = 3 THEN
- ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% - 1, 0, "º", 13)
- ab% = ab% OR AddBob(ShipX% + 2, 49, ShipX% + 5, 0, "º", 13)
- END IF
- IF Num > 3 THEN
- ab% = ab% OR AddBob(ShipX% + 2, 49, 0, 0, "º", 13)
- ab% = ab% OR AddBob(ShipX% + 2, 49, 80, 0, "º", 13)
- END IF
- IF ab% THEN Shoot.SND
- END SUB
- SUB Shoot.SND
- IF sndon AND PLAY(0) < 8 THEN PLAY "t255l64o6gc<gc<gc<gc<gc<gc<gc"
- END SUB
- SUB StarField
- IF SFlag THEN EXIT SUB
- FOR t% = 1 TO 49
- IF PEEK(SYAdr(t%) + 2 * StarX(t%)) = 249 THEN POKE SYAdr(t%) + 2 * StarX(t%), 32
- StarX(t%) = (StarX(t%) + StarS(t%)) MOD 79
- IF PEEK(SYAdr(t%) + 2 * StarX(t%)) = 32 THEN ad% = SYAdr(t%) + 2 * StarX(t%): POKE ad%, 249: POKE ad% + 1, StarC(t%)
- NEXT
- END SUB
- SUB startzak
- PLAY "t180mb"
- PLAY ON: seqp = 0: IF PLAY(0) < 3 THEN PLAY t$(seq(0)): seqp = 1
- END SUB
- SUB StarWait
- KeybOff
- WHILE Keyz(57) = 0
- GetKey
- StarField
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WAIT &H3DA, 8: WAIT &H3DA, 8, 8
- WEND
- END SUB
- SUB TxtFade (s$, col%, YPos%)
- s$ = LEFT$(s$, MaxBobs)
- XPos% = 39 - LEN(s$) / 2
- f% = 1
- FOR t% = 1 TO LEN(s$)
- IF MID$(s$, t%, 1) <> " " THEN
- Shot(f%).XPos = 79 * RND + 1
- Shot(f%).YPos = 5 * RND + 45
- Shot(f%).XDst = XPos% + t%
- Shot(f%).YDst = YPos%
- BChar$(f%) = MID$(s$, t%, 1)
- Shot(f%).Colr = col%
- f% = f% + 1
- END IF
- NEXT
- IF LEN(s$) < MaxBobs THEN FOR t% = LEN(s$) + 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
- FOR t% = 1 TO 50
- DoBobs
- NEXT
- LOCATE YPos%, XPos% + 1: COLOR col%: PRINT s$;
- FOR t% = 1 TO MaxBobs: Shot(t%).YPos = 0: NEXT
- END SUB
- SUB WechHier
- FadeDown
- COLOR 7, 0, 0
- WIDTH 80, 25
- CLS
- PRINT "Thanx for playing TIE Invaders!"
- FadeUp
- KeybOn
- SYSTEM
- END SUB
- SUB WrongCS
- FadeDown
- COLOR 15, 4
- CLS
- COLOR 30
- LOCATE 10, 35
- PRINT "FATAL ERROR:"
- PRINT
- COLOR 15
- PRINT TAB(18); "'Someone' has manipulated the High Score file."
- PRINT TAB(22); "High Score will be erased completely !"
- FOR t% = 1 TO 10: Nme$(t%) = "KB": Scr(t%) = 1100 - 100 * t%: NEXT
- SaveHi
- AddRep "High Score manipulation detected and file erased"
- PRINT
- PRINT
- COLOR 31
- PRINT TAB(27); "Press any key for Cold Boot."
- ResetKeyb
- FadeUp
- KeybOn
- WHILE INKEY$ = "": WEND
- END SUB
- SUB Xlife.SND
- IF sndon AND PLAY(0) < 10 THEN PLAY "t160l16o4ceg>c"
- END SUB
- SUB Xplode.SND
- IF sndon THEN PLAY "t255l32o5c<af#d#c<af#d#c<af#d#c<af#d#c<a#f#d#cdedcdedc"
- END SUB
- SUB Xtra.SND
- IF sndon AND PLAY(0) < 5 THEN PLAY "l32t125o4cg>c"
- END SUB
- SUB XWeapon.SND
- IF sndon AND PLAY(0) < 5 THEN PLAY "t160l32o5c<gec<g"
- END SUB
Advertisement
Add Comment
Please, Sign In to add comment