'༭ԼдGGV.COM.CNWQXNET.COM
#Q SCREEN 12
JLD5:
CLS
NEWGAME:
CLEAR
#G GRAPH
LM=10
L=LM
CLS
DIM MAP$(19,9)
ROUND=1
GOSUB READMAPDATA:




'==============================================================


CLS
SHOWROUND:
GOSUB DRAWWINDOWS:
SELWAIT:
LOCATE 2,3:PRINT "鵺֣"
LOCATE 4,3:PRINT "ѡ񳡾:"; " ";ROUND;"   "
#G KZ=ASC(INKEY$)
#Q KZ$=INKEY$
#Q IF KZ$="" THEN GOTO SELWAIT:
IF KZ=13 THEN GOTO NEXTROUND:
#Q IF KZ$=CHR$(13) THEN GOTO NEXTROUND:
#G IF KZ=20 THEN ROUND=ROUND-1
#G IF KZ=21 THEN ROUND=ROUND+1
#Q IF KZ$="8" THEN ROUND=ROUND-1
#Q IF KZ$="5" THEN ROUND=ROUND+1
#G IF KZ=ASC("q") THEN END
IF ROUND<1 THEN ROUND=1             
IF ROUND>MAXROUND THEN ROUND=MAXROUND
GOTO SELWAIT:


'============================================================================











NEXTROUND:
CLS

BX=120
BY=8
HX=120
HY=8
GOSUB DHEART:

HEARTMAX=20
HEART=0
GOSUB READMAPDATA:
EMS=0
EMSMAX=2
MAXEAT=20
EAT=0

GOSUB READMAP:
GAMEAGAIN:
'==============================
VALUE=L
MVALUE=LM
PW=21
PX=17*8+1
XX=PX+8
YY=26
GOSUB DBUG:
PY=35
GOSUB DRAWPROSS:
HX=PX+8:HY=55
GOSUB DHEART:
VALUE=EAT
MVALUE=MAXEAT
PY=64
GOSUB DRAWPROSS:
'==============================
X(0)=8
Y(0)=8
X(1)=120
Y(1)=64
XD(1)=0
YD(1)=0
PDY(1)=0
PDX(1)=0
'ⱦﲻܹھϹ
FOR XUN=0 TO EC
XX=X(XUN)
YY=Y(XUN)
IF XUN=0 THEN GOSUB DBUG:
IF XUN<>0 THEN GOSUB DENEMY:
NEXT XUN
GOSUB GAMEPAUSE:
 
GAME:
'======================================================================
'ϷƲ
#G IF PEEK(199)<128 THEN GOTO GAMECON:
#G KZ=ASC(INKEY$)
#Q KZ$=INKEY$
#G IF KZ=ASC("q") THEN GOTO JLD5:
#Q IF KZ$="Q" THEN GOTO JLD5:
IF INT(X(0)/8)<>X(0)/8 THEN GOTO NOYMOVE:
#G IF KZ=20 THEN SYD=-8:SXD=0:SPDX=0:SPDY=-1:GOTO IPD:
#G IF KZ=21 THEN SYD=8:SXD=0:SPDY=1:SPDX=0:GOTO IPD:

