魔塔之拯救白娘子 完整工程下载地址: 二、游戏开始后的流程控制:当初始化完成后,timerDraw.Enabled = True 开始进行流程控制。下边的代码就是控制内容。
初始化→根据 主角所在的楼层判断主角的位置并绘制主角→显示主角的基本信息(生命值、体力值、金币、经验值等等)→游戏界面鼠标点击判断→男主角移动及方向处理→自动寻路处理→ 游戏时主角显示处理→循环判断直到游戏结束←

Case 1 '游戏开始了
         

        If Winner = True And 对话窗口显示标志 = False Then
         Running = 9: 读档标志 = False: 判断running状态_初始化: BackPic.LoadGraph "image\魔塔背景\魔塔背景1.jpg", xgBLACK
    End If
        

         游戏中读取地图层次判断 '判断主角所在地图并绘制主角
         
        
         
         '主角信息显示
           
           With 储存基本的物体图形数组(14) '主角人物
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 10
        End With
           
           With 储存基本的物体图形数组(39) '黄钥匙
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 190
        End With
           
           With 储存基本的物体图形数组(40) '蓝钥匙
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 600, 190
        End With
           
           With 储存基本的物体图形数组(41) '红钥匙
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 700, 190
        End With
           
         ' Call 背景Draw
          
           DrawText "等级:" & 人物信息.角色等级, 550, 20, xgGREEN
           DrawText "生命:" & 人物信息.角色生命值, 550, 50, xgRED
           DrawText "攻击:" & 人物信息.角色攻击力, 550, 80, xgCYAN
           DrawText "防御:" & 人物信息.角色防御值, 550, 110, xgCYAN
           DrawText "金币:" & 人物信息.角色持有的金币, 550, 140, xgYELLOW
           DrawText "经验值:" & 人物信息.角色的经验值, 550, 170, xgBLUE
           
           DrawText 勇者包裹.蓝钥匙数量, 550, 200, xgYELLOW
           DrawText 勇者包裹.黄钥匙数量, 650, 200, xgBLUE
           DrawText 勇者包裹.红钥匙数量, 750, 200, xgRED
           
           
                      
           If 勇者包裹.怪物手册数量 = True Then
           With 储存基本的物体图形数组(24) '怪物手册
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 220
        End With
            DrawText "按K键显示/关闭怪物数据!", 550, 225, xgWHITE
           
           End If
           
           If 勇者包裹.风之罗盘数量 = True Then
           With 储存基本的物体图形数组(46) '风之罗盘
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 260
            End With
            DrawText "按J键穿越楼层", 550, 265, xgWHITE
           
           End If
           
           
           
           If 勇者包裹.铁榔头数量 = True Then
           With 储存基本的物体图形数组(44) '铁锒头
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 300
        End With
           DrawText "找6层小偷挖出20层道路!", 550, 305, xgWHITE
        End If
           
           If 勇者包裹.幸运十字架数量 = True Then
           With 储存基本的物体图形数组(47) '幸运十字架
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 340
          End With
            DrawText "找1层小青增加能力!", 550, 345, xgWHITE
            '绘制22层楼梯
            
          If 谈话对象.NPC对话标志_小青 = 4 And 地图层号 = 22 Then
             Dim m() As String
             m = Split(地图数据(8), ",")
             m(6) = 8
             地图数据(8) = m(0) & "," & m(1) & "," & m(2) & "," & m(3) & "," & m(4) & "," & m(5) & "," & m(6) & "," & m(7) & "," & m(8) & "," & m(9) & "," & m(10) & "," & m(11) & "," & m(12)
             写临时地图数据 (0)
             DrawText "22层通道已经打开!", 550, 345, xgWHITE
             谈话对象.NPC对话标志_小青 = 5
               Erase m()
           End If
           End If
           
           If 勇者包裹.圣光徽的数量 > 0 Then
           With 储存基本的物体图形数组(49) '圣光徽
            '.SetDisplayRect 0, 0, 128, 64
           ' .SetScale 0.4, 0.4
            .Cell = 1
            .DrawGraph 500, 380
        End With
           DrawText "收集了:" & 勇者包裹.圣光徽的数量 & "枚圣光徽!", 550, 385, xgWHITE
           End If
           
           
          
           
          ' 背景Draw
          
          
           
           
           With 储存按钮的图形数组(17) '地图编辑器
            '.SetDisplayRect 0, 0, 128, 64
            .SetScale 0.3, 0.3
            .Cell = 1
            .DrawGraph 450, 400
        End With
'        With 储存按钮的图形数组(15) '退出游戏
'            '.SetDisplayRect 0, 0, 128, 64
'            .SetScale 0.4, 0.4
'            .Cell = 1
'            .DrawGraph 580, 450
'        End With
        With 储存按钮的图形数组(16) '返回游戏主界面
            '.SetDisplayRect 0, 0, 128, 64
            .SetScale 0.3, 0.3
            .Cell = 1
            .DrawGraph 450, 430
           End With
        
          背景_动态Draw
          
          '男主角移动
         游戏界面鼠标点击判断
         男主角移动及方向处理
         游戏时主角显示处理
          DrawText 提示信息, 50, 500, xgRED '- 2
          
          
          
          
          
          DrawText "地图:第" & 地图层号 & "层", 150, 10, xgCYAN '- 2
          DrawText "X坐标:" & 地图XY坐标.mapX坐标(男主角移动.x / 32) & "  Y坐标:" & 地图XY坐标.mapY坐标(男主角移动.y / 32), 100, 390, xgCYAN
          
          If 开启关闭显示怪物信息 = 1 Then
          
         显示怪物信息
         
         End If
           If 自动寻路成功标志 = True And 划线计数器 > 0 Then

         For i = 0 To PathLength - 1 'To 0 Step -1   '
         DrawLine AStarPath(i).x * 32, AStarPath(i).y * 32, AStarPath(i).x * 32 + 32, AStarPath(i).y * 32 + 32, xgGREEN
  ' DrawRectFill AStarPath(i).x * 32, AStarPath(i).y * 32, AStarPath(i).x * 32 + 32, AStarPath(i).y * 32 + 32, xgGREEN

         Next
自动移动处理 (划线计数器)
划线计数器 = 划线计数器 - 1: If 划线计数器 < 0 Then 划线计数器 = 0
         End If