魔塔之拯救白娘子~我的第一個VB6+DX8做的小遊戲原始碼~21開始遊戲-商店NPC
阿新 • • 發佈:2021-02-03
魔塔之拯救白娘子 完整工程下載地址:
《魔塔之拯救白娘子》流程分析6:-商店NPC
設計介面:
子視窗程式碼:
Option Explicit
Dim 商店對話選擇編號 As Integer
Private Sub Command1_Click()
Unload Me
商店對話視窗顯示標誌 = False
End Sub
Private Sub Form_Load()
'獲得主視窗的座標
Me.Left = frmMain.Left + 1000
Me.Top = frmMain.Top + 3000
Dim rtn As Long
rtn = GetWindowLong(hWnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hWnd, 0, 150, LWA_ALPHA
'讓視窗在頂層
rtn = SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 3)
'取消視窗在頂層
'rtn = SetWindowPos(F_V.hwnd, -2, 0, 0, 0, 0, 3)
商店對話選擇編號 = 1
商店對話內容初始化
End Sub
Sub 商店對話內容初始化()
Select Case 商店對話ID
Case 0 '3層商店
Label_商店選擇(0) = "25個金幣可以任意選擇一項:"
Label_商店選擇(1) = "增加 800 點生命"
Label_商店選擇(2) = "增加 4 點攻擊"
Label_商店選擇(3) = "增加 4 點防禦"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\商店中.bmp")
Label1 = "商店:增強各種屬性!"
Case 1 '5層老人
Label_商店選擇(0) = "通過經驗值升級人物等級:"
Label_商店選擇(1) = "等級 +1(需要 100 點)"
Label_商店選擇(2) = "攻擊 +5(需要 30 點)"
Label_商店選擇(3) = "防禦 +5(需要 30 點)"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\老人.bmp")
Label1 = "神祕老人:增強各種屬性!"
Case 2 '5層商人
Label_商店選擇(0) = "使用金幣購買以下鑰匙:"
Label_商店選擇(1) = "一把黃鑰匙(10 金幣)"
Label_商店選擇(2) = "一把藍鑰匙(50 金幣)"
Label_商店選擇(3) = "一把紅鑰匙(100 金幣)"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\商人.bmp")
Label1 = "神祕商人:買賣各色鑰匙!"
Case 3 '11層商店j
Label_商店選擇(0) = "100個金幣可以任意選擇一項:"
Label_商店選擇(1) = "增加 4000 點生命"
Label_商店選擇(2) = "增加 20 點攻擊"
Label_商店選擇(3) = "增加 20 點防禦"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\商店中中.bmp")
Label1 = "商店:增強各種屬性!"
Case 4 '12層老人2
Label_商店選擇(0) = "賣出鑰匙換取金幣:"
Label_商店選擇(1) = "賣出一把黃鑰匙(7 金幣)"
Label_商店選擇(2) = "賣出一把藍鑰匙(35 金幣)"
Label_商店選擇(3) = "賣出一把紅鑰匙(70 金幣)"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\老人頭.bmp")
Label1 = "神祕老人:買賣各色鑰匙!"
Case 5 '13層商人2
Label_商店選擇(0) = "通過經驗值升級人物等級:"
Label_商店選擇(1) = "等級 +3 (需要 270 點)"
Label_商店選擇(2) = "攻擊 +20(需要 100 點)"
Label_商店選擇(3) = "防禦 +20(需要 100 點)"
Image_顯示商店NPC圖示.Picture = LoadPicture(App.Path & "\ico\商人2.bmp")
Label1 = "神祕商人:增強各種屬性!"
End Select
Label_商店選擇(4) = ""
End Sub
Private Sub Label_商店選擇_Click(Index As Integer)
Label_商店選擇(4) = ""
Select Case Index
Case 1 '選擇第1項
Select Case 商店對話ID
Case 0 '25個金幣增加 800 點生命
If 人物資訊.角色持有的金幣 > 24 Then
人物資訊.角色生命值 = 人物資訊.角色生命值 + 800
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 25
Label_商店選擇(4) = "生命值增加了800點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 1 '等級 +1(需要 100 點經驗值)
If 人物資訊.角色的經驗值 > 99 Then
人物資訊.角色等級 = 人物資訊.角色等級 + 1
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 5
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 5
人物資訊.角色生命值 = 人物資訊.角色生命值 + 1000
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 100
Label_商店選擇(4) = "等級增加了1級!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
Case 2 '金幣購買鑰匙 一把黃鑰匙(10 金幣)
If 人物資訊.角色持有的金幣 > 9 Then
勇者包裹.黃鑰匙數量 = 勇者包裹.黃鑰匙數量 + 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 10
Label_商店選擇(4) = "黃鑰匙增加了1把!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 3 '100個金幣增加 4000 點生命
If 人物資訊.角色持有的金幣 > 99 Then
人物資訊.角色生命值 = 人物資訊.角色生命值 + 4000
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 100
Label_商店選擇(4) = "生命值增加了4000點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 4 '賣出一把黃鑰匙(7 金幣
If 勇者包裹.黃鑰匙數量 > 0 Then
勇者包裹.黃鑰匙數量 = 勇者包裹.黃鑰匙數量 - 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 + 7
Label_商店選擇(4) = "金幣增加了7!"
Else
Label_商店選擇(4) = "黃鑰匙數量不夠!請先去打怪!"
End If
Case 5 '等級 +3 (需要 270 點經驗)
If 人物資訊.角色的經驗值 > 269 Then
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 270
人物資訊.角色等級 = 人物資訊.角色等級 + 1
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 15
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 15
人物資訊.角色生命值 = 人物資訊.角色生命值 + 3000
Label_商店選擇(4) = "等級增加了3級!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
End Select
Case 2 '選擇第2項
Select Case 商店對話ID
Case 0 '25個金幣增加 增加 4 點攻擊
If 人物資訊.角色持有的金幣 > 24 Then
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 4
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 25
Label_商店選擇(4) = "攻擊力增加了4點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 1 '攻擊 +5(需要 30點經驗值)
If 人物資訊.角色的經驗值 > 29 Then
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 5
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 30
Label_商店選擇(4) = "攻擊力增加了5點!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
Case 2 '金幣購買鑰匙 一把藍鑰匙(50 金幣
If 人物資訊.角色持有的金幣 > 49 Then
勇者包裹.藍鑰匙數量 = 勇者包裹.藍鑰匙數量 + 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 50
Label_商店選擇(4) = "藍鑰匙增加了1把!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 3 '100個金幣增加 增加 20 點攻擊
If 人物資訊.角色持有的金幣 > 99 Then
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 20
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 100
Label_商店選擇(4) = "攻擊力增加了20點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 4 '賣出一把藍鑰匙(35 金幣)
If 勇者包裹.藍鑰匙數量 > 0 Then
勇者包裹.藍鑰匙數量 = 勇者包裹.藍鑰匙數量 - 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 + 35
Label_商店選擇(4) = "金幣增加了35!"
Else
Label_商店選擇(4) = "藍鑰匙數量不夠!請先去打怪!"
End If
Case 5 '攻擊 +20(需要 100 點經驗
If 人物資訊.角色的經驗值 > 99 Then
人物資訊.角色攻擊力 = 人物資訊.角色攻擊力 + 20
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 100
Label_商店選擇(4) = "攻擊力增加了20點!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
End Select
Case 3 '選擇第3項
Select Case 商店對話ID
Case 0 '25個金幣增加 增加 4 點防禦
If 人物資訊.角色持有的金幣 > 24 Then
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 4
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 25
Label_商店選擇(4) = "防禦力增加了4點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 1 '防禦 +5(需要 30 點經驗值)
If 人物資訊.角色的經驗值 > 29 Then
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 5
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 30
Label_商店選擇(4) = "防禦力增加了5點!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
Case 2 '金幣購買鑰匙 一把紅鑰匙(100 金幣
If 人物資訊.角色持有的金幣 > 99 Then
勇者包裹.紅鑰匙數量 = 勇者包裹.紅鑰匙數量 + 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 100
Label_商店選擇(4) = "紅鑰匙增加了1把!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 3 '100個金幣增加 增加 20 點防禦
If 人物資訊.角色持有的金幣 > 99 Then
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 20
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 - 100
Label_商店選擇(4) = "防禦力增加了20點!"
Else
Label_商店選擇(4) = "金幣不夠!請先去賺錢!"
End If
Case 4 '賣出一把紅鑰匙(70 金幣
If 勇者包裹.紅鑰匙數量 > 0 Then
勇者包裹.紅鑰匙數量 = 勇者包裹.紅鑰匙數量 - 1
人物資訊.角色持有的金幣 = 人物資訊.角色持有的金幣 + 70
Label_商店選擇(4) = "金幣增加了70!"
Else
Label_商店選擇(4) = "紅鑰匙數量不夠!請先去打怪!"
End If
Case 5 '防禦 +20(需要 100點經驗
If 人物資訊.角色的經驗值 > 99 Then
人物資訊.角色防禦值 = 人物資訊.角色防禦值 + 20
人物資訊.角色的經驗值 = 人物資訊.角色的經驗值 - 100
Label_商店選擇(4) = "防禦力增加了20點!"
Else
Label_商店選擇(4) = "經驗值不夠!請先去殺怪!"
End If
End Select
'Case 4 '退出
'Me.Hide
'商店對話視窗顯示標誌 = False
End Select
End Sub
Private Sub Timer1_Timer()
If frmMain.WindowState = 1 Then
Me.Hide
Else
Me.Show
End If
If Me.Left - 1000 <> frmMain.Left Then Me.Left = frmMain.Left + 1000
If Me.Top - 3000 <> frmMain.Top Then Me.Top = frmMain.Top + 3000
End Sub