#Q IF KZ$="8" THEN SYD=-8:SXD=0:SPDX=0:SPDY=-1:GOTO IPD:
#Q IF KZ$="5" THEN SYD=8:SXD=0:SPDY=1:SPDX=0:GOTO IPD:
NOYMOVE:
IF INT(Y(0)/8)<>Y(0)/8 THEN GOTO NOXMOVE:
#G IF KZ=23 THEN SXD=-8:SYD=0:SPDX=-1:SPDY=0:GOTO IPD:
#G IF KZ=22 THEN SXD=8:SYD=0:SPDX=1:SPDY=0:GOTO IPD:
#Q IF KZ$="4" THEN SXD=-8:SYD=0:SPDX=-1:SPDY=0:GOTO IPD:
#Q IF KZ$="6" THEN SXD=8:SYD=0:SPDX=1:SPDY=0:GOTO IPD:
NOXMOVE:
IF KZ=ASC("p") THEN GOSUB GAMEPAUSE:
#Q IF KZ$="P" THEN GOSUB GAMEPAUSE:
GAMECON:
'=====================================================================
EMS=EMS+1
'Ϸƶ
IF EMS=EMSMAX THEN EMS=0
'Ϸƶ
IF BX = X(0) AND BY=Y(0)   THEN  GOTO HAVEEAT:
'ûгԵ
'===================================================
GOTO NOEAT:
HAVEEAT:
EAT=EAT+1
VALUE=EAT
MAXVALUE=MAXEAT
PY=64
GOSUB DRAWPROSS:
'Ʊ
GOSUB SETHEART:
IF EAT=MAXEAT THEN GOTO CLEARROUND:
'ﵽִйس
BX=HX
BY=HY
GOSUB DHEART:
NOEAT:
FG=0
'ǵıΪûи
IF BX=X(1) AND BY=Y(1)  THEN FG=1
'жϹûиǱ
'==================================================
FOR PXUN=0 TO 1
IF EMS=1 AND  PXUN=1  THEN GOTO NOXUN:
'0-1ľѭ
MAPX= INT(X(PXUN)/8)+PDX(PXUN)
MAPY=INT(Y(PXUN)/8)+PDY(PXUN)
MAPB$=MAP$(MAPX,MAPY)
NX=INT(X(PXUN)/8)
NY=INT(Y(PXUN)/8)
NMAPB$=MAP$(NX,NY)
IF NMAPB$="A" AND PXUN=1  THEN GOTO NEEDSTOP:
'жϵڵĵطû˼
IF MAPB$="*" OR MAPB$="A"   THEN  GOTO  CANMOVE:
'ͼλΪ * A ʾϷ߿ͨ
'===================================
NEEDSTOP:
SAVEYD=YD(PXUN)
SAVEXD=XD(PXUN) 
XD(PXUN)=0:YD(PXUN)=0
'ϰ,Ȼ󽫾ƶٶȫΪ0
'=============================================
CANMOVE:
IF  XD(1)=0 AND YD(1)=0  THEN GOSUB AI:
'1ŵҲǵƶٶȶΪ0ʱִܳ
LXD=XD(PXUN)
LYD=YD(PXUN)
'˵ƶǲ0ʾγ˲ƶ
TEMPX=X(PXUN)+LXD
TEMPY=Y(PXUN)+LYD
XX=X(PXUN)
YY=Y(PXUN)
LINE(XX,YY)-(XX+7,YY+7),0,BF
'==========================
'»Ʊ
IF FG=0 THEN GOTO NOFG:
HX=BX
HY=BY
GOSUB DHEART:
NOFG:
X(PXUN)=TEMPX
Y(PXUN)=TEMPY
XX=TEMPX
YY=TEMPY
IF PXUN=0 THEN  GOSUB DBUG:
IF PXUN=1 THEN GOSUB DENEMY:
IF  X(1)=X(0) AND Y(1)=Y(0) THEN GOTO DIED:
NEXT PXUN
NOXUN:
IF  X(1)=X(0) AND Y(1)=Y(0) THEN GOTO DIED:
'жϷû
#Q FOR YS=0 TO 500000:NEXT

GOTO GAME:
'=================================================
'ƾͼ
DBUG:
LINE(XX,YY)-(XX+7,YY+5),15,BF
LINE(XX+1,YY)-(XX,YY+1),0
LINE(XX+6,YY)-(XX+7,YY+2),0
LINE(XX+2,YY+2)-(XX+2,YY+4),0
LINE(XX+5,YY+2)-(XX+5,YY+4),0
LINE(XX+1,YY+7)-(XX+6,YY+7),15
RETURN
'ƾλ
'====================================================


'======================================================
'ħͼ
DENEMY:
LINE (XX+1,YY)-(XX+6,YY),15
LINE(XX,YY+1)-(XX+7,YY+7),15,BF
LINE(XX+1,YY+2)-(XX+1,YY+3),0
LINE(XX+1,YY+3)-(XX+2,YY+3),0
LINE(XX+5,YY+2)-(XX+5,YY+3),0
LINE(XX+4,YY+3)-(XX+5,YY+3),0
LINE(XX+2,YY+5)-(XX+4,YY+5),0
LINE(XX+1,YY+7)-(XX+1,YY+7),0
LINE(XX+6,YY+7)-(XX+6,YY+7),0
RETURN
'=======================================================

READMAP:
FOR XUN=0 TO 9
FOR XUN1=1 TO 20
C$=MAP$(XUN1-1,XUN)
IF C$<>"*" THEN VX= (XUN1-1)*8 :VY=XUN*8: GOSUB DRAWMAP:
NEXT XUN1
NEXT XUN
RETURN

