魔塔之拯救白娘子 完整工程下载地址: 二、游戏开始后的流程控制:当初始化完成后,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