魔塔之拯救白娘子 完整工程下载地址:
《魔塔之拯救白娘子》流程分析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