DRAWMAP:
'#Q IF C$="A" THEN LINE(VX,VY)-(VX+7,VY+7),15,B
IF C$="B"  THEN GOSUB PIC1:
IF C$="C"  THEN GOSUB PIC2:
IF C$="D" THEN GOSUB PIC3: 
IF C$="E" THEN GOSUB PIC4:
RETURN

'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'ש
PIC1:
LINE(VX,VY+1)-(VX+7,VY+7),15,BF
LINE(VX,VY+4)-(VX+2,VY+4),0
LINE(VX+4,VY+4)-(VX+7,VY+4),0
LINE(VX+4,VY+4)-(VX+4,VY+7),0
RETURN
'=====================================

PIC4:
'Ƹְ
LINE(VX,VY)-(VX+7,VY+7),15,B
RETURN

PIC2:
'״
LINE(VX,VY)-(VX+7,VY+7),15,BF
FOR FEX=0 TO 7 STEP 2
LINE(VX,VY+FEX)-(VX+FEX,VY),0
NEXT FEX
RETURN

PIC3:
'͹θְ
LINE(VX,VY)-(VX+7,VY+7),15,BF
LINE(VX+2,VY+2)-(VX+4,VY+2),0
LINE(VX+2,VY+2)-(VX+2,VY+4),0
LINE(VX+6,VY+1)-(VX+6,VY+6),0
LINE(VX+1,VY+6)-(VX+6,VY+6),0
RETURN


'***********************************************
'ͼ
DHEART:

LINE(HX+1,HY)-(HX+5,HY),15
LINE(HX+3,HY)-(HX+3,HY),0
LINE(HX,HY+1)-(HX+6,HY+1),15
LINE(HX+1,HY+2)-(HX+5,HY+2),15
LINE(HX+2,HY+3)-(HX+4,HY+3),15
LINE(HX+3,HY+4)-(HX+3,HY+4),15
RETURN
'***********************************************
'===============================
PICWAIT:
LINE(SX,SY)-(SX+7,SY+7),15
LINE(SX+7,SY)-(SX,SY+7),15
LINE(SX+7,SY+7)-(SX,SY),15,B
RETURN



'=======================================================
'Ե㲿
AI:

AIAGAIN=0
AIA:
IF AIAGAIN<6 THEN GOTO CANFIND:
AXD=-SAVEXD
AYD=-SAVEYD
IF  AYD=-8 THEN AXD=0:APDX=0:APDY=-1
IF AYD=8 THEN AXD=0:APDY=1:APDX=0
IF AXD=-8 THEN AYD=0:APDX=-1:APDY=0
IF AXD=8  THEN AYD=0:APDX=1:APDY=0
PDX(1)=APDX:PDY(1)=APDY
XD(1)=AXD:YD(1)=AYD
RETURN
CANFIND:
FX=INT(RND(1)*4)
IF FX>0 THEN GOTO FX1:
IF X(1)<X(0) THEN XD(1)=8:YD(1)=0:APDX=1:APDY=0: GOTO AICON:
FX1:
IF FX>1 THEN GOTO FX2:
IF X(1)>X(0) THEN XD(1)=-8:YD(1)=0:APDX=-1:APDY=0: GOTO AICON:
FX2:
IF FX>2 THEN GOTO FX3:
IF Y(1)<Y(0) THEN YD(1)=8:XD(1)=0:APDY=1:APDX=0 :GOTO AICON:
FX3:
IF Y(1)>Y(0) THEN YD(1)=-8:XD(1)=0:APDY=-1:APDX=0:GOTO AICON:
GOTO AIA:
AICON:
MAPX= INT(X(1)/8)+APDX
MAPY=INT(Y(1)/8)+APDY
MAPB$=MAP$(MAPX,MAPY)
IF MAPB$<>"*" AND MAPB$<>"A"  THEN AIAGAIN=AIAGAIN+1:GOTO AIA:
PDX(1)=APDX:PDY(1)=APDY
RETURN
'=====================================


