home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
commodore-users-of-norman
/
CUON_02_(08-1984).d64
/
minefield
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2019-04-13
|
5KB
|
168 lines
10 REM:** COMPUTE JUN 83 **
20 REM:** MINEFIELD **
45 POKE53280,0:POKE53281,0
50 GOSUB1130
60 REM**INITIALIZE VARIABLES**
70 DIMBT(37),B3(37),BP(37),BS(37),XM(4),YM(4),BC(25)
80 DEFFNY(X)=INT((X-1024)/40)
90 DEFFNX(X)=(X-40*FNY(X))-1024
100 DEFFNS(X)=1024+PX+40*PY
110 DEFFNP(X)=1307+INT(34*RND(1))+40*INT(15*RND(1))
120 DEFFNN(X)=PEEK(FNS(X))
130 FORJ=1TO4:READXM(J),YM(J):NEXT
140 DATA0,-1,0,1,-1,0,1,0
150 SC=0:BT=1680:NB=4:NW=0:D=54272
160 PRINT"[147]";:POKE53272,21
170 PRINT"MINE****[221] SCORE: 0"
180 PRINT"********[221]HI SCORE:";HS
190 PRINT"***FIELD[221]WAVE: 1"
200 PRINT" [221]";:IFNL<>1THENFORJ=1TONL-1:PRINT"[218]";:NEXT
210 FORJ=1024TO1183:IFPEEK(J)=32THENPOKEJ,160:POKEJ+D,1
220 NEXT
230 XP$="[213][221][201][157][157][157][157][213][213][221][201][201][157][157][157][157][157][157][213][213][213][221][201][201][201][157][157][157][157][157][157][157][192][192][192]*[192][192][192][157][157][157][157][157][157][157][202][202][202][221][203][203][203]"
235 XP$=XP$+"[157][157][157][157][157][157][202][202][221][203][203][157][157][157][157][202][221][203]"
240 S$=""
250 Q$=""
260 XR$=" [157][157][157][157] [157][157][157][157][157][157] [157][157][157][157][157][157][157] * [157][157][157][157][157][157][157] "
265 XR$=XR$+"[157][157][157][157][157][157] [157][157][157][157] "
270 REM:**SET UP NEXT WAVE**
280 BG=0:NW=NW+1:IFNW>11THEN310
290 NB=NB+1.5:IFNW=1THEN330
300 IFNW<6THENBT=BT-180
310 PRINT"";TAB(15);NW
320 POKEFNS(1),32:FORJ=1TONB:POKEBP(J),32:NEXT
325 FORJ=1TO25:POKEBC(J),32:NEXT
330 BN=INT(NB):FORJ=1TONB:BS(J)=1:NEXT
340 FORJ=1TONB
350 BT(J)=(.4+INT(61*RND(1))/100)*BT
360 B3(J)=BT(J)+.5*BT(J):B4(J)=B3(J)+.25*BT(J)
370 NEXT
380 PX=19:PY=15:POKEFNS(1),90:POKEFNS(1)+D,1
390 FORJ=1TONB
400 BP(J)=FNP(1):IFPEEK(BP(J))<>32THEN400
410 POKEBP(J),87:POKEBP(J)+D,8:NEXT:NN=0
415 FORJ=1TO25
416 BC(J)=FNP(1):IFPEEK(BC(J))<>32THEN416
417 IFPEEK(BC(J)+1)=87THEN416
419 POKEBC(J),86:POKEBC(J)+D,5:NEXT
420 GETR$:IFR$<>""THEN420
430 DR=0:TX=TI
440 REM:**GET COMMANDS**
450 R=(15-(PEEK(56321)AND15))*2
460 IFR<>0THENDR=LOG(R)/LOG(2)
470 IFR=0THEN490
480 REM:**MOVE TRUCK**
490 IFDR=0THEN600
500 POKEFNS(1),32:PX=PX+XM(DR):PY=PY+YM(DR)
510 IFPX<0THENPX=39
520 IFPX>39THENPX=0
530 IFPY<4THENPY=24
540 IFPY>24THENPY=4
550 X=FNN(1)
560 IFX=32THENPOKEFNS(1),90:POKEFNS(1)+D,1:GOTO600
570 IFX=42ORX=86THEN960
580 GOTO890
590 REM:**UPDATE BOMBS**
600 NN=NN+1:IFNN>INT(NB)THENNN=1
610 IFBS(NN)=0THEN600
620 TG=TI-TX
630 IFTG>B4(NN)THENN1=NN:GOTO720
640 IFBS(NN)>2THEN690
650 IFTG>BT(NN)THENBS(NN)=2
660 IFTG>B3(NN)THENBS(NN)=3
670 IFBS(NN)=1THEN450
680 IFBS(NN)=2THENPOKEBP(NN),215:POKEBP(NN)+D,1:GOTO450
690 IFBS(NN)=3THENPOKEBP(NN),87:POKEBP(NN)+D,1:BS(NN)=4:GOTO450
700 IFBS(NN)=4THENPOKEBP(NN),215:POKEBP(NN)+D,1:BS(NN)=3:GOTO450
710 REM:**BOMB EXPLODES**
720 TQ=TI:PD=0
725 X$="[146]"+LEFT$(S$,FNY(BP(N1))-2)+LEFT$(Q$,FNX(BP(N1))-1)
730 BS(N1)=0:N2=0:PRINTX$;XP$;
740 FORJ=1TONB:X=PEEK(BP(J)):IFBS(J)=0THEN760
750 IFX<>87ANDX<>215ANDX<>218THENN2=J
760 NEXT:IFFNN(1)<>90ANDFNN(1)<>218THENPD=1
770 PRINTX$;XR$;:GR=129:GOSUB2000
780 FORJ=1TONB:IFPEEK(BP(J))=32ANDBS(J)<>0THENPOKEBP(J),87-128*(BS(J)>1)
790 NEXT:BN=BN-1
800 IFPD=1THEN960
810 IFBN=0THEN840
820 IFN2=0THENTX=TX+(TI-TQ):GOTO450
830 N1=N2:GOTO725
840 PRINT"";TAB(20);
850 FORJ=1TO20:PRINT"COMPLETED[157][157][157][157][157][157][157][157][157]";:FORK=1TO100:NEXT
860 PRINT" [157][157][157][157][157][157][157][157][157]";:FORK=1TO100:NEXT:NEXT
870 SC=SC-10*(INT(NB)-BG):IFSC<0THENSC=0
880 PRINT"[157][157][157][157][145][145][145] [157][157][157][157][157][157][157][157][157][157]";SC:GOTO280
885 REM:**BOMB GATHERED**
890 BG=BG+1:TQ=TI:POKEFNS(1),218
895 FORJ=1TONB:IFPEEK(BP(J))=218THENAJ=BS(J):BS(J)=0
900 NEXT
910 IFAJ=4THENAJ=3
920 SC=SC+10*AJ:PRINT"";TAB(16);SC
930 GR=33:GOSUB2000:BN=BN-1:IFBN=0THEN840
940 TX=TX+(TI-TQ):GOTO450
950 REM:**PLAYER DESTROYED**
960 GR=129:GOSUB2000
961 TQ=TI:FORJ=1TO20:POKEFNS(1),42:FORK=1TO25:NEXT:POKEFNS(1),170
970 FORK=1TO25:NEXT:NEXT:POKEFNS(1),32:NL=NL-1
980 POKE1153+NL,160:DR=0:PX=19:PY=15
990 IFNL=0THEN1045
1000 IFBN=0THEN840
1010 GETR$:IFR$<>""THEN1010
1020 FORJ=1TONB:IFPEEK(BP(J))=32ANDBS(J)<>0THENPOKEBP(J),87-128*(BS(J)>1)
1030 NEXT
1040 POKEFNS(1),90:TX=TX+(TI-TQ):GOTO450
1045 IFSC>HSTHENHS=SC:PRINT"";TAB(19);HS
1050 FORJ=1TO1500:NEXT:PRINT"";TAB(20);"GAME OVER[157][157][157][157][157][157][157][157][157]PLAY AGAIN?";
1060 PRINT"(Y/N)[157][157][157][157]";
1080 PRINT"Y/[146]N[157][157][157]";
1081 FORJ=1TO99:NEXT
1082 PRINT"[146]Y/N[157][157][157]";
1083 FORJ=1TO99:NEXT
1084 GETR$:IFR$="Y"THEN1110
1090 IFR$<>"N"THEN1080
1100 PRINT"[147]LATER ON!":END
1110 GOSUB1130:GOTO150
1120 REM:**INSTRUCTIONS**
1130 PRINT"[147][205][160][201][160][206][160][197][160][198][160][201][160][197][160][204][160][196]":POKE53272,23
1140 PRINT"[196]O YOU NEED INSTRUCTIONS ([217]/[206])"
1150 GETR$:IFR$="N"THEN1410
1160 IFR$<>"Y"THEN1150
1180 PRINT"[147][212]HE OBJECT OF THIS GAME IS TO PICK UP
1190 [153]"AS MANY BOMBS AS YOU CAN BEFORE THEY
1200 PRINT"EXPLODE. [212]O PICK UP A BOMB, JUST RUN
1210 [153]"OVER IT WITH YOUR TRUCK.
1220 PRINT"[194]OMBS WILL EXPLODE AFTER A SHORT TIME.
1230 [153]"RIGHT$F A BOMB TURNS REVERSE-FIELD, BE CARE-
1240 PRINT"FUL WITH IT. [201]F IT STARTS TO BLINK, IT
1250 [153]"WILL VERY SHORTLY EXPLODE-WATCH OUT!!
1260 PRINT"[194]OMBS WILL CHAIN-REACT; ONE BOMB CAUGHT
1270 [153]"IN ANOTHER'S EXPLOSION WILL ALSO BLOW
1280 PRINT"UP. [201]F YOU ARE CAUGHT IN A BOMB'S "
1290 PRINT"EXPLOSION, YOU WILL BE BLOWN UP.
1300 [153]"ATNLSO, DO NOT RUN INTO BOMB CRATERS (*)
1310 PRINT"OR MINES ([216]) OR YOU'LL BE TOTALLED.
1320 [153]"(null)HE CONTROLS ARE: 1 TO GO UP
1330 PRINT" CTRL TO GO LEFT
1340 [153]" 2 TO GO RIGHT
1350 PRINT" _ TO GO DOWN
1355 [153]"OR YOU CAN USE A JOYSTICK IN PORT 1.
1360 PRINT"[217]OUR TRUCK CANNOT STOP ONCE YOU BEGIN
1370 [153]"MOVING. RIGHT$T CAN WRAP-AROUND BOTH THE
1380 PRINT"TOP AND SIDES OF THE SCREEN.
1390 [153]"(null)RESS (null)VAL(null)(null)(null)(null) TO CONTINUE";
1400 [161]R$:[139]R$[179][177][199](13)[167]1400
1410 [153]"LOAD(null)ELECT SKILL SETTING (0-3)
1420 GETR$:IFR$<"0"ORR$>"3"THEN1420
1430 NL=4-VAL(R$):RETURN
1900 END
2000 REM:**SOUND OF EXPLOSION**
2010 QW=54272
2020 FORS=QWTOQW+24:POKES,0:NEXT
2025 POKEQW+24,47
2030 POKEQW+5,64+7:POKEQW+6,240
2050 POKEQW+4,GR:POKEQW+1,36:POKEQW,85
2060 FORT=1TO250:NEXT
2070 FORT=15TO0STEP-1:POKEQW+24,INT(T):NEXT
2080 RETURN