//置玩家行走方向和当前面向相同
        MonDir = 1
    Else 
        KeyDown 37, 1
        MonDir = -1
    EndIf 
Return JudgeMoveDir
//停止移动
Sub StopMove
    FindBallState = 0
    NearMon = 0
    KeyUp 39, 1
    KeyUp 37, 1
    Delay 30
Return StopMove
//移动到蓝球
Sub MoveToBall
    //蓝自动回到大于90%时不再找蓝球回蓝
    VBSCall FindColorEx( MaxMpX, MpY, MaxMpX, MpY, MpColor, 0, 0.9, FindBallX, FindBallY)
    If FindBallX > 0
        FindBallState = 0
        BallFloor = 0
    EndIf 
    If GameState < 0
        //判断是否要找蓝球回蓝
        VBSCall FindColorEx( MpX, MpY, MpX, MpY, MpColor, 0, 0.9, FindBallX, FindBallY)
        If FindBallX < 0 and FindBallState = 0
            FindBallState = 1
        EndIf 
        If FindBallState <> 0
            Gosub GetBallInfo
            Gosub StepToFloor
        EndIf 
    EndIf 
Return MoveToBall
//得到层与层之间的关系
Sub StepToFloor
    If BallX > 0 and PlayerX > 0
        GameState = -2
        FloorDis = BallFloor - PlayerFloor
        //如果玩家高度高于怪物,先移动到怪物的下面
        If FloorDis < 0 and (FindBallState = 1 or tempFloorDis <> FloorDis)
            tempFloorDis = FloorDis
            FindBallState = 2
            Gosub JudgeMoveBallDir
        ElseIf FloorDis = 0
            Gosub JudgeMoveBallDir
            //已吃到蓝球,蓝球位置置0
            If Abs(BallX - PlayerX) < 40
                BallFloor = 0
            EndIf 
        ElseIf FloorDis > 0
            tempLeftDis = 0 : tempRightDis = 0
            //处理找蓝球加蓝时可能会导致的一个问题
            If BallFloor = 1
                If BallX > PlayerX
                    tempLeftDis = 250 : tempRightDis = 0
                Else 
                    tempLeftDis = 0 : tempRightDis = -250
                EndIf 
            EndIf 
            If PlayerFloor = 3.5
                tempTopDis = 40: tempButtomDis = 60: tempXDis = 150
            Else 
                tempTopDis = -90: tempButtomDis = 0: tempXDis = 65
            EndIf 
            Gosub JudgeFloorPos
        EndIf 
    ElseIf FindBallState = 2
        Gosub StopMove
    EndIf 
Return StepToFloor
//得到层与层之间的关系
Sub JudgeFloorPos
    //没有在第一层,则找到第一层相对于玩家的位置 从中间左右判断上一层相对于玩家的位置
    VBSCall FindColorEx(GameLeft + tempLeftDis, PlayerY + tempTopDis, PlayerX, PlayerY + tempButtomDis, FloorColor, 2, 0.8, FloorX1, FloorY1)
    VBSCall FindColorEx(PlayerX, PlayerY + tempTopDis, GameRight + tempRightDis, PlayerY + tempButtomDis, FloorColor, 0, 0.8, FloorX2, FloorY2)
    If FloorX1 < 0 and FloorX2 < 0
        KeyDown KeyNum, 1
    ElseIf (FloorX1> 0 and FloorX2 > 0 and (FloorX2 - PlayerX >= PlayerX - FloorX1)) or (FloorX1 > 0 and FloorX2 < 0)
        KeyUp 39, 1
        KeyDown 37, 1
        MonDir = -1
    ElseIf (FloorX1> 0 and FloorX2 > 0 and (FloorX2 - PlayerX < PlayerX - FloorX1)) or (FloorX1 < 0 and FloorX2 > 0)
        KeyUp 37, 1
        KeyDown 39, 1
        MonDir = 1
    EndIf 
    If Abs(FloorX1 - PlayerX) < tempXDis or ABS(FloorX2 - PlayerX) < tempXDis
        KeyPress 32, 1
        Delay 500
    EndIf 
Return JudgeFloorPos
//向目标移动
Sub JudgeMoveBallDir
    KeyUp 39, 1
    KeyUp 37, 1
    If BallX > PlayerX
        KeyDown 39, 1
        //置玩家行走方向和当前面向相同