home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 26
/
CD_ASCQ_26_1295.iso
/
vrac
/
begin_jb.zip
/
ALIENS.BAS
next >
Wrap
BASIC Source File
|
1995-07-21
|
8KB
|
211 lines
DECLARE SUB title (Players!, Max!)
' Initilising varibles
' $DYNAMIC
CALL title(Players, Max)
TYPE xy
x AS INTEGER
y AS INTEGER
alive AS INTEGER
END TYPE
DIM asp1(Max) AS xy 'aliens going up
DIM asp2(Max) AS xy 'aliens going down
DIM ps(2) AS xy '2 players
DIM bullp(2) AS xy '1 bullet for each player
DIM bulla(Max, 2) AS xy '1 bullet for each alien
DIM score(2) '2 score keepers
DIM killed(2) 'sets of aliens killed
player1$ = "\/"
player2$ = "/\"
alien$ = CHR$(1)
fire1 = 0: fire2 = 0
endp1 = 0:
IF Players = 1 THEN endp2 = 1: ELSE endp2 = 0
FOR x = 1 TO Max
asp1(x).y = 10
asp2(x).y = 12
asp1(x).x = (78 - Max * 2) - 1 + x * 2
asp2(x).x = x * 2
NEXT
killed(1) = 0: killed(2) = 0
ps(1).y = 2: ps(1).x = 19
ps(2).y = 22: ps(2).x = 59
' main game
CLS 'clearscreen!!!
DO
' Keys check:-
FOR c = 1 TO Max
a$ = LCASE$(INKEY$)
'p1's
IF endp1 = 0 THEN
IF a$ = "z" THEN LOCATE ps(1).y, ps(1).x: PRINT " ": ps(1).x = ps(1).x - 1
IF a$ = "x" THEN LOCATE ps(1).y, ps(1).x: PRINT " ": ps(1).x = ps(1).x + 1
IF a$ = " " AND fire1 = 0 THEN fire1 = 1: bullp(1).x = ps(1).x: bullp(1).y = 3
END IF
' p2's
IF endp2 = 0 THEN
IF a$ = "o" THEN LOCATE ps(2).y, ps(2).x: PRINT " ": ps(2).x = ps(2).x - 1
IF a$ = "p" THEN LOCATE ps(2).y, ps(2).x: PRINT " ": ps(2).x = ps(2).x + 1
IF a$ = CHR$(13) AND fire2 = 0 THEN fire2 = 1: bullp(2).x = ps(2).x: bullp(2).y = 20
END IF
'
IF a$ = "q" THEN EXIT DO
' firing
COLOR 1
IF fire1 > 0 THEN
LOCATE bullp(1).y, bullp(1).x: PRINT " "
bullp(1).y = bullp(1).y + 1
LOCATE bullp(1).y, bullp(1).x: PRINT "*"
END IF
IF fire2 > 0 THEN
LOCATE bullp(2).y, bullp(2).x: PRINT " "
bullp(2).y = bullp(2).y - 1
LOCATE bullp(2).y, bullp(2).x: PRINT "*"
END IF
IF bullp(1).y = ps(2).y AND bullp(1).x = ps(2).x THEN LOCATE bullp(1).y, bullp(1).x: PRINT " ": endp2 = 1
IF bullp(2).y = ps(1).y AND bullp(2).x = ps(1).x THEN LOCATE bullp(2).y, bullp(2).x: PRINT " ": endp1 = 1
IF bullp(1).y = 23 THEN fire1 = 0: LOCATE bullp(1).y, bullp(1).x: PRINT " "
IF bullp(2).y = 1 THEN fire2 = 0: LOCATE bullp(2).y, bullp(2).x: PRINT " "
' off screen checking
FOR p = 1 TO 2
IF ps(p).x > 78 THEN ps(p).x = 1
IF ps(p).x < 1 THEN ps(p).x = 78
NEXT
' Display players
COLOR 2
IF endp1 = 0 THEN LOCATE ps(1).y, ps(1).x: PRINT player1$
COLOR 10
IF endp2 = 0 THEN LOCATE ps(2).y, ps(2).x: PRINT player2$
IF endp1 = 1 THEN COLOR 8: ELSE COLOR 15
LOCATE 1, 1: PRINT "Player 1 Score:-"; score(1)
IF endp2 = 1 THEN COLOR 8: ELSE COLOR 15
LOCATE 23, 1: PRINT "Player 2 Score:-"; score(2)
COLOR 4
' middle line :- COLOR 6:LOCATE 11, 1: FOR p = 1 TO 78: PRINT "-"; : NEXT
' aliens1
IF asp1(c).alive = 0 THEN
LOCATE asp1(c).y, asp1(c).x: PRINT " "
asp1(c).x = asp1(c).x + 1
IF asp1(c).x = 78 THEN asp1(c).y = asp1(c).y - 1: asp1(c).x = 1
LOCATE asp1(c).y, asp1(c).x: PRINT alien$
IF RND * 12 > 6 AND bulla(c, 1).alive = 0 THEN bulla(c, 1).alive = 1: bulla(c, 1).x = asp1(c).x: bulla(c, 1).y = asp1(c).y + 1
END IF
IF endp1 + endp2 = 2 THEN EXIT DO
' aliens2
IF asp2(c).alive = 0 THEN
LOCATE asp2(c).y, asp2(c).x: PRINT " "
asp2(c).x = asp2(c).x - 1
IF asp2(c).x = 1 THEN asp2(c).y = asp2(c).y + 1: asp2(c).x = 78
LOCATE asp2(c).y, asp2(c).x: PRINT alien$
IF RND * 12 > 6 AND bulla(c, 2).alive = 0 THEN bulla(c, 2).alive = 1: bulla(c, 2).x = asp2(c).x: bulla(c, 2).y = asp2(c).y - 1
END IF
' dieing aliens
FOR s = 1 TO Max
COLOR 15
IF asp2(s).alive < 1 THEN
IF asp2(s).y = bullp(1).y AND bullp(1).x = asp2(s).x THEN asp2(s).alive = 1: LOCATE asp2(s).y, asp2(s).x: PRINT CHR$(15): fire1 = 0: bullp(1).y = 0: score(1) = score(1) + 5: killed(2) = killed(2) + 1: LOCATE asp2(s).y, asp2(s).x: PRINT " "
IF asp2(s).y = bullp(2).y AND bullp(2).x = asp2(s).x THEN asp2(s).alive = 1: LOCATE asp2(s).y, asp2(s).x: PRINT CHR$(15): fire2 = 0: bullp(2).y = 0: score(2) = score(2) + 5: killed(2) = killed(2) + 1: LOCATE asp2(s).y, asp2(s).x: PRINT " "
END IF
IF asp1(s).alive < 1 THEN
IF asp1(s).y = bullp(1).y AND bullp(1).x = asp1(s).x THEN asp1(s).alive = 1: LOCATE asp1(s).y, asp1(s).x: PRINT CHR$(15): fire1 = 0: bullp(1).y = 0: score(1) = score(1) + 5: killed(1) = killed(1) + 1: LOCATE asp1(s).y, asp1(s).x: PRINT " "
IF asp1(s).y = bullp(2).y AND bullp(2).x = asp1(s).x THEN asp1(s).alive = 1: LOCATE asp1(s).y, asp1(s).x: PRINT CHR$(15): fire2 = 0: bullp(2).y = 0: score(2) = score(2) + 5: killed(1) = killed(1) + 1: LOCATE asp1(s).y, asp1(s).x: PRINT " "
END IF
IF endp1 = 0 THEN
FOR al = 1 TO 2
IF ps(1).y = bulla(s, al).y AND bulla(s, al).x = ps(1).x THEN LOCATE ps(1).y, ps(1).x: PRINT CHR$(15): bulla(s, al).alive = 0: bulla(s, al).y = 0: endp1 = 1: LOCATE ps(1).y, ps(1).x: PRINT " "
NEXT
END IF
IF endp2 = 0 THEN
FOR al = 1 TO 2
IF ps(2).y = bulla(s, al).y AND bulla(s, al).x = ps(2).x THEN LOCATE ps(2).y, ps(2).x: PRINT CHR$(15): bulla(s, al).alive = 0: bulla(s, al).y = 0: endp2 = 1: LOCATE ps(2).y, ps(2).x: PRINT " "
NEXT
END IF
COLOR 3
IF bulla(s, 1).alive = 1 THEN
LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT " "
bulla(s, 1).y = bulla(s, 1).y + 1
LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT "*"
END IF
IF bulla(s, 2).alive = 1 THEN
LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT " "
bulla(s, 2).y = bulla(s, 2).y - 1
LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT "*"
END IF
IF bulla(s, 2).y = 1 THEN bulla(s, 2).alive = 0: LOCATE bulla(s, 2).y, bulla(s, 2).x: PRINT " "
IF bulla(s, 1).y = 23 THEN bulla(s, 1).alive = 0: LOCATE bulla(s, 1).y, bulla(s, 1).x: PRINT " "
NEXT s
IF killed(1) + killed(2) = Max * 2 THEN
Max = Max + 5
REDIM asp1(Max) AS xy 'aliens going up
REDIM asp2(Max) AS xy 'aliens going down
REDIM bulla(Max, 2) AS xy 'aliens x + y's of bulletes
player1$ = "\/"
player2$ = "/\"
alien$ = CHR$(1)
fire1 = 0: fire2 = 0
REM endp1 = 0: endp2 = 0
FOR x = 1 TO Max
asp1(x).y = 10
asp2(x).y = 12
asp1(x).x = (78 - Max * 2) - 1 + x * 2
asp2(x).x = x * 2
NEXT
ps(1).y = 2: ps(1).x = 19
ps(2).y = 22: ps(2).x = 59
killed(1) = 0
killed(2) = 0
CLS
COLOR 13
LOCATE 5, 20: PRINT "O O O OOOOO O O OOOOO"
LOCATE 6, 20: PRINT "O O O O O O O O "
LOCATE 7, 20: PRINT "O O O OOOOO O O OOOOO"
LOCATE 8, 20: PRINT "O O O O O O O "
LOCATE 9, 20: PRINT " O O O O O OOOOO"
LOCATE 12, 30: PRINT (Max / 5) - 2
LOCATE 14, 28: PRINT "Completed"
LOCATE 23, 1: PRINT "Press enter to continue."
PLAY "a.bcd.d.cba."
DO
LOOP UNTIL INKEY$ = CHR$(13)
CLS 'Clear The Screen!!
END IF
IF Max > 35 THEN CALL title(Players, Max)
NEXT c
LOOP
RUN
CALL title(Players, Max)
OPEN "aliens.hgh" FOR RANDOM AS #1
GET #1, 1, oldscore
IF score(1) > score(2) AND score(1) > oldscore THEN PUT #1, 1, score(1)
IF score(2) > score(1) AND score(2) > oldscore THEN PUT #1, 1, score(2)
CLOSE #1
REM $STATIC
SUB title (Players, Max)
SCREEN 0
CLS
Max = 5
Players = 2
cur$ = ""
DIM t(5)
FOR d = 1 TO 5: t(d) = d: NEXT
DO
COLOR t(1): LOCATE 4, 12: PRINT "2 Player Alien Invaders"
COLOR t(2): LOCATE 6, 12: PRINT "(P)layers ="; Players
COLOR t(3): LOCATE 7, 12: PRINT "(A)lien Wave = "; Max / 5; " Aliens = "; Max
COLOR t(4): LOCATE 8, 12: PRINT "(S)tart"
COLOR t(5): LOCATE 9, 12: PRINT "(E)xit"
FOR f = 1 TO 200: NEXT f
FOR d = 1 TO 5
t(d) = t(d) - 1
IF t(d) = 0 THEN t(d) = 14
NEXT
a$ = LCASE$(INKEY$)
IF a$ = "e" THEN END
IF a$ = "p" THEN IF Players = 1 THEN Players = 2: ELSE Players = 1
IF a$ = "a" THEN cur$ = "a"
IF cur$ = "a" AND (a$ = "=" OR a$ = "+") AND Max < 35 THEN Max = Max + 5
IF cur$ = "a" AND a$ = "-" AND Max > 1 THEN Max = Max - 5
LOOP UNTIL a$ = "s"
END SUB