魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~18开始游戏-物体碰撞检测
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~18开始游戏-物体碰撞检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                魔塔之拯救白娘子 完整工程下載地址:
 《魔塔之拯救白娘子》流程分析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开始游戏-物体碰撞检测的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 学计算机的做近视眼手术,我做了近视眼手术
 - 下一篇: Windows7主题包