Files
RomWBW/Source/Images/d_games/u0/MONSTER.BAS
2023-06-14 12:45:41 -04:00

149 lines
6.9 KiB
QBasic
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
10 ' **** MONSTER COMBAT ****
20 ' Written by Lee Chapel 6/15/80 ( BYTE DEC.,1980 Pp.288-290 )
30 ' Entered, Converted to Mbasic and Enhanced By Steven C. Rich
40 ' (313)358-3494
50 '
60 ' NOTE: The Graphics used are for use on a Heath H-19 terminal. I
70 ' have broken out the commands so that they can you can convert
80 ' this program for other terminals. I suggest strongly that anyone
90 ' using graphics in their programs do the same.
100 '
110 RANDOMIZE:' REMOVE OR CHANGE IF USING MBASIC VERSION BEFORE 5.0
120 ' ********************* H-19 TERMINAL COMMANDS *************************
130 E$=CHR$(27):' ESCAPE CHARACTER (Used for alaphics in their programs do the same.
100 '
110 RANDOMIZE:' REMOVE OR CHANGE IF USING MBASIC VERSION BEFORE 5.0
120 ' ********************* H-19 TERMINAL COMMANDS *************************
130 E$=CHR$(27):' ESCAPE CHARACTER (Used for alHOME
190 EP$=E$+"J":' ERASE TO END OF PAGE
200 'NOTE: The H-19 uses the following scheme for direct cursor addressing:
210 ' Location= (CHR$(Line number+31));(CHR$(Column number+31))
220 ' **********************************************************************
230 PRINT CLS$;"NOTE:The instructions for this game are in MONSTER.DOC."
240 FOR I=1 TO 2000:NEXT I
250 DIM A(10,10):PRINT CLS$;:PRINT TAB(20);"MONSTER COMBAT"
260 '**************************************************************
270 ' NOTE: THE FOLLOWING DEFINE GRAPHICS CHARACTERS OF THE H-19.
280 ' CHANGE THEM FOR YOUR TERMINAL
290 ' CH$(0) & CH$(1)= Grass CH$(2)= Tree CH$(5)= You
300 CH$(0)="ii":CH$(1)="ii":CH$(2)="r_":CH$(5)="}|"
310 '**************************************************************
320 FOR I=1 TO 9:FOR J=1 TO 9:A(I,J)=1:IF RND(1)>.75 THEN A(I,J)=2
330 NEXT J,I
340 X=INT(RND(1)*6+2):Y=INT(RND(1)*6+2)
350 A(X,Y)=5:C=INT(RND(1)*1501+500)
360 GOSUB 1270
370 PRINT "YOUR COMBAT STRENGTH IS ";C:GOSUB 620:IF I>11 THEN 370
380 IF M=0 THEN PRINT "YOU GET THE TREASURE FREE":GOTO 860
390 IF M=100 AND N=1 THEN 1260
400 PRINT "DO YOU WANT TO (F)IGHT, (R)UN, OR (B)RIBE ? "
410 Z9$=INPUT$(1):IF Z9$<>"F"AND Z9$<>"R" AND Z9$<>"B" GOTO 410
420 IF Z9$="F" GOTO 430 ELSE IF Z9$="R" GOTO 530 ELSE IF Z9$="B" GOTO 1000 ELSE GOTO 400
430 INPUT"HOW MANY COMBAT POINTS DO YOU WISH TO USE";K
440 IF K>C THEN GOSUB 990:PRINT C;"COMBAT POINTS":GOTO 430
450 I=INT(RND(1)*1001):L=2:C=C-K:K=K-.01*Q
460 FOR H=1000 TO 0 STEP-50:IF L*M<=K AND H>=I THEN 840
470 L=L-.1:NEXT
480 PRINT "THE MONSTER KILLED YOU.";
490 PRINT "YOU LOSE EVERYTHING":PRINT "DO YOU WISH TO TRY AGAIN";
500 'If using MBASIC Version before 5.0 remove 'RANDOMIZE' in following line
510 Z$=INPUT$(1):IF Z$="Y" THEN RANDOMIZE C:C=0:Q=0:GOTO 270
520 PRINT :PRINT "SO LONG. BETTER LUCK NEXT TIME":END
530 I=INT(RND(1)*12):IF I=11 THEN 480
540 FOR H=0 TO 10:IF H*10>M AND H<=I THEN 560
550 NEXT:GOTO 1070
560 A=X:B=Y
570 X=INT(RND(1)*3-1)+A: Y=INT(RND(1)*3-1)+B
580 IF A(X,Y)>1 THEN 570
590 IF A(X,Y)=0 THEN 1320
600 A(A,B)=1:A(X,Y)=5:IF I<>12 THEN 360
610 RETURN
620 I=INT(RND(1)*18+1):M=I*10:IF I<11 THEN PRINT "A ";
630 ON I GOTO 640,650,660,670,680,690,700,710,720,730,740,1130,1080,1300,1340,1340,1340,1340
640 PRINT "MINOTAUR";:GOTO 750
650 PRINT "CYCLOPS";:GOTO 750
660 PRINT "ZOMBIE";:GOTO 750
670 PRINT "GIANT";:GOTO 750
680 PRINT "HARPY";:GOTO 750
690 PRINT "GRIFFIN";:GOTO 750
700 PRINT "CHIMERA";:GOTO 750
710 PRINT "DRAGON";:GOTO 750
720 PRINT "WYVERN";:GOTO 750
730 PRINT "BASLISK";:GOTO 750
740 PRINT "NOTHING";:M=0
750 PRINT " IS GUARDING ";:I=INT(RND(1)*7+1)
760 ON I GOTO 770,780,790,800,810,820,830
770 PRINT "10 SILVER SPOONS":P=10:RETURN
780 PRINT "A JEWELED SWORD":P=30:RETURN
790 PRINT "A JAR OF RUBIES":P=50:RETURN
800 PRINT "A TREASURE CHEST":P=200:RETURN
810 PRINT "50 SILVER COINS":P=50:RETURN
820 PRINT "100 GOLD PIECES":P=100:RETURN
830 PRINT "A BOX OF JEWELS":P=75:RETURN
840 PRINT "YOU BEAT THE MONSTER"
850 S=S+1
860 Q=Q+P
870 IF P=30 THEN GOSUB 1170
880 IF P=200 THEN GOSUB 1200:GOSUB 1230
890 PRINT "YOU HAVE ";Q;" TREASURE POINTS"
900 X$="":A=X:B=Y:INPUT"WHAT DIRECTION (HIT 1 TO RESET DISPLAY)";X$:IF X$=""GOTO 900
910 IF X$="1" THEN PRINT CLS$;TAB(20);"MONSTER COMBAT":GOSUB 1270:GOTO 900
920 IF RIGHT$(X$,1)="W" THEN X=X-1
930 IF RIGHT$(X$,1)="E" THEN X=X+1
940 IF LEFT$(X$,1) ="N" THEN Y=Y-1
950 IF LEFT$(X$,1) ="S" THEN Y=Y+1
960 IF A(X,Y)=0 THEN 1320
970 IF A(X,Y)=2 THEN PRINT CHR$(7);"YOU RAN INTO A TREE":X=A:Y=B:GOTO 900
980 A(A,B)=1:A(X,Y)=5:GOTO 360
990 PRINT "YOU ONLY HAVE";:RETURN
1000 INPUT"HOW MUCH DO YOU WISH TO PAY";K
1010 IF K>Q THEN GOSUB 990:PRINT Q;" TREASURE POINTS":GOTO 1000
1020 I=INT(RND(1)*22):L=0:IF I=21 OR K<1 THEN 480
1030 FOR H=0 TO 20:IF K<=L*P AND I>=H THEN 1060
1040 L=L+.1:NEXT
1050 PRINT "YOUR BRIBE WAS ACCEPTED.";:Q=Q-K:GOTO 890
1060 PRINT "YOUR BRIBE WAS NOT ACCEPTED.";
1070 PRINT "YOU MUST FIGHT":GOTO 430
1080 PRINT CHR$(7);"THE GUARDIAN OF THE FOREST CAPTURED YOU, TOOK HALF YOUR"
1090 PRINT "TREASURE, AND TOOK YOU TO A NEW SPOT IN THE FOREST"
1100 Q=Q/2:A=X:B=Y:FOR I9=1 TO 4000:NEXT
1110 X=INT(RND(1)*7+2):Y=INT(RND(1)*7+2):IF A(X,Y)<>1 THEN 1110
1120 A(A,B)=1:A(X,Y)=5:GOSUB 1270:I=13:RETURN
1130 J=INT(RND(1)*20+1):C=C-J
1140 PRINT "YOU FELL INTO A PIT AND USED ";J;" COMBAT POINTS TO CLIMB OUT"
1150 IF C<0 THEN PRINT "YOU DIED WHILE CLIMBING OUT":GOTO 490
1160 GOTO 560
1170 IF RND(1)<.5 OR C>3000 THEN RETURN
1180 PRINT "THE SWORD WAS ENCHANTED AND DOUBLES YOUR STRENGTH"
1190 C=C*2:RETURN
1200 I=INT(RND(1)*10):IF I<>7 THEN RETURN
1210 PRINT "THE CHEST WAS A TRAP. YOU WERE KILLED WHEN YOU OPENED IT."
1220 GOTO 490
1230 I=INT(RND(1)*10):IF I<>3 THEN RETURN
1240 PRINT "A MIRROR WAS IN THE CHEST.";
1250 PRINT " IT WILL KILL ANY BASILISKS YOU MEET":N=1:RETURN
1260 PRINT "YOUR MIRROR KILLED THE BASILISK":GOTO 850
1270 PRINT GY$:GOSUB 1390:PRINT HO$:FOR I=0 TO 10:PRINT TAB(15);:FOR J=0 TO 10
1280 PRINT CH$(A(J,I));
1290 NEXT J:PRINT:NEXT I:PRINT EP$;GN$:RETURN
1300 IF S<5 THEN 620
1310 PRINT "A GIANT EAGLE CARRIED YOU TO SAFETY"
1320 PRINT :PRINT "YOU SURVIVED THE FOREST"
1330 PRINT "YOU WON A TREASURE TOTAL OF ";Q:PRINT "CONGRADULATIONS"
:PRINT "DO YOU WISH TO TRY AGAIN ? ";:GOTO 510
1340 PRINT "THERE IS NOTHING TO BE FOUND HERE":GOTO 890
1350 END
1360 '***********************************************************
1370 ' THIS ROUTINE PRINTS BRIEF INSTRUCTIONS AND A COMPASS ROSE ON THE SCREEN.
1380 ' IT CAN BE REMOVED IF CONVERSION IS DIFFICULT, BUT LEAVE 'RETURN' IN.
1390 PRINT DC$;"!H";CH$(5);" = YOUR POSITION"
1400 PRINT DC$;"#H";CH$(2);" = TREE (YOU MUST GO AROUND THEM)"
1410 PRINT DC$;"%H";CH$(0);" = FIELD"
1420 PRINT DC$;"'U";"NW N NE"
1430 PRINT DC$;"(W";"y`x"
1440 PRINT DC$;")U";"W a^a E"
1450 PRINT DC$;"*W";"x`y"
1460 PRINT DC$;"+U";"SW S SE"
1470 RETURN
30 PRINT DC$;"(W";"y`x"
1440 PRINT DC$;")U";"W a^a