home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib40a.dsk
/
FEBRUARY.1991
/
BLOCK.DEMO.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
101 lines
10 REM *************************
20 REM * BLOCK.DEMO *
30 REM * BY DAVID HARRIS *
40 REM * COPYRIGHT(C) 1991 *
50 REM * MINDCRAFT PUBL. CORP. *
60 REM * CONCORD, MA 01742 *
70 REM *************************
80 :
90 : REM ** MAIN PROGRAM **
100 :
110 GOSUB 200: REM INITIALIZE
120 VTAB 22: PRINT "SHOTS = ";NSHOTS;" HITS = ";HITS
130 IF T/5 = INT(T/5) THEN GOSUB 360: REM MOVE PLAYER
140 IF T/S = INT(T/S) THEN GOSUB 450: REM MOVE TARGET
150 IF SHOT THEN GOSUB 540: REM MOVE BULLET
160 IF PEEK( -16384) >127 THEN GOSUB 620: REM HANDLE KEYPRESS
170 T = T +1
180 GOTO 120
190 :
200 : REM ** INITIALIZE **
210 :
220 IF PEEK(768) < >165 OR PEEK(769) < >255 THEN PRINT CHR$(4);"BLOAD BLOCK"
230 HOME : HGR
240 PX = 18
250 TX = 35
260 S = INT(8 * RND(1)) +5
270 SHOT = 0:NSHOTS = 0:HITS = 0
280 DIR = 0
290 POKE 7,96: POKE 255,209: REM FOR BLOCK SHAPE ROUTINE
300 FOR LOOP = 1 TO 59: READ X: POKE 24575 +LOOP,X: NEXT LOOP
310 POKE -16368,0
320 VTAB 24: PRINT " LEFT AND RIGHT ARROWS MOVE, SPACE BAR STOPS, RETURN FIRES, 'ESC' QUITS";
330 VTAB 5: PRINT
340 RETURN
350 :
360 : REM ** MOVE PLAYER **
370 :
380 POKE 6,0: POKE 251,4: POKE 252,10: POKE 254,150
390 IF DIR = -1 AND PX >0 THEN PX = PX -1
400 IF DIR = 1 AND PX <36 THEN PX = PX +1
410 POKE 253,PX
420 CALL 768
430 RETURN
440 :
450 : REM ** MOVE TARGET **
460 :
470 POKE 6,44: POKE 251,3: POKE 252,5: POKE 254,0
480 TX = TX -1
490 IF TX = 0 THEN POKE 253,1: POKE 255,81: CALL 768: POKE 255,209:TX = 36:S = INT(8 * RND(1)) +5
500 POKE 253,TX
510 CALL 768
520 RETURN
530 :
540 : REM ** MOVE BULLET **
550 :
560 POKE 6,40: POKE 251,1: POKE 252,4: POKE 253,SX: POKE 254,SY
570 CALL 768
580 SY = SY -2
590 IF SY <5 THEN POKE 255,81: CALL 768: POKE 255,209:SHOT = 0: IF SX = TX +1 OR SX = TX +2 THEN GOSUB 820: REM HIT TARGET
600 RETURN
610 :
620 : REM ** HANDLE KEYPRESS **
630 :
640 X = PEEK( -16384)
650 IF X >127 THEN X = X -128
660 POKE -16368,0
670 IF X = 8 THEN DIR = -1: REM LEFT
680 IF X = 21 THEN DIR = 1: REM RIGHT
690 IF X = 32 THEN DIR = 0: REM SPACE BAR = STOP
700 IF X = 27 THEN GOTO 740: REM ESC = QUIT
710 IF X = 13 AND SHOT = 0 THEN SX = PX +1:SY = 145:SHOT = 1:NSHOT = NSHOT +1: REM RETURN = SHOOT
720 RETURN
730 :
740 : REM ** QUIT **
750 :
760 TEXT : HOME
770 PRINT "#SHOTS FIRED = ";NSHOTS
780 IF NSHOTS >0 THEN PRINT "HIT PERCENTAGE = ";(HITS/NSHOTS) *100
790 PRINT : PRINT "GOODBYE..."
800 END
810 :
820 : REM ** HIT TARGET **
830 :
840 HITS = HITS +1
850 POKE 6,44: POKE 251,3: POKE 252,5: POKE 253,TX: POKE 254,0: POKE 255,81
860 PRINT CHR$(7);
870 FOR LOOP = 1 TO 11
880 CALL 768
890 FOR DLAY = 1 TO 80: NEXT DLAY
900 NEXT LOOP: POKE 255,209
910 TX = 36:S = INT(8 * RND(1)) +5
920 RETURN
930 :
940 : REM ** BLOCK SHAPE DATA **
950 :
960 REM PLAYER
970 DATA 0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,56,0,0,0,124,0,0,0,126,1,0,0,127,3,0,0,127,3,0,0,70,1,0
980 REM BULLET
990 DATA 56,56,0,0
1000 REM TARGET
1010 DATA 112,1,0,120,3,0,124,7,0,102,12,0,99,24,0