魔塔之拯救白娘子 完整工程下载地址:
《魔塔之拯救白娘子》流程分析4:物体碰撞检测
处理方式分2步,第一步是游戏时主角显示处理:当主角移动时需要擦除上一个坐标位的主角,然后在新位置上放置主角,但是呢,如果碰到相应的道具、物品、敌人将触发第二步:物体碰撞检测

①游戏时主角显示处理:

Sub 游戏时主角显示处理()Dim j As IntegerDim m() As StringDim k As IntegerDim i As Integer'男主角移动.X坐标, 男主角移动.Y坐标'           0  1  2  3  4   5   6   7   8   9  10   11 12
'            0,32,64,96,128,160,192,224,256,288,320,352,384
'地图数据(1)=0,3, 5, 5, 5,  3,  8,  3,  5,  5,  5,  3,  0'移动方向
'         2 上
'       1左 0  右3
'          下4
'主角地图上每层初始坐标.X1 = 地图XY坐标.mapX坐标(10)
'主角地图上每层初始坐标.Y1 = 地图XY坐标.mapY坐标(6)'主角移动及判断If 男主角移动.移动方向 = 0 Then Exit Sub
If 男主角移动.移动速度 < 4 Then Exit Sub地图编辑器界面_临时地图标志 = True
'①获得主角当前,上下左右的图形'获得当前j = 男主角移动.x / 32k = 男主角移动.y / 32男主角移动.x行 = j男主角移动.y列 = k
' If k < 1 Then k = 1
' If k > 11 Then k = 11地图数据串.主角所在行 = Split(地图数据(j), ",")地图数据串.主角所在列 = k地图数据串.主角所在行列数据 = 地图数据串.主角所在行(地图数据串.主角所在列)'②移动判断及杀怪处理Select Case 男主角移动.移动方向Case 1 '←k = k - 1If k < 1 Then k = 1'获得左方地图数据串.主角左方_行 = Split(地图数据(j), ",")地图数据串.主角左方_列 = k地图数据串.主角左方行列数据 = 地图数据串.主角左方_行(地图数据串.主角左方_列)物体碰撞检测 (地图数据串.主角左方行列数据)If 通过标志 = True Then地图数据串.主角左方_行(地图数据串.主角左方_列) = 14m = Split(地图数据(j), ",")m(k) = 地图数据串.主角左方_行(地图数据串.主角左方_列)地图数据(j) = 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)End IfCase 2 '↑j = j - 1If j < 1 Then j = 1移动方向中待处理的行列.待处理的行 = j移动方向中待处理的行列.待处理的列 = k'获得上方地图数据串.主角上方_行 = Split(地图数据(j), ",")地图数据串.主角上方_列 = k地图数据串.主角上方行列数据 = 地图数据串.主角上方_行(地图数据串.主角上方_列)物体碰撞检测 (地图数据串.主角上方行列数据)If 通过标志 = True Then'通过则上移,清除原先的图块地图数据串.主角上方_行(地图数据串.主角上方_列) = 14m = Split(地图数据(j), ",")m(k) = 地图数据串.主角上方_行(地图数据串.主角上方_列)地图数据(j) = 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)End IfCase 3 '→k = k + 1: If k > 11 Then k = 11'获得右方地图数据串.主角右方_行 = Split(地图数据(j), ",")地图数据串.主角右方_列 = k地图数据串.主角右方行列数据 = 地图数据串.主角右方_行(地图数据串.主角右方_列)物体碰撞检测 (地图数据串.主角右方行列数据)If 通过标志 = True Then地图数据串.主角右方_行(地图数据串.主角右方_列) = 14m = Split(地图数据(j), ",")m(k) = 地图数据串.主角右方_行(地图数据串.主角右方_列)地图数据(j) = 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)End IfCase 4 '↓j = j + 1If j > 11 Then j = 11'获得下方地图数据串.主角下方_行 = Split(地图数据(j), ",")地图数据串.主角下方_列 = k地图数据串.主角下方行列数据 = 地图数据串.主角下方_行(地图数据串.主角下方_列)物体碰撞检测 (地图数据串.主角下方行列数据)If 通过标志 = True Then地图数据串.主角下方_行(地图数据串.主角下方_列) = 14m = Split(地图数据(j), ",")m(k) = 地图数据串.主角下方_行(地图数据串.主角下方_列)地图数据(j) = 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)End IfEnd Select'③将主角移动到新位置,并抹去原先位置上的图形If 通过标志 = True Then男主角移动.x = 地图XY坐标.mapX坐标(j)男主角移动.y = 地图XY坐标.mapY坐标(k)End If
'显示临时地图
'背景_动态Draw
End Sub

