EndIf 
        tempHigh = PlayerY
        Gosub GetFloor
        PlayerFloor = tempFloor
    EndIf 
Return GetPlayerInfo
//得到蓝球信息
Sub GetBallInfo
    VBSCall FindColorEx(GameLeft, GameTop + 55, GameRight, GameButtom - 60, BallColor, 0, 0.9, BallX, BallY)
    Delay 1
    If BallY>0
        tempHigh = BallY + 20
        Gosub GetFloor
        BallFloor = tempFloor
    EndIf 
    //吃蓝是特殊情况 --因为在最右边,要想吃的话,得从左边上去。中间会导致找不到蓝球。所以强制置X坐标
    If BallFloor = 4 and BallY < 0
        BallX = GameRight
    EndIf 
Return GetPlayerInfo
//得到所在的层数
Sub GetFloor
    If tempHigh > GameTop + 250
        tempFloor = 0
    ElseIf tempHigh > GameTop + 170
        tempFloor = 1
    ElseIf tempHigh > GameTop + 110
        tempFloor = 2
    ElseIf tempHigh > GameTop + 80
        tempFloor = 4
    ElseIf tempHigh > GameTop + 50
        tempFloor = 3.5
    EndIf 
Return GetFloor
//走向怪物
Sub MoveToMon
    GameState = -1
    If MonX > 0 and PlayerX > 0
        GameState = 0
        FloorDis = MonFloor - PlayerFloor
        //如果玩家高度高于怪物,先移动到怪物的下面
        If FloorDis < 0 and (NearMon = 0 or tempFloorDis <> FloorDis)
            tempFloorDis = FloorDis
            NearMon = 1
            Gosub JudgeMoveDir
            //如果怪物处在第四层,特殊处理
        ElseIf MonFloor = 4
            If FloorDis < 3.5
                If PlayerFloor = 1
                    //我已在第一层了判断是否接近边缘 --判断用什么方式攻击怪物
                    VBSCall FindColorEx(PlayerX + 48, PlayerY - 120, PlayerX + 55, PlayerY - 110, FloorColor, 0, 0.8, FlooX, FlooY)
                    If FlooX > 0
                        Gosub StopMove
                        If Abs(MonX - PlayerX) >= AttackMaxDis
                            GameState = 2
                        Else 
                            GameState = 1
                        EndIf 
                    Else 
                        If Abs(MonX - PlayerX) >= AttackMaxDis
                            Gosub JudgeMoveDir
                        Else 
                            Gosub StopMove
                            GameState = 1
                        EndIf 
                    EndIf 
                Else 
                    If Abs(MonX - PlayerX) >= AttackMaxDis
                        Gosub JudgeMoveDir
                    Else 
                        Gosub StopMove
                        GameState = 1
                    EndIf 
                EndIf 
            Else 
                tempLeftDis = 0 : tempRightDis = 0
                tempTopDis = -90: tempButtomDis = 0: tempXDis = 65
                //在最底层,则找到第一层相对于玩家的位置
                Gosub JudgeFloorPos
            EndIf 
            //玩家与怪物的高度小于3格,在最大攻击距离内跳砍就能打到
        ElseIf FloorDis >= 0 and FloorDis <> 3
            //如果玩家和怪的X距离大于最大攻击距离
            If (((Abs(MonX - PlayerX) >= AttackMaxDis) and (FloorDis < 3)) or ((Abs(MonX - PlayerX) >= 20) and (FloorDis > 3)))
                Gosub JudgeMoveDir
            Else 
                Gosub StopMove
                GameState = 1
            EndIf 
        EndIf 
    ElseIf NearMon = 1
        Gosub StopMove
    EndIf 
Return MoveToMon
//向目标移动
Sub JudgeMoveDir
    KeyUp 39, 1
    KeyUp 37, 1
    If MonX > PlayerX
        KeyDown 39, 1