READMAPDATA:
OPEN "JLDDATA.DAT" FOR RANDOM AS #1 LEN=20
MAXROUND=INT(LOF(1)/200)
IF MAXROUND=0 THEN PRINT "밲װͼ!":CLOSE #1:END
RID=0
FIELD #1, 20 AS READMAP$
FOR XUN=(ROUND-1)*10+1 TO ROUND*10
GET 1,XUN
FOR XUN2=1 TO 20
MAP$(XUN2-1,RID)=MID$(READMAP$,XUN2,1)
NEXT XUN2
RID=RID+1
NEXT XUN
CLOSE #1
RETURN


SETHEART:
RNDHEARTAGAIN:
SHX=INT(RND(1)*17)
SHY=INT(RND(1)*10)
JC$=MAP$(SHX,SHY)
IF JC$<>"*" AND JC$<>"A" THEN GOTO RNDHEARTAGAIN:
HX=SHX*8
HY=SHY*8
RETURN


'=============================================
DIED:
L=L-1
DDX=X(0)
DDY=Y(0)
FOR XUN=0 TO 4
XX=DDX:YY=DDY
GOSUB DBUG:
#Q FOR YS=0 TO 400000:NEXT
#G FOR YS=0 TO 50:NEXT YS
LINE(DDX,DDY)-(DDX+7,DDY+7),0,BF
#Q FOR YS=0 TO 400000:NEXT
#G FOR YS=0 TO 50:NEXT YS
NEXT XUN

IF L<=0 THEN GOTO GAMEOVER:
'==============================================
GOTO GAMEAGAIN:
GAMEOVER:
INF$="GAME OVER"
GOSUB XIAOGUO:
QWAIT1:
FH$=INKEY$
IF FH$="" THEN GOTO QWAIT1:
GOTO NEWGAME:

CLEARROUND:
ROUND=ROUND+1
IF ROUND>MAXROUND THEN GOTO ALLROUNDCLEARED:
INF$="ROUND "+ " "+ STR$(ROUND)
GOSUB XIAOGUO:
QWAIT5:
FH$=INKEY$
IF FH$="" THEN GOTO QWAIT5:
GOTO NEXTROUND:

XIAOGUO:
#G GRAPH
FOR CLRY=0 TO 5 
FOR CLRY1=CLRY TO 79  STEP 5
LINE(0,CLRY1)-(159,CLRY1),15
#Q FOR YS=0 TO 30000:NEXT
NEXT CLRY1 
NEXT CLRY
LOCATE 3,6:PRINT INF$
QWAIT:
FH$=INKEY$
IF FH$="" THEN GOTO QWAIT:

RETURN







'===========================================
'ƽ
DRAWPROSS:
LINE(PX,PY)-(PX+PW,PY+5),0,BF
LINE(PX,PY)-(PX+PW,PY+5),15,B
BL=VALUE/MVALUE
PROW=(PW-2)*BL
IF VALUE=0 THEN  GOTO NODRAWPROSS:
LINE(PX+2,PY+2)-(PX+PROW,PY+3),15,BF
NODRAWPROSS:

RETURN
'===========================================
GAMEPAUSE:
SX=8*18
SY=8
GOSUB PICWAIT:
PWAIT:
WAIT$=INKEY$
IF WAIT$="" THEN GOTO PWAIT:
LINE (SX,SY)-(SX+7,SY+7),0,BF
RETURN
ALLROUNDCLEARED:
INF$="ף㣡"
GOSUB XIAOGUO:
QWAIT7:
FH$=INKEY$
IF FH$="" THEN GOTO QWAIT7:
GOTO  JLD5:

IPD:
MAPX= INT(X(0)/8)+SPDX
MAPY=INT(Y(0)/8)+SPDY
MAPB$=MAP$(MAPX,MAPY)
IF MAPB$<>"A" AND MAPB$<>"*" THEN GOTO GAMECON:
XD(0)=SXD
YD(0)=SYD
PDX(0)=SPDX
PDY(0)=SPDY
GOTO GAMECON:







DRAWWINDOWS:
CLS
#G BOX 2,0,155,12,1,1
#G BOX 2,12,155,75,0,1
#G BOX 155,3,157,77,1,1
#G BOX 5,75,157,77,1,1
#G BOX 145,2,153,10,1,0
#G LINE 146,3,152,9,1
#G LINE 146,9,152,3,1
#G BOX 135,2,143,10,1,0
#G BOX 136,3,142,9,0,1
#G LINE 136,4,142,4,1
#G BOX 125,2,133,10,1,0
#G LINE 127,8,131,8,1
RETURN