②物体碰撞检测:源码如下

Sub 物体碰撞检测(碰到的图块编号 As Integer)
'物体碰撞检测
'地图数据串.主角上方行列数据
Dim m() As StringSelect Case 碰到的图块编号
Case 1 '基本图块,可以通过
通过标志 = True
提示信息 = ""
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\走路.wav")播放音效.PlayWav myDSBuff(0), False
Case 0, 2, 3, 4, 5, 7 '不能通过通过标志 = False
提示信息 = "这个方向不能通过!"Case 6 '黄色门:用黄钥匙开启If 勇者包裹.黄钥匙数量 > 0 Then
勇者包裹.黄钥匙数量 = 勇者包裹.黄钥匙数量 - 1
通过标志 = TrueSet myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\打开房间木门.wav")播放音效.PlayWav myDSBuff(0), False
Else通过标志 = False提示信息 = "需要黄钥匙开门!"
End IfCase 8 '上楼处理:
'地图层号从2开始,地图上一层从1开始
通过标志 = False
'①上楼先保存本层的各种物品状态到临时文件中
If 地图层号 < 99 Then
If 游戏进度.地图当前层号 + 1 <> 地图层号 + 1 Then
地图层号 = 游戏进度.地图当前层号
End If
清除地图上多余的主角写临时地图数据 (地图层号) '保存当前地图状况到临时文件里
'②自动帮玩家存档
游戏存档 地图层号, False
'③增加地图数量If 地图层号 = 24 And 男主角移动.x / 32 = 6 ThenIf 男主角移动.y / 32 = 2 Then   '24层在左边上楼地图层号 = 25ElseIf 男主角移动.y / 32 = 10 Then  '24层在右边上楼地图层号 = 26End If
End If
End If
If 地图层号 = 25 And 男主角移动.x / 32 = 8 And 男主角移动.y / 32 = 6 ThenIf 勇者包裹.圣光徽的数量 < 3 Then提示信息 = "需要3枚圣光徽,才能跟最终BOSS决斗!"地图层号 = 24Else地图层号 = 27End If
End If
地图层号 = 地图层号 + 1 ': 游戏中读取地图层次判断
游戏进度.上楼处理标志(地图层号) = True
'游戏进度.读系统档(地图层号) = True
游戏进度.到过的最大层号 = 地图层号End If
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\上楼下楼.wav")播放音效.PlayWav myDSBuff(0), False
背景音乐选择Case 9 '下楼处理
通过标志 = FalseIf 地图层号 < 99 Then
If 游戏进度.地图当前层号 - 1 <> 地图层号 - 1 Then
地图层号 = 游戏进度.地图当前层号
End If
清除地图上多余的主角
写临时地图数据 (地图层号) '保存当前地图状况到临时文件里
'②自动帮玩家存档
游戏存档 地图层号, False'③增加地图数量
If 地图层号 = 26 Then   '24层在左边上楼地图层号 = 25End IfIf 地图层号 = 27 Then  '24层在右边上楼地图层号 = 25End If地图层号 = 地图层号 - 1 ': 游戏中读取地图层次判断If 地图层号 = 1 Then 地图层号 = 2游戏进度.下楼处理标志(地图层号) = True
'游戏进度.读系统档(地图层号) = TrueEnd If
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\上楼下楼.wav")播放音效.PlayWav myDSBuff(0), False
背景音乐选择
Case 10 '蓝色门
If 勇者包裹.蓝钥匙数量 > 0 Then
勇者包裹.蓝钥匙数量 = 勇者包裹.蓝钥匙数量 - 1
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\打开房间木门.wav")播放音效.PlayWav myDSBuff(0), False
Else通过标志 = False提示信息 = "需要蓝钥匙开门!"
End IfCase 11 '红色门:用红钥匙开启
If 勇者包裹.红钥匙数量 > 0 Then
勇者包裹.红钥匙数量 = 勇者包裹.红钥匙数量 - 1
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\打开房间木门.wav")播放音效.PlayWav myDSBuff(0), False
Else通过标志 = False提示信息 = "需要红钥匙开门!"
End IfCase 12 '防盗门:只能由小偷开启
If 谈话对象.NPC对话标志_小偷 = 1 Then通过标志 = TrueElse通过标志 = False提示信息 = "此门只能由小偷开启!"End IfCase 13 '铁门:可以破坏通过标志 = True提示信息 = "铁门的锁被你用刀砍断了!"Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\金属敲击-短小.wav")播放音效.PlayWav myDSBuff(0), False
Case 15 '白娘子对话'谈话对象.NPC对话标志_白娘子=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_白娘子 = 0 And 对话窗口显示标志 = False Then
谈话对象.NPC对话标志_白娘子 = 1: 对话窗口显示标志 = True
对话文件名编号 = 5
Form_对话.Show'如果就显示上行楼梯'   If 地图层号 = 20 Then  'm = Split(地图数据(11), ",")'顺手修改地图'上楼m(11) = 8地图数据(11) = 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)'       End If
End IfIf 谈话对象.NPC对话标志_白娘子 = 1 And 对话窗口显示标志 = False ThenIf Winner = False Then '闯关成功后的演出对话窗口显示标志 = True对话文件名编号 = 15Form_对话.Show
Else
对话窗口显示标志 = True对话文件名编号 = 20Form_对话.Showm = Split(地图数据(7), ",")'顺手修改地图'上楼m(6) = 16地图数据(7) = 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)End IfEnd If提示信息 = "~~~正在与白娘子对话~~~"Case 16 '小青,对话'谈话对象.NPC对话标志_小青=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_小青 = 0 And 对话窗口显示标志 = False Then
谈话对象.NPC对话标志_小青 = 1: 对话窗口显示标志 = True
对话文件名编号 = 1
Form_对话.Show'第一次对话结束后,得到黄红蓝钥匙各2把
勇者包裹.红钥匙数量 = 1
勇者包裹.黄钥匙数量 = 1
勇者包裹.蓝钥匙数量 = 1'小仙女闪人'End If
'If 谈话对象.NPC对话标志_小青 = 1 And 对话窗口显示标志 = False Thenm = Split(地图数据(9), ",")m(5) = 16地图数据(9) = 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)小青的移动.移动方向 = 3
通过标志 = True
谈话对象.NPC对话标志_小青 = 2
End IfIf 谈话对象.NPC对话标志_小青 = 2 And 对话窗口显示标志 = False Then对话窗口显示标志 = True对话文件名编号 = 14Form_对话.Show
End IfIf 谈话对象.NPC对话标志_小青 = 3 And 对话窗口显示标志 = False And 勇者包裹.幸运十字架数量 = True Then
'得到十字架后的处理If 勇者包裹.幸运十字架数量 = True Then对话文件名编号 = 3: 对话窗口显示标志 = True: Form_对话.Show人物信息.角色生命值 = 人物信息.角色生命值 + Int(人物信息.角色生命值 / 3)人物信息.角色攻击力 = 人物信息.角色攻击力 + Int(人物信息.角色攻击力 / 3)人物信息.角色防御值 = 人物信息.角色防御值 + Int(人物信息.角色防御值 / 3)'显示22层的上行电梯'小青消失谈话对象.NPC对话标志_小青 = 4m = Split(地图数据(9), ",")m(5) = 1地图数据(9) = 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)小青的移动.移动方向 = 3
通过标志 = TrueEnd IfEnd IfIf 谈话对象.NPC对话标志_小青 > 3 And 对话窗口显示标志 = False And 地图层号 = 24 Then对话文件名编号 = 17: 对话窗口显示标志 = True: Form_对话.Show谈话对象.NPC对话标志_小青 = 5End If提示信息 = "~~~正在与小青对话~~~"Case 17 '小偷对话'谈话对象.NPC对话标志_小偷=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_小偷 = 0 And 对话窗口显示标志 = False Then
谈话对象.NPC对话标志_小偷 = 1: 对话窗口显示标志 = True
对话文件名编号 = 2
Form_对话.ShowEnd IfIf 谈话对象.NPC对话标志_小偷 = 1 And 对话窗口显示标志 = False Then对话窗口显示标志 = True对话文件名编号 = 13Form_对话.ShowEnd IfIf 谈话对象.NPC对话标志_小偷 = 2 And 对话窗口显示标志 = False And 勇者包裹.铁榔头数量 = True Then
'将十八层路面修复谈话对象.NPC对话标志_小偷 = 3对话窗口显示标志 = True对话文件名编号 = 4Form_对话.Show'小偷消失m = Split(地图数据(1), ",")m(6) = 1地图数据(1) = 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)End If提示信息 = "~~~正在与小偷对话~~~"Case 18 '老人1:可以提升等级和体能等
通过标志 = False
If 谈话对象.NPC对话标志_老人 = 0 And 地图层号 = 4 Then  '首次对话NPC谈话对象.NPC对话标志_老人 = 1: 对话窗口显示标志 = True
对话文件名编号 = 6
Form_对话.Show
'送装备钢剑一把
人物信息.角色攻击力 = 人物信息.角色攻击力 + 30
提示信息 = "得到钢剑,攻击力+30点!"
End IfIf 谈话对象.NPC对话标志_老人 = 1 And 地图层号 = 17 Then '17层对话的话,就用经验换攻击力NPC谈话对象.NPC对话标志_老人 = 2: 对话窗口显示标志 = TrueIf 人物信息.角色的经验值 > 499 Then对话文件名编号 = 8
Form_对话.Show
'经验换攻击人物信息.角色的经验值 = 人物信息.角色的经验值 - 500
人物信息.角色攻击力 = 人物信息.角色攻击力 + 120
提示信息 = "使用经验值兑换了120点攻击力!"
'老人消失m = Split(地图数据(4), ",")m(5) = 1地图数据(4) = 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)Else
对话文件名编号 = 10
Form_对话.ShowEnd IfEnd IfIf 对话窗口显示标志 = False ThenIf 地图层号 = 4 Then商店对话ID = 2 '5层老人Else商店对话ID = 1 '12层老人End If商店对话窗口显示标志 = TrueForm_商店.Show
End If
提示信息 = "~~~正在与神秘老人对话~~~"Case 19 '商人:可以购买钥匙等
通过标志 = False
If 谈话对象.NPC对话标志_商人 = 0 And 地图层号 = 4 Then '首次对话谈话对象.NPC对话标志_商人 = 1: 对话窗口显示标志 = True
对话文件名编号 = 7
Form_对话.Show
'送装备钢剑一把
人物信息.角色防御值 = 人物信息.角色防御值 + 30
提示信息 = "得到钢盾,防御力+30点!"
End IfIf 谈话对象.NPC对话标志_商人 = 1 And 地图层号 = 17 Then '首次对话谈话对象.NPC对话标志_商人 = 2: 对话窗口显示标志 = TrueIf 人物信息.角色持有的金币 > 499 Then对话文件名编号 = 9
Form_对话.Show
'金币换防御
人物信息.角色持有的金币 = 人物信息.角色持有的金币 - 500
人物信息.角色防御值 = 人物信息.角色防御值 + 190
提示信息 = "得到光芒神盾,防御力+190点!"
'这个NPC要消失掉m = Split(地图数据(4), ",")m(7) = 1地图数据(4) = 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)Else
对话文件名编号 = 11
Form_对话.ShowEnd IfEnd IfIf 对话窗口显示标志 = False ThenIf 地图层号 = 4 Then商店对话ID = 4 '5层商人Else商店对话ID = 5 '12层商人End If商店对话窗口显示标志 = True
Form_商店.ShowEnd If
提示信息 = "~~~正在与神秘商人对话~~~"Case 20, 21, 22 '商店
通过标志 = False
If 地图层号 = 5 Then商店对话ID = 0 '3层商店Else商店对话ID = 3 '13层商店End If商店对话窗口显示标志 = True
Form_商店.Show
Case 24 '怪物手册:得到怪物的属性信息
勇者包裹.怪物手册数量 = True提示信息 = "你得到了怪物手册,现在你可以自由查看怪物信息了!"
通过标志 = TrueCase 25 '铸铁门:不可以破坏提示信息 = "此门是铸铁门:不可以破坏!请绕路而行"
通过标志 = FalseCase 30 '红宝石:攻击力+3通过标志 = True
人物信息.角色攻击力 = 人物信息.角色攻击力 + 5提示信息 = "角色的攻击力增加了5点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\宝石.wav")播放音效.PlayWav myDSBuff(0), False
Case 31 '蓝宝石:防御力+3通过标志 = True人物信息.角色防御值 = 人物信息.角色防御值 + 5提示信息 = "角色防御值增加了5点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\宝石1.wav")播放音效.PlayWav myDSBuff(0), False
Case 32 '绿宝石:经验+30通过标志 = True人物信息.角色的经验值 = 人物信息.角色的经验值 + 30提示信息 = "角色的经验值增加了30点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\宝石.wav")播放音效.PlayWav myDSBuff(0), False
Case 33 '红血瓶:生命+200通过标志 = True人物信息.角色生命值 = 人物信息.角色生命值 + 300提示信息 = "角色生命值增加了300点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\喝药.wav")播放音效.PlayWav myDSBuff(0), False
Case 34 '蓝血瓶:生命+500通过标志 = True人物信息.角色生命值 = 人物信息.角色生命值 + 600提示信息 = "角色生命值增加了600点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\喝药.wav")播放音效.PlayWav myDSBuff(0), False
Case 35 '绿血瓶:生命+1000通过标志 = True人物信息.角色生命值 = 人物信息.角色生命值 + 1000提示信息 = "角色生命值增加了1000点!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\喝药.wav")播放音效.PlayWav myDSBuff(0), False
Case 36 '圣水瓶:生命加倍通过标志 = True人物信息.角色生命值 = 人物信息.角色生命值 * 2提示信息 = "角色生命值翻倍增加了!"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\喝药.wav")播放音效.PlayWav myDSBuff(0), False
Case 37 '小钥匙盒:所有钥匙+1通过标志 = True勇者包裹.红钥匙数量 = 勇者包裹.红钥匙数量 + 2勇者包裹.黄钥匙数量 = 勇者包裹.黄钥匙数量 + 2勇者包裹.蓝钥匙数量 = 勇者包裹.蓝钥匙数量 + 2提示信息 = "所有钥匙的数量都增加了2把"Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\T3钥匙.wav")播放音效.PlayWav myDSBuff(0), False
Case 38 '大钥匙盒:所有钥匙+3通过标志 = True勇者包裹.红钥匙数量 = 勇者包裹.红钥匙数量 + 5勇者包裹.黄钥匙数量 = 勇者包裹.黄钥匙数量 + 5勇者包裹.蓝钥匙数量 = 勇者包裹.蓝钥匙数量 + 5提示信息 = "所有钥匙的数量都增加了5把"
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\T3钥匙.wav")播放音效.PlayWav myDSBuff(0), False
Case 39 '黄钥匙
勇者包裹.黄钥匙数量 = 勇者包裹.黄钥匙数量 + 1
提示信息 = "得到一把黄钥匙!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\T3钥匙.wav")播放音效.PlayWav myDSBuff(0), False
Case 40 '蓝钥匙
勇者包裹.蓝钥匙数量 = 勇者包裹.蓝钥匙数量 + 1
提示信息 = "得到一把蓝钥匙!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\T3钥匙.wav")播放音效.PlayWav myDSBuff(0), False
Case 41 '红钥匙
勇者包裹.红钥匙数量 = 勇者包裹.红钥匙数量 + 1
提示信息 = "得到一把红钥匙!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\T3钥匙.wav")播放音效.PlayWav myDSBuff(0), False
Case 42 '小飞羽:等级+1人物信息.角色等级 = 人物信息.角色等级 + 5
人物信息.角色生命值 = 人物信息.角色生命值 + 5000
人物信息.角色攻击力 = 人物信息.角色攻击力 + 50
人物信息.角色防御值 = 人物信息.角色防御值 + 50
人物信息.角色持有的金币 = 人物信息.角色持有的金币 + 人物信息.角色持有的金币 + 50
人物信息.角色的经验值 = 人物信息.角色的经验值 + 500
提示信息 = "恭喜:升了5级!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\升级.wav")播放音效.PlayWav myDSBuff(0), False
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
If 人物信息.角色生命值 < 1 Then 人物信息.角色生命值 = 1
If 人物信息.角色生命值 > 2 ^ 62 - 1 Then 人物信息.角色生命值 = 2 ^ 62 - 1
Case 43 '大飞羽:等级+3
人物信息.角色等级 = 人物信息.角色等级 + 10
人物信息.角色生命值 = 人物信息.角色生命值 + 10000
人物信息.角色攻击力 = 人物信息.角色攻击力 + 500
人物信息.角色防御值 = 人物信息.角色防御值 + 500
人物信息.角色持有的金币 = 人物信息.角色持有的金币 + 人物信息.角色持有的金币 + 500
人物信息.角色的经验值 = 人物信息.角色的经验值 + 5000
提示信息 = "恭喜:升了10级!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\升级.wav")播放音效.PlayWav myDSBuff(0), False
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
If 人物信息.角色生命值 < 1 Then 人物信息.角色生命值 = 1
If 人物信息.角色生命值 > 2 ^ 62 - 1 Then 人物信息.角色生命值 = 2 ^ 62 - 1Case 44 '铁锒头:开挖20层隐含路面
勇者包裹.铁榔头数量 = True
谈话对象.NPC对话标志_小偷 = 2
提示信息 = "你得到了铁榔头,赶紧交给小偷,开启20楼的隐藏路面!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\鼓.wav")播放音效.PlayWav myDSBuff(0), False
Case 45 '星光神锒:开隐藏地面
勇者包裹.星光神锒数量 = True提示信息 = "你得到了星光神锒,打开了机关,可以跟公主交谈了!"
通过标志 = TrueSet myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\鼓.wav")播放音效.PlayWav myDSBuff(0), False
Case 46 '风之罗盘:自由穿越已走过的楼层
勇者包裹.风之罗盘数量 = True提示信息 = "你得到了风之罗盘,现在你可以自由穿越已走过的楼层!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\风.wav")播放音效.PlayWav myDSBuff(0), FalseCase 47 '幸运十字架:提升所有能力提示信息 = "你得到了幸运十字架,赶快拿给小青!"
通过标志 = True
勇者包裹.幸运十字架数量 = True
谈话对象.NPC对话标志_小青 = 3
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\幸运十字架.wav")播放音效.PlayWav myDSBuff(0), FalseCase 48 '金盘:金币+300提示信息 = "恭喜:你得到了金盘,金币增加了300哦!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\金币.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色持有的金币 = 人物信息.角色持有的金币 + 300Case 49 '圣光徽提示信息 = "恭喜:你得到了圣光徽!英雄的生命、力量、防御各提升了500点!"
勇者包裹.圣光徽的数量 = 勇者包裹.圣光徽的数量 + 1
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\圣光徽.wav")播放音效.PlayWav myDSBuff(0), False人物信息.角色攻击力 = 人物信息.角色攻击力 + 500
人物信息.角色防御值 = 人物信息.角色防御值 + 500
人物信息.角色生命值 = 人物信息.角色生命值 + 500
通过标志 = True
If 勇者包裹.圣光徽的数量 > 3 Then 勇者包裹.圣光徽的数量 = 3
If 勇者包裹.圣光徽的数量 < 0 Then 勇者包裹.圣光徽的数量 = 0
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
If 人物信息.角色生命值 < 1 Then 人物信息.角色生命值 = 1
If 人物信息.角色生命值 > 2 ^ 62 - 1 Then 人物信息.角色生命值 = 2 ^ 62 - 1
Case 50 '铁剑:攻击力+10提示信息 = "你得到了铁剑,攻击力增加了10点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\刀剑.wav")播放音效.PlayWav myDSBuff(0), False人物信息.角色攻击力 = 人物信息.角色攻击力 + 10
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
Case 51 '钢剑:攻击力+30提示信息 = "你得到了钢剑,攻击力增加了30点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\刀剑.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色攻击力 = 人物信息.角色攻击力 + 30
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
Case 52 '青锋剑:攻击力+70提示信息 = "你得到了青锋剑,攻击力增加了70点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\刀剑.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色攻击力 = 人物信息.角色攻击力 + 70
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
Case 53 '星光神剑:攻击力+150提示信息 = "你得到了星光神剑,攻击力增加了150点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\刀剑.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色攻击力 = 人物信息.角色攻击力 + 150
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
Case 54 '铁盾:防御力+10提示信息 = "你得到了铁盾,防御力增加了10点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\铠甲.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色防御值 = 人物信息.角色防御值 + 10
If 人物信息.角色攻击力 < 1 Then 人物信息.角色攻击力 = 1
If 人物信息.角色攻击力 > 2 ^ 62 - 1 Then 人物信息.角色攻击力 = 2 ^ 62 - 1
Case 55 '钢盾:防御力+30提示信息 = "你得到了钢盾,防御力增加了30点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\铠甲.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色防御值 = 人物信息.角色防御值 + 30
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
Case 56 '黄金盾:防御力+80提示信息 = "你得到了黄金盾,防御力增加了80点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\铠甲.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色防御值 = 人物信息.角色防御值 + 80
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
Case 57 '光芒神盾:防御力+190提示信息 = "你得到了黄金盾,防御力增加了190点!"
通过标志 = True
Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\铠甲.wav")播放音效.PlayWav myDSBuff(0), False
人物信息.角色防御值 = 人物信息.角色防御值 + 190
If 人物信息.角色防御值 < 1 Then 人物信息.角色防御值 = 1
If 人物信息.角色防御值 > 2 ^ 62 - 1 Then 人物信息.角色防御值 = 2 ^ 62 - 1
'特殊的怪要对话
Case 109 '红衣魔王'谈话对象.NPC对话标志_红衣魔王=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_红衣魔王 = 0 Then
谈话对象.NPC对话标志_红衣魔王 = 1: 对话窗口显示标志 = True
对话文件名编号 = 12
Form_对话.ShowEnd IfIf 谈话对象.NPC对话标志_红衣魔王 = 1 And 对话窗口显示标志 = False Then''显示战斗画面战斗处理 (碰到的图块编号)
If 战斗胜利标志 = False Then提示信息 = "怪物太强,你打不过!"Else通过标志 = True: Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\怪2.wav")播放音效.PlayWav myDSBuff(0), FalseEnd IfEnd If
'特殊的怪要对话
Case 110 '红衣大魔王'谈话对象.NPC对话标志_红衣大魔王=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_红衣大魔王 = 0 Then
谈话对象.NPC对话标志_红衣大魔王 = 1: 对话窗口显示标志 = True
对话文件名编号 = 16
Form_对话.ShowEnd IfIf 谈话对象.NPC对话标志_红衣大魔王 = 1 And 对话窗口显示标志 = False Then''显示战斗画面战斗处理 (碰到的图块编号)
If 战斗胜利标志 = False Then提示信息 = "怪物太强,你打不过!"Else通过标志 = True: Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\怪3.wav")播放音效.PlayWav myDSBuff(0), FalseEnd IfEnd If
'特殊的怪要对话
Case 111 '冥灵魔王'谈话对象.NPC对话标志_冥灵魔王=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_冥灵魔王 = 0 And 对话窗口显示标志 = False And 地图层号 = 28 Then
谈话对象.NPC对话标志_冥灵魔王 = 1: 对话窗口显示标志 = True
对话文件名编号 = 18
Form_对话.Show
'谈话对象.NPC对话标志_冥灵魔王 = 0
End IfIf 谈话对象.NPC对话标志_冥灵魔王 = 1 And 对话窗口显示标志 = False Then
''显示战斗画面战斗处理 (碰到的图块编号)
If 战斗胜利标志 = False Then提示信息 = "怪物太强,你打不过!"Else通过标志 = True: 谈话对象.NPC对话标志_冥灵魔王 = 0Set myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\怪4.wav")播放音效.PlayWav myDSBuff(0), FalseEnd IfEnd If
'特殊的怪要对话
Case 113 '血影'谈话对象.血影=1 第一次场景对话,以此类推
通过标志 = False
If 谈话对象.NPC对话标志_血影 = 0 And 对话窗口显示标志 = False Then
谈话对象.NPC对话标志_血影 = 1: 对话窗口显示标志 = True
对话文件名编号 = 19
Form_对话.Show
'谈话对象.血影 = 0
End IfIf 谈话对象.NPC对话标志_血影 = 1 And 对话窗口显示标志 = False Then
''显示战斗画面战斗处理 (碰到的图块编号)
If 战斗胜利标志 = False Then提示信息 = "怪物太强,你打不过!"Else通过标志 = True: 谈话对象.NPC对话标志_血影 = 0: Winner = TrueSet myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\怪5.wav")播放音效.PlayWav myDSBuff(0), FalseEnd IfEnd IfCase 14
通过标志 = TrueCase Else通过标志 = False战斗胜利标志 = False战斗处理 (碰到的图块编号)If 战斗胜利标志 = False Then提示信息 = "怪物太强,你打不过!"End IfSet myDSBuff(0) = 播放音效.LoadWav(App.Path & "\sound\怪1.wav")播放音效.PlayWav myDSBuff(0), FalseEnd SelectIf 通过标志 = True Then
'  主角消失地图数据串.主角所在行(地图数据串.主角所在列) = 1m = Split(地图数据(男主角移动.x行), ",")m(男主角移动.y列) = 地图数据串.主角所在行(地图数据串.主角所在列)地图数据(男主角移动.x行) = 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)End If男主角移动.移动速度 = 0End Sub

魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~18开始游戏-物体碰撞检测相关推荐

  1. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~20开始游戏-对话处理

    魔塔之拯救白娘子 完整工程下载地址: <魔塔之拯救白娘子>流程分析6:对话处理 游戏的对话处理比较简单,仅仅是根据游戏流程提供简单的对话系统,没有涉及复杂的东西.下边是设计的窗体: Opt ...

  2. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~24开始游戏-屏幕截图

    魔塔之拯救白娘子 完整工程下载地址: 魔塔之拯救白娘子>流程分析8:屏幕截图和通用申明 有网友问我主窗口设计界面是什么样子?下图就是:frmMain.frm 设计界面非常清爽,只有一个tiemr ...

  3. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~16开始游戏-自动寻路(A星算法)

    魔塔之拯救白娘子 完整工程下载地址: <魔塔之拯救白娘子>流程分析2: ⑤游戏界面鼠标点击判断以及自动寻路: 自动寻路的效果如下: 源码如下: Sub 游戏界面鼠标点击判断() Dim m ...

  4. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~13开始游戏-初始化

    魔塔之拯救白娘子 完整工程下载地址: 上几节介绍了地图编辑器编写情况,现在开始介绍<魔塔之拯救白娘子>开始游戏后的处理. 游戏开始后的流程处理如下: 一.初始化: 当running=1的时 ...

  5. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~14开始游戏-流程处理

    魔塔之拯救白娘子 完整工程下载地址: 二.游戏开始后的流程控制:当初始化完成后,timerDraw.Enabled = True 开始进行流程控制.下边的代码就是控制内容. 初始化→根据 主角所在的楼 ...

  6. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~23开始游戏-存档管理

    魔塔之拯救白娘子 完整工程下载地址: 魔塔之拯救白娘子>流程分析7:游戏存档管理 作用如下: ①自动存档,当上楼或者下楼的时候,会自动帮玩家存档并截图(吼吼,游戏次数长了,存档容量可是几百M哦, ...

  7. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~15开始游戏-地图层次判断

    魔塔之拯救白娘子 完整工程下载地址: <魔塔之拯救白娘子>流程分析: 初始化→根据 主角所在的楼层判断主角的位置并绘制主角→显示主角的基本信息(生命值.体力值.金币.经验值等等)→游戏界面 ...

  8. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~19开始游戏-战斗处理

    魔塔之拯救白娘子 完整工程下载地址: <魔塔之拯救白娘子>流程分析5:战斗处理 这个游戏的战斗系统比较简单,就是对比双方的数据,打的过就显示打斗过程,打不过就提示"打不过&quo ...

  9. 魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~21开始游戏-商店NPC

    魔塔之拯救白娘子 完整工程下载地址: <魔塔之拯救白娘子>流程分析6:-商店NPC 设计界面: 子窗口代码: Option ExplicitDim 商店对话选择编号 As IntegerP ...

最新文章

  1. SQLite管理工具绿色
  2. FragmentTabHost中子项Fragment加载题
  3. SAP MM 物料主数据里的‘Packaging Material Type‘字段
  4. go中NOSQL数据库操作
  5. 毕业设计-课程设计-Spring+SpringMVC+Mybatis项目—企业权限管理系统(1)
  6. 尝试使用Bouml创建用例图
  7. 线上每课时20元 北京上海义务教育阶段学科类校外培训指导价公布
  8. vscode+sftp 开发模式环境的同步
  9. Tomcat创建HTTPS访问,java访问https
  10. 关于印发厦门市创建创业型城市政策支持体系的通知
  11. 利用python将Mooc缓存转换为视频文件
  12. swustoj堆排序算法(1015)
  13. MySQL 案例实战--MySQL数据库主从复制
  14. xlwings 安装及排错: DLL load failed while importing win32api
  15. 智能名片小程序创建名片页功能实现关键代码
  16. java word模板 变量,java导出word模板
  17. 磨耳朵鼻祖Super Simple Songs下载之《Rain Rain Go Away》
  18. 关于WM_COMMAND与WM_NOTIFY
  19. Android转换位图BUG,知其然不知其所以然
  20. SpringBoot 接口数据加解密

热门文章

  1. 《大学之路》读书笔记
  2. 【敬伟ps教程】颜色和图案的填充
  3. ipad输入密码多次错误,被锁。如何恢复
  4. python作业6cqupt
  5. 区块链学习札记三: “链”是什么?
  6. 【CodingNoBorder - 01】无际软工队 - 求职岛:选题和需求分析
  7. 计算机工程与科学外审费,《计算机工程与设计》版面费问题 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  8. 说好一个创业故事的5个步骤
  9. 硕士研究生论文查重你所不知道的降重方法
  10. 计算机毕业设计源代码java项目开发实例ssm+mysql实现简单的物流快递管理系统[包运行成功]