📄 bunny.bas
字号:
10 KEY OFF: SCREEN 0: COLOR 7, 1: PALETTE: CLS : RANDOMIZE TIMER
20 NO = 9: R = 5: ND = 6: NR = 27: MOVE = 0: NI = 2
30 DIM R$(NR), OB$(NO), O2$(NO), OB(NO), MA(28, 6), C$(11)
35 CLS : GOSUB 27000: CLS
40 IF RND > .5 THEN PRINT "I'll be back in a sec..." ELSE PRINT "Please wait..."
50 GOSUB 25000: GOSUB 26000
55 VIEW PRINT 1 TO 25: CLS
60 COLOR 0, 7: LOCATE 25, 41: PRINT "Score:";: COLOR 7, 1: VIEW PRINT 1 TO 24: LOCATE 1, 1
90 GOSUB 700
91 IF FFF THEN FFF = 0: GOTO 820
92 GOSUB 600: GOSUB 300
100 IF VAMP THEN VAMPT = VAMPT + 1: IF VAMPT = 2 THEN PRINT "The vampire decides to fang you.": GOTO 810
102 IF R = 25 AND NOT DBUN THEN RABTI = RABTI + 1 ELSE RABTI = 0
104 IF R = 25 AND NOT DBUN THEN IF RABTI = 3 THEN PRINT "The vampire bunny nibbles a little on your leg.": GOTO 810
108 IF C$(1) <> "" THEN CM$ = C$(1): BF = 0: GOTO 126
109 CM$ = "": LINE INPUT ">"; CM$: IF CM$ = "" THEN PRINT "What's that?": GOTO 109
110 FOR I = 1 TO LEN(CM$): G$ = MID$(CM$, I, 1): IF ASC(G$) > 96 AND ASC(G$) < 123 THEN G = ASC(G$) - 32: MID$(CM$, I) = CHR$(G)
111 NEXT
114 FOR I = 1 TO LEN(CM$)
115 IF MID$(CM$, I, 4) = "THE " THEN G$ = LEFT$(CM$, I - 1): GG$ = MID$(CM$, I + 4): CM$ = G$ + GG$: GOTO 115 ELSE 116
116 NEXT: C = 0
117 Z = LEN(CM$): L = 0: FOR I = 1 TO Z
118 L = L + 1
119 IF MID$(CM$, L, 3) = "AND" THEN C = C + 1: C$(C) = LEFT$(CM$, L - 2): G$ = MID$(CM$, L + 4): CM$ = G$: L = 1
120 IF MID$(CM$, L, 4) = "THEN" THEN C = C + 1: C$(C) = LEFT$(CM$, L - 2): G$ = MID$(CM$, L + 5): CM$ = G$: L = 1
121 IF MID$(CM$, L, 1) = "." THEN IF LEN(CM$) <> L THEN C = C + 1: C$(C) = LEFT$(CM$, L - 1): G$ = MID$(CM$, L + 1): CM$ = G$: L = 1
122 IF MID$(CM$, L, 2) = " " THEN G$ = LEFT$(CM$, L - 1): GG$ = MID$(CM$, L + 3): CM$ = G$ + GG$: GOTO 122
123 IF LEFT$(CM$, 1) = " " THEN CM$ = RIGHT$(CM$, LEN(CM$) - 1)
124 IF RIGHT$(CM$, 1) = "." THEN CM$ = LEFT$(CM$, LEN(CM$) - 1)
125 NEXT: C$(C + 1) = CM$: IF C$(1) <> "" THEN CM$ = C$(1)
126 BF = 0: FOR I = 2 TO 10: C$(I - 1) = C$(I): C$(I) = "": NEXT
200 C = 0: V$ = "": N$ = "": W1$ = "": W2$ = ""
202 C = C + 1: IF C > LEN(CM$) THEN 208
204 W$ = MID$(CM$, C, 1): IF W$ = " " THEN 208
206 V$ = V$ + W$: GOTO 202
208 C = C + 1: IF C > LEN(CM$) THEN 214
210 W$ = MID$(CM$, C, 1): IF W$ = " " THEN 214
212 N$ = N$ + W$: GOTO 208
214 C = C + 1: IF C > LEN(CM$) THEN 220
216 W$ = MID$(CM$, C, 1): IF W$ = " " THEN 220
218 W1$ = W1$ + W$: GOTO 214
220 C = C + 1: IF C > LEN(CM$) THEN 226
222 W$ = MID$(CM$, C, 1): IF W$ = " " THEN 226
224 W2$ = W2$ + W$: GOTO 220
226 IF V$ = "" THEN PRINT "Come again?": GOTO 109
227 IF LEN(V$) > 5 THEN V$ = LEFT$(V$, 5)
228 IF LEN(N$) > 5 THEN N$ = LEFT$(N$, 5)
229 IF LEN(W1$) > 5 THEN W1$ = LEFT$(W1$, 5)
230 IF LEN(W2$) > 5 THEN W2$ = LEFT$(W2$, 5)
234 IF V$ = "G" OR V$ = "AGAIN" THEN CM$ = VVV$: V$ = V1$: N$ = VV$: W1$ = V2$: W2$ = V3$
235 IF N$ = "IT" THEN N$ = VV$
236 VV$ = N$: VVV$ = CM$: V1$ = V$: V2$ = W1$: V3$ = W2$
240 IF N$ = "SILVE" THEN N$ = "CROSS"
250 IF N$ = "SCRAP" OR N$ = "SHEET" THEN N$ = "PAPER"
255 IF W1$ = "SCRAP" OR W1$ = "SHEET" THEN W1$ = "PAPER"
260 IF N$ = "QUILL" THEN N$ = "PEN"
262 IF W1$ = "QUILL" THEN W1$ = "PEN"
265 IF N$ = "GRAY" THEN N$ = "OOZE"
266 IF N$ = "WOODE" THEN N$ = "CRANK"
267 IF N$ = "WEBS" THEN N$ = "COBWE"
268 IF W2$ = "GRAY" THEN W2$ = "OOZE"
269 IF W1$ = "SILVE" THEN S1$ = "CROSS"
290 MOVE = MOVE + 1: GOSUB 300: GOTO 320
300 A = CSRLIN: VIEW PRINT 1 TO 25: LOCATE 25, 1: COLOR 0, 7: PRINT LO$ + SPACE$(40 - LEN(LO$));
305 IF SCORE > 9 THEN S = 12 ELSE S = 11
309 IF MOVE > 999 THEN V = 9 ELSE IF MOVE > 99 THEN V = 10 ELSE IF MOVE > 9 THEN V = 11 ELSE V = 12
310 LOCATE 25, 47: PRINT STR$(SCORE) + SPACE$(S);
315 LOCATE 25, 60: PRINT "Moves:"; MOVE; SPACE$(V-1);: VIEW PRINT 1 TO 24: LOCATE A, 1: COLOR 7, 1: RETURN
320 IF R < 11 AND R <> 7 THEN 340
325 IF OB(4) = -1 OR OB(4) = R THEN 340
327 IF NOT LAMP THEN 330
328 IF OB(1) = -1 OR OB(1) = R THEN 340
330 IF CM$ <> "LIGHT LAMP" AND CM$ <> "TURN ON LAMP" THEN PRINT "You are in total darkness.": GOSUB 300
FOR TEMP = 1 TO 11: C$(TEMP) = "": NEXT: GOTO 109
340 IF CM$ = "TALK INTO WELL" OR CM$ = "TALK TO WELL" OR CM$ = "TALK WELL" THEN IF R = 4 THEN PRINT "Echo...echo....echo......echo...": GOTO 100
400 IF V$ = "PUT" AND N$ = "ON" THEN V$ = "WEAR": N$ = W1$
402 IF V$ = "GET" AND N$ = "ON" THEN V$ = "WEAR": N$ = W1$
404 IF V$ = "TAKE" AND N$ = "OFF" THEN V$ = "UNWEA": N$ = W1$
405 IF V$ = "GET" AND N$ = "OFF" THEN V$ = "UNWEA": N$ = W1$
407 IF V$ = "THROW" AND N$ = "WATER" THEN V$ = "POUR"
408 IF V$ = "THROW" AND N$ = "BUCKE" THEN V$ = "POUR"
409 IF VAMP AND V$ = "POUR" THEN IF N$ = "WATER" OR N$ = "BUCKE" THEN W1$ = "ON": W2$ = "VAMPI"
410 IF V$ = "TAKE" AND W1$ = "OFF" THEN V$ = "UNWEA"
420 IF V$ = "GET" AND W1$ = "OFF" THEN V$ = "UNWEA"
590 GOTO 2000
600 FOR I = 0 TO NO - 1: IF OB(I) = R THEN PRINT "You see "; OB$(I); " here."
610 NEXT: RETURN
700 IF R < 11 AND R <> 7 THEN 710
701 IF OB(4) = -1 OR OB(4) = R THEN 710
702 IF NOT LAMP THEN 704
703 IF OB(1) = -1 OR OB(1) = R THEN 710
704 LO$ = "Darkness": GOSUB 300: RETURN
710 IF R = 100 THEN LO$ = "Outside Graveyard": GOSUB 300: GOTO 25400
715 ON R GOSUB 40000, 40060, 40080, 40100, 40140, 40160, 40180, 40200, 40220, 40250, 40270, 40290, 40300, 40310, 40330, 40350, 40360, 40370, 40390, 40410, 40420, 40430, 40440, 40450, 40470, 40490, 40510
720 RETURN
750 IF NOT LAMP THEN 770
760 IF OB(1) = -1 OR OB(1) = R THEN RETURN
770 LO$ = "Darkness": GOSUB 300: PRINT "Uh-oh, now you can't see!": RETURN
800 FOR TEMP = 1 TO 11: C$(TEMP) = "": NEXT: MOVE = MOVE - 1: GOSUB 300: RETURN
810 PRINT " ***** You have died *****": GOSUB 25420: GOTO 3440
820 PRINT " ***** You have died *****": GOSUB 25420: PRINT "New game or undo(y/n/u)?"
830 I$ = INKEY$: IF I$ <> "Y" AND I$ <> "y" AND I$ <> "N" AND I$ <> "n" AND I$ <> "U" AND I$ <> "u" THEN 830
840 IF I$ = "Y" OR I$ = "y" THEN RUN ELSE IF I$ = "U" OR I$ = "u" THEN GOSUB 800: GOTO 90
850 COLOR 7, 0: CLS : KEY ON: END
1000 IF NO = 0 THEN RETURN
1010 FOR I = 0 TO NO - 1
1020 IF O2$(I) = N$ THEN FL = 1: RO = OB(I): GOTO 1050
1030 NEXT
1040 FL = 0: RETURN
1050 RETURN
2000 IF V$ <> "GO" AND V$ <> "WALK" AND V$ <> "RUN" AND V$ <> "CRAWL" AND V$ <> "N" AND V$ <> "S" AND V$ <> "CLIMB" AND V$ <> "E" AND V$ <> "W" AND V$ <> "U" AND V$ <> "D" THEN 2500
2010 IF N$ = "NORTH" OR V$ = "N" THEN DI = 0: GOTO 2400
2020 IF N$ = "SOUTH" OR V$ = "S" THEN DI = 1: GOTO 2400
2030 IF N$ = "EAST" OR V$ = "E" THEN DI = 2: GOTO 2400
2040 IF N$ = "WEST" OR V$ = "W" THEN DI = 3: GOTO 2400
2050 IF N$ = "UP" OR N$ = "UPWAR" OR V$ = "U" THEN DI = 4: GOTO 2400
2060 IF N$ = "DOWN" OR N$ = "DOWNW" OR V$ = "D" THEN DI = 5: GOTO 2400
2070 IF R = 1 AND N$ = "COFFI" THEN PRINT "Are you crazy?": GOTO 100
2080 IF R = 3 THEN IF N$ = "STREA" OR N$ = "RIVER" THEN V$ = "S": GOTO 2000
2090 IF R = 6 THEN IF N$ = "STREA" OR N$ = "RIVER" THEN V$ = "N": GOTO 2000
2100 IF R = 9 AND N$ = "HOLE" THEN V$ = "D": GOTO 2000
2110 IF R = 4 AND N$ = "WELL" THEN V$ = "D": GOTO 2000
2120 IF R = 7 AND N$ = "CREVI" THEN V$ = "S": GOTO 2000
2130 IF R = 8 AND N$ = "HOLE" THEN V$ = "D": GOTO 2000
2135 IF R = 7 AND N$ = "ROPE" THEN DI = 4: GOTO 2400
2136 IF R = 4 AND N$ = "ROPE" AND ROPE THEN DI = 5: GOTO 2400
2140 IF R = 27 AND N$ = "HOLE" THEN V$ = "U": GOTO 2000
2145 IF R = 14 AND N$ = "HOLE" THEN V$ = "U": GOTO 2000
2148 IF R = 2 AND N$ = "HOLE" THEN V$ = "E": GOTO 2000
2200 IF R = 3 AND N$ = "HOLE" THEN V$ = "W": GOTO 2000
2390 PRINT "You can't go that way!": GOSUB 800: GOTO 109
2400 IF MA(R, DI) > 0 AND MA(R, DI) < 128 THEN R = MA(R, DI): GOTO 90
2402 IF MA(R, DI) = 203 THEN PRINT "The ooze blocks your path.": GOTO 100
2404 IF MA(R, DI) = 204 THEN PRINT "The bunny won't let you!": GOTO 100
2405 IF MA(R, DI) = 200 THEN PRINT "As you enter the stream, your mouth gets a little water in it. Suddenly you have convulsions, choke, and drown.": GOTO 820
2408 IF MA(R, DI) = 201 AND NOT ROPE THEN 2390
2409 IF MA(R, DI) = 201 AND NOT LAMP THEN PRINT "It's too dark down there.": GOTO 100
2410 IF MA(R, DI) = 201 THEN IF OB(1) <> 7 AND OB(1) <> -1 THEN PRINT "It's too dark down there.": GOTO 100
2411 IF MA(R, DI) = 240 AND NI > 1 THEN PRINT "You're too heavy to climb up the well.": GOTO 100
2412 IF MA(R, DI) = 240 THEN PRINT "You climb up the rope.": R = 4: GOTO 90
2413 IF MA(R, DI) = 201 AND NI > 1 THEN PRINT "As you attempt to climb down the rope, it snaps, and you plunge down the well.": GOTO 820
2415 IF MA(R, DI) = 201 THEN PRINT "You make your way down the rope.": R = 7: GOTO 90
2419 IF MA(R, DI) = 700 THEN PRINT "The vampire, unfortunately, gives you a nasty bite.": GOTO 810
2420 IF MA(R, DI) = 314 AND NOT WEAC THEN PRINT "The skeleton pushes you away from the hole.": GOTO 100
2430 IF MA(R, DI) = 314 THEN PRINT "The skeleton allows you to enter.": R = 14: GOTO 90
2480 GOTO 2390
2500 IF V$ <> "GET" AND V$ <> "TAKE" THEN 2580
2510 ZH = 0: GOSUB 1000: IF N$ = "WATER" THEN IF OB(2) = -1 THEN V$ = "FILL": N$ = "BUCKE": GOTO 2000
2520 IF FL = 0 THEN PRINT "You can't get that!": GOSUB 800: GOTO 109
2530 IF RO = -1 THEN PRINT "You already have that!": GOSUB 800: GOTO 109
2550 IF RO <> R THEN PRINT "You can't get that!": GOSUB 800: GOTO 109
2560 IF NI = 5 THEN PRINT "You carrying too much!": GOSUB 800: GOTO 109
2565 IF NOT CROS AND I = 3 THEN CROS = -1: SCORE = SCORE + 10: GOSUB 300
2566 IF NOT CARP AND I = 0 THEN CARP = -1: SCORE = SCORE + 2: GOSUB 300
2570 NI = NI + 1: OB(I) = -1: PRINT "Taken.": GOTO 100
2580 IF V$ = "HINT" OR V$ = "HELP" THEN PRINT "Look at the README file."
2581 IF V$ = "TURN" AND W1$ = "OFF" THEN V$ = "UNLIG"
2582 IF V$ = "TURN" AND W1$ = "ON" THEN V$ = "LIGHT"
2585 IF V$ = "TURN" AND N$ = "OFF" THEN V$ = "UNLIG": N$ = W1$
2586 IF V$ = "TURN" AND N$ = "ON" THEN V$ = "LIGHT": N$ = W1$
2588 IF V$ = "PUT" AND N$ = "DOWN" THEN V$ = "DROP": N$ = W1$: GOTO 2500
2590 IF V$ = "PICK" AND N$ = "UP" THEN V$ = "TAKE": N$ = W1$: GOTO 2500
2600 IF V$ <> "DROP" THEN 2700
2605 IF W1$ <> "" THEN V$ = "PUT": GOTO 2000
2610 GOSUB 1000
2620 IF FL = 0 THEN PRINT "You don't have that!": GOSUB 800: GOTO 109
2635 IF RO = -2 THEN RO = -1
2640 IF RO <> -1 THEN PRINT "You don't have that!": GOSUB 800: GOTO 109
2650 NI = NI - 1: OB(I) = R: PRINT "Dropped.": GOTO 100
2700 IF V$ <> "INVEN" AND V$ <> "I" THEN 2800
2710 FL = 0: PRINT "You have:"
2715 IF WEAC THEN PRINT " a silver cross (being worn)": FL = 1
2716 IF BUCK AND OB(2) = -1 THEN PRINT " a bucket (with water)": FL = 1
2717 IF LAMP AND OB(1) = -1 THEN PRINT " a lamp (providing light)": FL = 1
2718 IF OB(4) = -1 THEN PRINT " a torch (providing light)": FL = 1
2720 FOR I = 0 TO NO - 1
2725 IF WEAC AND I = 3 THEN 2740
2726 IF BUCK AND I = 2 AND OB(I) = -1 THEN GOTO 2740
2727 IF LAMP AND I = 1 AND OB(I) = -1 THEN GOTO 2740
2728 IF I = 4 AND OB(I) = -1 THEN 2740
2730 IF OB(I) = -1 THEN PRINT " "; OB$(I): FL = 1
2740 NEXT
2745 IF FL = 0 THEN PRINT " nothing"
2760 GOTO 100
2800 IF V$ <> "LOOK" AND V$ <> "L" THEN 2900
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -