home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib41b.dsk
/
SURROUND.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
75 lines
1 REM ********************************
2 REM * SURROUND *
3 REM * BY: DAVID LEWIS *
4 REM * COPYRIGHT (C) 1991 *
5 REM * MINDCRAFT PUBL. CORP. *
6 REM * LINCOLD, MA 01773 *
7 REM ********************************
10 PRINT CHR$(12) CHR$(21): REM TURN OFF 80 COLUMN DISPLAY
20 GOSUB 560: REM REMOVE THIS LINE TO REMOVE SOUND
30 GOSUB 300: GOSUB 410: GOSUB 310: REM INITIALIZATION, EXPLANATION, AND SETTING OF LEVELS.
40 REM PLAYER 1
50 P = PEEK( -16384): IF P <127 THEN P = P1: POKE -16368,0
60 P1 = P: REM RESTORE PREVIOUS MOVE SO THAT MOTION IS CONTINUOUS
70 IF P = 128 +81 THEN H1 = 0:V1 = -1
80 IF P = 128 +65 THEN H1 = 0:V1 = 1
90 IF P = 128 +90 THEN H1 = -1:V1 = 0
100 IF P = 128 +88 THEN H1 = 1:V1 = 0
110 FOR G = 0 TO DEAY: NEXT
120 REM THE COMPARISONS IN LINES 50 TO 90 AND 140 TO 190 ARE IN THE ORDER UP,DOWN,LEFT,RIGHT
130 REM PLAYER 2
140 P = PEEK( -16384): IF P <127 THEN P = P2: POKE -16368,0
150 P2 = P: REM RESTORE PREVIOUS MOVE SO THAT MOTION IS CONTINUOUS
160 IF P = 128 +79 THEN H2 = 0:V2 = -1
170 IF P = 128 +76 THEN H2 = 0:V2 = 1
180 IF P = 128 +60 THEN H2 = -1:V2 = 0
190 IF P = 128 +62 THEN H2 = 1:V2 = 0
200 FOR G = 0 TO DEAY: NEXT
210 X2 = X2 +H2:Y2 = Y2 +V2:X1 = X1 +H1:Y1 = Y1 +V1: REM FIND NEW POSITIONS
220 M = X1:N = Y1: VTAB 21: REM POSITION FOR EXPLOSION
230 IF ( SCRN( X2,Y2) AND SCRN( X1,Y1)) OR (X2 = X1 AND Y2 = Y1) THEN PRINT "BOTH PLAYERS LOSE.": GOSUB 280: GOTO 600
240 IF SCRN( X1,Y1) THEN PRINT "RIGHT PLAYER WINS."; CHR$(7): GOSUB 280: GOTO 600
250 M = X2:N = Y2
260 IF SCRN( X2,Y2) THEN PRINT "LEFT PLAYER WINS." CHR$(7): GOSUB 280: GOTO 600
270 POKE 7,5: POKE 6,Y1 *254/191: CALL 768: PLOT X1,Y1: PLOT 7,5: POKE 6,Y2 *254/191: CALL 768: PLOT X2,Y2: GOTO 50: REM IF NO LOSS, MAKE SOUND AND CONTINUE
280 FOR G = 1 TO 100: COLOR= RND(1) *16: PLOT M,N: NEXT : RETURN : REM THIS LINE MAKES EXPLOSION
290 REM INITIALIZATION
300 X1 = 10:Y1 = INT( RND(1) *13 +13):X2 = 30:Y2 = INT( RND(1) *13 +13):P1 = 128 + ASC("X"):P2 = 128 + ASC("<"): RETURN : REM SET INITIAL POSITIONS AND DIRECTION
310 GR : COLOR= 13
320 FOR X = 0 TO 39: PLOT X,0: PLOT X,39: PLOT 39,X: PLOT 0,X: NEXT
330 COLOR= 15
340 ON F GOTO 350,360,370,380: REM LEVELS
350 RETURN
360 FOR G = 13 TO 26: PLOT 19,G: NEXT : RETURN
370 FOR G = 13 TO 26: PLOT G,19: NEXT : RETURN
380 FOR G = 1 TO 10: PLOT RND(1) *40, RND(1) *40: NEXT : RETURN
390 FOR G = A TO B STEP D: HTAB C: VTAB G: PRINT " ";: FOR F = 1 TO 20: NEXT : NEXT : RETURN : REM VERTICAL LINE
400 FOR G = A TO B STEP D: VTAB C: HTAB G: PRINT " ";: FOR F = 1 TO 20: NEXT : NEXT : RETURN : REM HORIZONTAL LINE
410 TEXT : HOME : VTAB 5: HTAB 11: PRINT "S U R R O U N D !!"
420 FOR G = 1 TO 100: NEXT : INVERSE : REM LINES 420 TO 440 DRAW BORDER AROUND WORD SURROUND
430 D = 1:A = 3:B = 7:C = 9: GOSUB 390:A = 9:B = 30:C = 7: GOSUB 400
440 D = -1:A = 7:B = 3:C = 30: GOSUB 390:A = 30:B = 9:C = 3: GOSUB 400: NORMAL
450 VTAB 10: HTAB 12: PRINT "BY: DAVID LEWIS": HTAB 5: PRINT "(C) 1991 MINDCRAFT PUBL. CORP."
460 PRINT
470 PRINT : PRINT "TRY TO BLOCK YOUR OPPONENT'S LINE!"
480 PRINT : PRINT "LEFT PLAYER: USE THE KEYS QAZX TO MOVE UP, DOWN, LEFT AND RIGHT."
490 PRINT
500 PRINT "RIGHT PLAYER: USE THE KEYS OL<> TO MOVE UP, DOWN, LEFT AND RIGHT.": POKE -16368,0
510 GOSUB 630
520 INPUT "LEVEL OF BOARD POSITION (1 TO 4): ";F$:F = VAL(F$):F = F -(F >4) *(F -4) +(F <1) *(1 -F): REM MAKE F IN RANGE 1 TO 4
530 PRINT : INPUT "WHAT IS YOUR DELAY VALUE? ";F$:DEAY = VAL(F$)
540 HOME : RETURN
550 REM SOUND ROUTINE
560 POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7: POKE 776,240: POKE 777,8
570 POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,3: POKE 786,96
580 RETURN
590 REM ANOTHER GAME
600 VTAB 23: CALL -958: PRINT "ANOTHER GAME? Y/N";: GET YN$: IF YN$ < >"Y" AND YN$ < >"N" AND YN$ < >"y" AND YN$ < >"n" THEN PRINT : GOTO 600
610 IF YN$ = "Y" OR YN$ = "y" THEN 30
620 TEXT : HOME : END
630 VTAB 22: CALL -958
640 PRINT "<P>LAY GAME OR <Q>UIT?"
650 X = PEEK( -16384): IF X <127 THEN 650
660 IF X = 208 THEN POKE -16368,0: VTAB 22: CALL -958: RETURN
670 IF X = 209 THEN POKE -16368,0: TEXT : HOME : END
680 GOTO 650