10 CLS
20 CLEAR
30 GRAPH
40 LM=10
50 L=LM
60 CLS
70 DIM MAP$(19,9)
80 ROUND=1
90 GOSUB 2110
100 CLS
110 GOSUB 2940
120 LOCATE 2,3:PRINT "鵺֣"
130 LOCATE 4,3:PRINT "ѡ񳡾:";" ";ROUND;"   "
140 KZ=ASC(INKEY$)
150 IF KZ=13 THEN  GOTO 220
160 IF KZ=20 THEN ROUND=ROUND-1
170 IF KZ=21 THEN ROUND=ROUND+1
180 IF KZ=ASC("q") THEN END
190 IF ROUND<1 THEN ROUND=1
200 IF ROUND>MAXROUND THEN ROUND=MAXROUND
210 GOTO 120
220 CLS
230 BX=120
240 BY=8
250 HX=120
260 HY=8
270 GOSUB 1740
280 HEARTMAX=20
290 HEART=0
300 GOSUB 2110
310 EMS=0
320 EMSMAX=2
330 MAXEAT=20
340 EAT=0
350 GOSUB 1440
360 VALUE=L
370 MVALUE=LM
380 PW=21
390 PX=17*8+1
400 XX=PX+8
410 YY=26
420 GOSUB 1270
430 PY=35
440 GOSUB 2660
450 HX=PX+8:HY=55
460 GOSUB 1740
470 VALUE=EAT
480 MVALUE=MAXEAT
490 PY=64
500 GOSUB 2660
510 X(0)=8
520 Y(0)=8
530 X(1)=120
540 Y(1)=64
550 XD(1)=0
560 YD(1)=0
570 PDY(1)=0
580 PDX(1)=0
590 FOR XUN=0 TO EC
600 XX=X(XUN)
610 YY=Y(XUN)
620 IF XUN=0 THEN GOSUB 1270
630 IF XUN<>0 THEN GOSUB 1340
640 NEXT XUN
650 GOSUB 2730
660 IF PEEK (199)<128 THEN  GOTO 760
670 KZ=ASC(INKEY$)
680 IF KZ=ASC("q") THEN  GOTO 10
690 IF INT(X(0)/8)<>X(0)/8 THEN  GOTO 720
700 IF KZ=20 THEN SYD=-8:SXD=0:SPDX=0:SPDY=-1: GOTO 2850
710 IF KZ=21 THEN SYD=8:SXD=0:SPDY=1:SPDX=0: GOTO 2850
720 IF INT(Y(0)/8)<>Y(0)/8 THEN  GOTO 750
730 IF KZ=23 THEN SXD=-8:SYD=0:SPDX=-1:SPDY=0: GOTO 2850
740 IF KZ=22 THEN SXD=8:SYD=0:SPDX=1:SPDY=0: GOTO 2850
750 IF KZ=ASC("p") THEN GOSUB 2730
760 EMS=EMS+1
770 IF EMS=EMSMAX THEN EMS=0
780 IF BX=X(0) AND BY=Y(0) THEN  GOTO 800
790 GOTO 900
800 EAT=EAT+1
810 VALUE=EAT
820 MAXVALUE=MAXEAT
830 PY=64
840 GOSUB 2660
850 GOSUB 2250
860 IF EAT=MAXEAT THEN  GOTO 2490
870 BX=HX
880 BY=HY
890 GOSUB 1740
900 FG=0
910 IF BX=X(1) AND BY=Y(1) THEN FG=1
920 FOR PXUN=0 TO 1
930 IF EMS=1 AND PXUN=1 THEN  GOTO 1250
940 MAPX=INT(X(PXUN)/8)+PDX(PXUN)
950 MAPY=INT(Y(PXUN)/8)+PDY(PXUN)
960 MAPB$=MAP$(MAPX,MAPY)
970 NX=INT(X(PXUN)/8)
980 NY=INT(Y(PXUN)/8)
990 NMAPB$=MAP$(NX,NY)
1000 IF NMAPB$="A" AND PXUN=1 THEN  GOTO 1020
1010 IF MAPB$="*" OR MAPB$="A" THEN  GOTO 1050
1020 SAVEYD=YD(PXUN)
1030 SAVEXD=XD(PXUN)
1040 XD(PXUN)=0:YD(PXUN)=0
1050 IF XD(1)=0 AND YD(1)=0 THEN GOSUB 1850
1060 LXD=XD(PXUN)
1070 LYD=YD(PXUN)
1080 TEMPX=X(PXUN)+LXD
1090 TEMPY=Y(PXUN)+LYD
1100 XX=X(PXUN)
1110 YY=Y(PXUN)
1120 BOX XX,YY,XX+7,YY+7,1,0
1130 IF FG=0 THEN  GOTO 1170
1140 HX=BX
1150 HY=BY
1160 GOSUB 1740
1170 X(PXUN)=TEMPX
1180 Y(PXUN)=TEMPY
1190 XX=TEMPX
1200 YY=TEMPY
1210 IF PXUN=0 THEN GOSUB 1270
1220 IF PXUN=1 THEN GOSUB 1340
1230 IF X(1)=X(0) AND Y(1)=Y(0) THEN  GOTO 2320
1240 NEXT PXUN
1250 IF X(1)=X(0) AND Y(1)=Y(0) THEN  GOTO 2320
1260 GOTO 660
1270 BOX XX,YY,XX+7,YY+5,1,1
1280 LINE XX+1,YY,XX,YY+1,0
1290 LINE XX+6,YY,XX+7,YY+2,0
1300 LINE XX+2,YY+2,XX+2,YY+4,0
1310 LINE XX+5,YY+2,XX+5,YY+4,0
1320 LINE XX+1,YY+7,XX+6,YY+7,1
1330 RETURN
1340 LINE XX+1,YY,XX+6,YY,1
1350 BOX XX,YY+1,XX+7,YY+7,1,1
1360 LINE XX+1,YY+2,XX+1,YY+3,0
1370 LINE XX+1,YY+3,XX+2,YY+3,0
1380 LINE XX+5,YY+2,XX+5,YY+3,0
1390 LINE XX+4,YY+3,XX+5,YY+3,0
1400 LINE XX+2,YY+5,XX+4,YY+5,0
1410 LINE XX+1,YY+7,XX+1,YY+7,0
1420 LINE XX+6,YY+7,XX+6,YY+7,0
1430 RETURN
1440 FOR XUN=0 TO 9
1450 FOR XUN1=1 TO 20
1460 C$=MAP$(XUN1-1,XUN)
1470 IF C$<>"*" THEN VX=(XUN1-1)*8:VY=XUN*8:GOSUB 1510
1480 NEXT XUN1
1490 NEXT XUN
1500 RETURN
1510 IF C$="B" THEN GOSUB 1560
1520 IF C$="C" THEN GOSUB 1630
1530 IF C$="D" THEN GOSUB 1680
1540 IF C$="E" THEN GOSUB 1610
1550 RETURN
1560 BOX VX,VY+1,VX+7,VY+7,1,1
1570 LINE VX,VY+4,VX+2,VY+4,0
1580 LINE VX+4,VY+4,VX+7,VY+4,0
1590 LINE VX+4,VY+4,VX+4,VY+7,0
1600 RETURN
1610 BOX VX,VY,VX+7,VY+7,0,1
1620 RETURN
1630 BOX VX,VY,VX+7,VY+7,1,1
1640 FOR FEX=0 TO 7 STEP 2
1650 LINE VX,VY+FEX,VX+FEX,VY,0
1660 NEXT FEX
1670 RETURN
1680 BOX VX,VY,VX+7,VY+7,1,1
1690 LINE VX+2,VY+2,VX+4,VY+2,0
1700 LINE VX+2,VY+2,VX+2,VY+4,0
1710 LINE VX+6,VY+1,VX+6,VY+6,0
1720 LINE VX+1,VY+6,VX+6,VY+6,0
1730 RETURN
1740 LINE HX+1,HY,HX+5,HY,1
1750 LINE HX+3,HY,HX+3,HY,0
1760 LINE HX,HY+1,HX+6,HY+1,1
1770 LINE HX+1,HY+2,HX+5,HY+2,1
1780 LINE HX+2,HY+3,HX+4,HY+3,1
1790 LINE HX+3,HY+4,HX+3,HY+4,1
1800 RETURN
1810 LINE SX,SY,SX+7,SY+7,1
1820 LINE SX+7,SY,SX,SY+7,1
1830 BOX SX+7,SY+7,SX,SY,0,1
1840 RETURN
1850 AIAGAIN=0
1860 IF AIAGAIN<6 THEN  GOTO 1960
1870 AXD=-SAVEXD
1880 AYD=-SAVEYD
1890 IF AYD=-8 THEN AXD=0:APDX=0:APDY=-1
1900 IF AYD=8 THEN AXD=0:APDY=1:APDX=0
1910 IF AXD=-8 THEN AYD=0:APDX=-1:APDY=0
1920 IF AXD=8 THEN AYD=0:APDX=1:APDY=0
1930 PDX(1)=APDX:PDY(1)=APDY
1940 XD(1)=AXD:YD(1)=AYD
1950 RETURN
1960 FX=INT(RND(1)*4)
1970 IF FX>0 THEN  GOTO 1990
1980 IF X(1)<X(0) THEN XD(1)=8:YD(1)=0:APDX=1:APDY=0: GOTO 2050
1990 IF FX>1 THEN  GOTO 2010
2000 IF X(1)>X(0) THEN XD(1)=-8:YD(1)=0:APDX=-1:APDY=0: GOTO 2050
2010 IF FX>2 THEN  GOTO 2030
2020 IF Y(1)<Y(0) THEN YD(1)=8:XD(1)=0:APDY=1:APDX=0: GOTO 2050
2030 IF Y(1)>Y(0) THEN YD(1)=-8:XD(1)=0:APDY=-1:APDX=0: GOTO 2050
2040 GOTO 1860
2050 MAPX=INT(X(1)/8)+APDX
2060 MAPY=INT(Y(1)/8)+APDY
2070 MAPB$=MAP$(MAPX,MAPY)
2080 IF MAPB$<>"*" AND MAPB$<>"A" THEN AIAGAIN=AIAGAIN+1: GOTO 1860
2090 PDX(1)=APDX:PDY(1)=APDY
2100 RETURN
2110 OPEN "JLDDATA.DAT" FOR RANDOM AS #1 LEN=20
2120 MAXROUND=INT(LOF(1)/200)
2130 IF MAXROUND=0 THEN PRINT "밲װͼ!":CLOSE #1:END
2140 RID=0
2150 FIELD #1,20AS READMAP$
2160 FOR XUN=(ROUND-1)*10+1 TO ROUND*10
2170 GET 1,XUN
2180 FOR XUN2=1 TO 20
2190 MAP$(XUN2-1,RID)=MID$(READMAP$,XUN2,1)
2200 NEXT XUN2
2210 RID=RID+1
2220 NEXT XUN
2230 CLOSE #1
2240 RETURN
2250 SHX=INT(RND(1)*17)
2260 SHY=INT(RND(1)*10)
2270 JC$=MAP$(SHX,SHY)
2280 IF JC$<>"*" AND JC$<>"A" THEN  GOTO 2250
2290 HX=SHX*8
2300 HY=SHY*8
2310 RETURN
2320 L=L-1
2330 DDX=X(0)
2340 DDY=Y(0)
2350 FOR XUN=0 TO 4
2360 XX=DDX:YY=DDY
2370 GOSUB 1270
2380 FOR YS=0 TO 50:NEXT YS
2390 BOX DDX,DDY,DDX+7,DDY+7,1,0
2400 FOR YS=0 TO 50:NEXT YS
2410 NEXT XUN
2420 IF L<=0 THEN  GOTO 2440
2430 GOTO 360
2440 INF$="GAME OVER"
2450 GOSUB 2560
2460 FH$=INKEY$
2470 IF FH$="" THEN  GOTO 2460
2480 GOTO 20
2490 ROUND=ROUND+1
2500 IF ROUND>MAXROUND THEN  GOTO 2800
2510 INF$="ROUND "+" "+STR$(ROUND)
2520 GOSUB 2560
2530 FH$=INKEY$
2540 IF FH$="" THEN  GOTO 2530
2550 GOTO 220
2560 GRAPH
2570 FOR CLRY=0 TO 5
2580 FOR CLRY1=CLRY TO 79 STEP 5
2590 LINE 0,CLRY1,159,CLRY1,1
2600 NEXT CLRY1
2610 NEXT CLRY
2620 LOCATE 3,6:PRINT INF$
2630 FH$=INKEY$
2640 IF FH$="" THEN  GOTO 2630
2650 RETURN
2660 BOX PX,PY,PX+PW,PY+5,1,0
2670 BOX PX,PY,PX+PW,PY+5,0,1
2680 BL=VALUE/MVALUE
2690 PROW=(PW-2)*BL
2700 IF VALUE=0 THEN  GOTO 2720
2710 BOX PX+2,PY+2,PX+PROW,PY+3,1,1
2720 RETURN
2730 SX=8*18
2740 SY=8
2750 GOSUB 1810
2760 WAIT$=INKEY$
2770 IF WAIT$="" THEN  GOTO 2760
2780 BOX SX,SY,SX+7,SY+7,1,0
2790 RETURN
2800 INF$="ף㣡"
2810 GOSUB 2560
2820 FH$=INKEY$
2830 IF FH$="" THEN  GOTO 2820
2840 GOTO 10
2850 MAPX=INT(X(0)/8)+SPDX
2860 MAPY=INT(Y(0)/8)+SPDY
2870 MAPB$=MAP$(MAPX,MAPY)
2880 IF MAPB$<>"A" AND MAPB$<>"*" THEN  GOTO 760
2890 XD(0)=SXD
2900 YD(0)=SYD
2910 PDX(0)=SPDX
2920 PDY(0)=SPDY
2930 GOTO 760
2940 CLS
2950 BOX 2,0,155,12,1,1
2960 BOX 2,12,155,75,0,1
2970 BOX 155,3,157,77,1,1
2980 BOX 5,75,157,77,1,1
2990 BOX 145,2,153,10,1,0
3000 LINE 146,3,152,9,1
3010 LINE 146,9,152,3,1
3020 BOX 135,2,143,10,1,0
3030 BOX 136,3,142,9,0,1
3040 LINE 136,4,142,4,1
3050 BOX 125,2,133,10,1,0
3060 LINE 127,8,131,8,1
3070 RETURN
